@rt-tools/ui-kit-v2 0.16.0 → 0.17.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.
Files changed (53) hide show
  1. package/README.md +7 -0
  2. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +96 -41
  3. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  4. package/fesm2022/rt-tools-ui-kit-v2.mjs +1106 -451
  5. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  6. package/package.json +1 -1
  7. package/rt-tools-ui-kit-v2-0.17.0.tgz +0 -0
  8. package/src/lib/components/action-bar/CONTEXT.md +5 -0
  9. package/src/lib/components/action-bar/rt-action-bar.component.scss +30 -16
  10. package/src/lib/components/aside/CONTEXT.md +9 -1
  11. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +7 -8
  12. package/src/lib/components/aside/header/rt-aside-header.component.scss +16 -1
  13. package/src/lib/components/aside/rt-aside.component.scss +17 -1
  14. package/src/lib/components/button/CONTEXT.md +12 -11
  15. package/src/lib/components/button/rt-button.directive.scss +36 -0
  16. package/src/lib/components/data-list/settings/rt-data-list-settings-aside.component.scss +2 -2
  17. package/src/lib/components/data-table/cell/rt-data-table-cell.component.scss +1 -1
  18. package/src/lib/components/data-table/filter-cell/rt-data-table-filter-cell.component.scss +1 -1
  19. package/src/lib/components/data-table/rt-data-table.component.scss +1 -1
  20. package/src/lib/components/dialog/CONTEXT.md +9 -0
  21. package/src/lib/components/dialog/content/rt-dialog-content.component.scss +20 -0
  22. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +18 -2
  23. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +21 -3
  24. package/src/lib/components/dialog/rt-dialog.component.scss +9 -3
  25. package/src/lib/components/dynamic-selector/CONTEXT.md +6 -0
  26. package/src/lib/components/header/CONTEXT.md +2 -2
  27. package/src/lib/components/icon/CONTEXT.md +11 -7
  28. package/src/lib/components/icon/rt-icon.component.scss +47 -0
  29. package/src/lib/components/icon-button/CONTEXT.md +27 -20
  30. package/src/lib/components/icon-button/rt-icon-button.component.scss +51 -25
  31. package/src/lib/components/image-upload/CONTEXT.md +20 -15
  32. package/src/lib/components/image-upload/rt-image-upload.component.scss +14 -2
  33. package/src/lib/components/pagination/rt-pagination.component.scss +1 -1
  34. package/src/lib/components/scroll-area/CONTEXT.md +2 -0
  35. package/src/lib/components/scroll-area/rt-scroll-area.component.scss +20 -3
  36. package/src/lib/components/side-menu/CONTEXT.md +7 -2
  37. package/src/lib/components/spinner/CONTEXT.md +15 -8
  38. package/src/lib/components/spinner/rt-spinner.component.scss +108 -9
  39. package/src/lib/components/tag/rt-tag.component.scss +43 -23
  40. package/src/lib/components/toast/CONTEXT.md +8 -0
  41. package/src/lib/components/toast/rt-toast.component.scss +74 -15
  42. package/src/lib/components/toast/rt-toaster.component.scss +5 -1
  43. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -37
  44. package/src/lib/components/toggle-switch/CONTEXT.md +11 -3
  45. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +53 -14
  46. package/src/lib/components/toolbar/rt-toolbar.component.scss +15 -4
  47. package/src/lib/components/tooltip/CONTEXT.md +5 -5
  48. package/src/rich-editor/lib/components/chat/CONTEXT.md +7 -2
  49. package/src/rich-editor/lib/components/chat/rt-chat.component.scss +25 -0
  50. package/styles/tokens.css +35 -0
  51. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +16 -20
  52. package/types/rt-tools-ui-kit-v2.d.ts +371 -62
  53. package/rt-tools-ui-kit-v2-0.16.0.tgz +0 -0
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { WritableSignal, InputSignal, InjectionToken, Signal, OutputEmitterRef, Renderer2, EnvironmentProviders, PipeTransform, InputSignalWithTransform, OnInit, OnDestroy, TemplateRef, ElementRef, DestroyRef, AfterViewChecked, ModelSignal, AfterContentInit, AfterViewInit } from '@angular/core';
3
- import { OverlayRef, ComponentType, CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
4
- import { Observable, MonoTypeOperatorFunction } from 'rxjs';
2
+ import { WritableSignal, InputSignal, InjectionToken, Signal, OutputEmitterRef, ElementRef, InputSignalWithTransform, Renderer2, Injector, EnvironmentProviders, PipeTransform, OnInit, OnDestroy, TemplateRef, DestroyRef, AfterViewChecked, ModelSignal, AfterContentInit, AfterViewInit } from '@angular/core';
5
3
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
4
+ import { OverlayRef, ComponentType, CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
5
+ import { Subject, Observable, MonoTypeOperatorFunction } from 'rxjs';
6
6
  import { ControlValueAccessor, ValidationErrors, AbstractControl, FormControl, FormGroup } from '@angular/forms';
7
7
  import { Router, ActivatedRoute, Params, CanDeactivateFn, RouterLink } from '@angular/router';
8
8
  import { TNullable, IPageModel, ISortModel, TFilterOperatorType, IFilterModel, TListSortOrderType } from '@rt-tools/utils';
@@ -71,6 +71,21 @@ declare namespace IRtIcon {
71
71
  type Drawing = Preset | 'material-fill';
72
72
  /** Семантические цвета. Маппинг на CSS-переменные `--rt-icon-color-*` — в `rt-icon.component.ts`. */
73
73
  type Color = 'current' | 'muted' | 'info' | 'success' | 'warning' | 'danger' | 'inverse';
74
+ /** Размер на входе значка: ступень или пиксели. */
75
+ type SizeInput = Size | number;
76
+ /**
77
+ * Как значок рисует имя Material: `map-first` — пара из перечня кита, без пары шрифт;
78
+ * `font` — шрифт для любого имени.
79
+ */
80
+ type GlyphStrategy = 'map-first' | 'font';
81
+ /** Итог разбора имени: рисунок кита либо лигатура шрифта Material. */
82
+ type Resolved = {
83
+ readonly kind: 'kit';
84
+ readonly name: Name;
85
+ } | {
86
+ readonly kind: 'font';
87
+ readonly glyph: string;
88
+ };
74
89
  }
75
90
 
76
91
  /**
@@ -288,6 +303,8 @@ type TRtAsideContentLayout = 'default' | 'tabs';
288
303
  * cross-encapsulation хака.
289
304
  */
290
305
  declare class RtAsideComponent {
306
+ #private;
307
+ protected readonly frame: Signal<ElementRef<HTMLElement>>;
291
308
  protected readonly hasRequestError: Signal<boolean>;
292
309
  readonly size: InputSignal<TRtAsideSize>;
293
310
  readonly contentLayout: InputSignal<TRtAsideContentLayout>;
@@ -298,10 +315,23 @@ declare class RtAsideComponent {
298
315
  * кнопкой копирования; `null` и `undefined` — ошибки нет, любое другое значение её показывает.
299
316
  */
300
317
  readonly requestError: InputSignal<unknown>;
318
+ /**
319
+ * Держать Tab внутри панели. При включении фокус уходит на `[cdkFocusInitial]` или первый
320
+ * элемент под Tab, а когда панель уходит или вход гаснет, возвращается туда, где стоял.
321
+ */
322
+ readonly trapFocus: InputSignalWithTransform<boolean, BooleanInput>;
323
+ /** Идёт запрос: панель накрыта слоем с крутилкой и помечена занятой. */
324
+ readonly pending: InputSignalWithTransform<boolean, BooleanInput>;
325
+ constructor();
301
326
  static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideComponent, never>;
302
- static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideComponent, "rt-aside", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "contentLayout": { "alias": "contentLayout"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "requestError": { "alias": "requestError"; "required": false; "isSignal": true; }; }, {}, never, ["rt-aside-header", "*", "rt-aside-footer"], true, never>;
327
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideComponent, "rt-aside", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "contentLayout": { "alias": "contentLayout"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "requestError": { "alias": "requestError"; "required": false; "isSignal": true; }; "trapFocus": { "alias": "trapFocus"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["rt-aside-header", "*", "rt-aside-footer"], true, never>;
303
328
  }
304
329
 
330
+ /**
331
+ * Жест закрытия, на который панель не закрылась: `Escape` или нажатие по подложке. Панель
332
+ * отказывает в нём под `disableClose()` и когда жест выключен настройкой открытия.
333
+ */
334
+ type TRtAsideCloseRequest = 'escape' | 'backdrop';
305
335
  /**
306
336
  * Хэндл к программно открытой side-sheet (через `RtAsideService.open()`).
307
337
  *
@@ -318,6 +348,9 @@ declare class RtAsideComponent {
318
348
  * 3. Эмиттит result в `afterClosed()` СРАЗУ (consumer не ждёт анимацию).
319
349
  * 4. Через `setTimeout(200ms)` зовёт `overlayRef.dispose()` — overlay убран после анимации.
320
350
  *
351
+ * Слой, снятый без `close()` — переходом по адресу (`disposeOnNavigation`) или уничтожением
352
+ * хозяина, — тоже завершает `afterClosed()`: подписчик получает `undefined`.
353
+ *
321
354
  * @example
322
355
  * \`\`\`ts
323
356
  * // в контент-компоненте
@@ -338,11 +371,20 @@ declare class RtAsideRef<T = unknown> {
338
371
  * Программный `close(result)` гейтом не задет — он всегда закрывает.
339
372
  */
340
373
  readonly disableClose: WritableSignal<boolean>;
341
- constructor(overlayRef: OverlayRef, renderer: Renderer2);
374
+ /**
375
+ * `closeRequestsSource` наполняет служба: она слушает жесты и знает, отказала ли в них панель.
376
+ * Хэндл только завершает поток вместе с панелью.
377
+ */
378
+ constructor(overlayRef: OverlayRef, renderer: Renderer2, closeRequestsSource?: Subject<TRtAsideCloseRequest>);
342
379
  /** Закрывает overlay со slide-out анимацией; эмиттит result в `afterClosed()` синхронно. */
343
380
  close(result?: T): void;
344
- /** Эмиттит один раз — результат `close(result)` — и завершается. */
381
+ /** Эмиттит один раз — результат `close(result)` или `undefined` при снятом слое — и завершается. */
345
382
  afterClosed(): Observable<T | undefined>;
383
+ /**
384
+ * Жесты закрытия, в которых панель отказала: `Escape` и нажатие по подложке под
385
+ * `disableClose()` или выключенные настройкой. Завершается вместе с панелью.
386
+ */
387
+ closeRequests(): Observable<TRtAsideCloseRequest>;
346
388
  }
347
389
 
348
390
  /**
@@ -365,6 +407,12 @@ interface IRtAsideConfig<TData = unknown> {
365
407
  closeOnEscape?: boolean;
366
408
  /** К какому краю viewport "приклеить" панель. По дефолту `"right"`. */
367
409
  position?: TRtAsidePosition;
410
+ /**
411
+ * Injector хозяина панели — обычно `inject(Injector)` открывающего компонента. Он становится
412
+ * родителем портала: содержимое видит провайдеры хозяина. Уничтожение хозяина закрывает
413
+ * панель через `close()`. Без него родитель — корневой injector, и панель живёт сама по себе.
414
+ */
415
+ injector?: Injector;
368
416
  }
369
417
  /**
370
418
  * Программный API для открытия side-sheet поверх CDK Overlay.
@@ -847,9 +895,51 @@ declare const ICON_CATEGORY_RULES: readonly IIconCategoryRule[];
847
895
  */
848
896
  declare function categoryOf(name: IRtIcon.Name): TIconCategory;
849
897
 
898
+ /**
899
+ * Как значки приложения рисуют имя Material. Задаётся третьим аргументом `provideRtIcons()`;
900
+ * по умолчанию `map-first` — пара из перечня кита, а без пары шрифт.
901
+ */
902
+ declare const RT_ICON_GLYPH_STRATEGY: InjectionToken<IRtIcon.GlyphStrategy>;
903
+ /**
904
+ * Готовность шрифтов страницы — одна на все значки.
905
+ *
906
+ * Лигатура до готовности шрифта рисуется словом в запасном шрифте: значок прячет её, пока страница
907
+ * не сказала, что шрифты готовы. Кит шрифт не везёт и семью не знает, поэтому ждёт общую готовность,
908
+ * а не загрузку одной семьи. На сервере шрифтов нет — лигатура там скрыта. Браузер без интерфейса
909
+ * шрифтов ждать нечем, и лигатура показывается сразу.
910
+ */
911
+ declare class RtIconFontService {
912
+ #private;
913
+ readonly ready: Signal<boolean>;
914
+ constructor();
915
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtIconFontService, never>;
916
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
917
+ }
918
+
919
+ /** Имя значка кита — то, что рисует спрайт; остальное кит своим рисунком не закрывает. */
920
+ declare function isKitIconName(name: string): name is IRtIcon.Name;
921
+ /** Пара имени Material из перечня кита; `null` — пары нет или имени нет. */
922
+ declare function materialPairOf(glyph: string | null | undefined): IRtIcon.Name | null;
923
+ /**
924
+ * Чем рисуется значок: своим рисунком кита или лигатурой шрифта Material.
925
+ *
926
+ * Имя кита выигрывает у имени Material, если названы оба. Имя Material по способу `map-first`
927
+ * берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу. Материальный рисунок
928
+ * для пары выбирает уже сам значок по признаку набора над собой: это не дело разбора.
929
+ *
930
+ * `null` — значку нечего рисовать.
931
+ */
932
+ declare function resolveIconGlyph(name: IRtIcon.Name | null | undefined, glyph: string | null | undefined, strategy: IRtIcon.GlyphStrategy): IRtIcon.Resolved | null;
933
+
850
934
  declare class RtIconComponent {
851
935
  #private;
852
- protected readonly href: Signal<string>;
936
+ /** Чем рисуется значок: именем кита или лигатурой шрифта. Ни имени, ни глифа — пустое место. */
937
+ protected readonly resolved: Signal<IRtIcon.Resolved | null>;
938
+ protected readonly kitName: Signal<IRtIcon.Name | null>;
939
+ protected readonly fontGlyph: Signal<string | null>;
940
+ /** Лигатура прячется, пока шрифты страницы не готовы: до того она рисуется словом. */
941
+ protected readonly glyphMods: Signal<Record<string, boolean>>;
942
+ protected readonly href: Signal<string | null>;
853
943
  /**
854
944
  * Набор, которым рисуется этот значок. Материальный закрывает не все имена кита — он слой
855
945
  * переопределений, как набор оформления: имя без материального рисунка рисуется своим, и это
@@ -861,18 +951,35 @@ declare class RtIconComponent {
861
951
  protected readonly sizePx: Signal<number>;
862
952
  protected readonly colorValue: Signal<string | null>;
863
953
  protected readonly rotateStyle: Signal<string | null>;
864
- readonly name: InputSignal<IRtIcon.Name>;
865
- readonly size: InputSignal<IRtIcon.Size>;
954
+ /** Имя кита. Стоит рядом с глифом и побеждает его, когда переданы оба. */
955
+ readonly name: InputSignal<IRtIcon.Name | null>;
956
+ /**
957
+ * Имя Material вместо имени кита. Как оно рисуется — парой из перечня кита или лигатурой
958
+ * шрифта Material Symbols — решает настройка `glyphStrategy` у `provideRtIcons()`. Шрифт
959
+ * приложение подключает само; семья берётся из свойства `--rt-icon-glyph-font`.
960
+ */
961
+ readonly glyph: InputSignal<string | null>;
962
+ /**
963
+ * Ступень размера или число пикселей — для размеров между ступенями и крупнее последней.
964
+ * Числовая строка из статического атрибута читается числом, прочая строка вне ступеней — `md`.
965
+ * Внутри вход хранит пиксели: ступень переводится в них при записи.
966
+ */
967
+ readonly size: InputSignalWithTransform<number, IRtIcon.SizeInput | string>;
866
968
  readonly color: InputSignal<IRtIcon.Color>;
867
969
  /**
868
970
  * Залитый рисунок вместо контурного — как `FILL 1` у значка первого кита. Действует в
869
971
  * материальном наборе; свой набор рисует значок одним рисунком. Дефолт `false`.
870
972
  */
871
973
  readonly fill: InputSignalWithTransform<boolean, BooleanInput>;
974
+ /**
975
+ * Значок вращается — как индикатор занятости внутри кнопки или строки. Когда система просит
976
+ * меньше движения, вращение медленнее. Поворот на время вращения уступает ему. Дефолт `false`.
977
+ */
978
+ readonly spin: InputSignalWithTransform<boolean, BooleanInput>;
872
979
  readonly rotate: InputSignalWithTransform<number | null, TRotateInput>;
873
980
  constructor();
874
981
  static ɵfac: i0.ɵɵFactoryDeclaration<RtIconComponent, never>;
875
- static ɵcmp: i0.ɵɵComponentDeclaration<RtIconComponent, "rt-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
982
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtIconComponent, "rt-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "spin": { "alias": "spin"; "required": false; "isSignal": true; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
876
983
  }
877
984
  type TRotateInput = number | string | null;
878
985
 
@@ -921,10 +1028,19 @@ declare const RT_ICON_MATERIAL_PRESET_SELECTOR: string;
921
1028
  * Наборов значков два: свой и материальный. Второй нужен только приложению, которое объявляет
922
1029
  * материальный набор оформления, и адрес у него свой — набор лежит в `assets/icons-material`.
923
1030
  *
1031
+ * Третий аргумент — настройки значков. `glyphStrategy` говорит, как рисуется имя Material на входе
1032
+ * `glyph`: `map-first` (по умолчанию) — пара из перечня кита, а без пары шрифт Material Symbols;
1033
+ * `font` — шрифт для любого имени. Шрифт приложение подключает само.
1034
+ *
924
1035
  * @param baseUrl Адрес опубликованного набора. По умолчанию `/icons`.
925
1036
  * @param materialBaseUrl Адрес материального набора. По умолчанию `/icons-material`.
1037
+ * @param options Настройки значков.
926
1038
  */
927
- declare function provideRtIcons(baseUrl?: string, materialBaseUrl?: string): EnvironmentProviders;
1039
+ declare function provideRtIcons(baseUrl?: string, materialBaseUrl?: string, options?: IRtIconsOptions): EnvironmentProviders;
1040
+ /** Настройки значков приложения — третий аргумент `provideRtIcons()`. */
1041
+ interface IRtIconsOptions {
1042
+ readonly glyphStrategy?: IRtIcon.GlyphStrategy;
1043
+ }
928
1044
 
929
1045
  /**
930
1046
  * Адрес, по которому приложение публикует набор из `assets/icons` пакета.
@@ -1021,6 +1137,9 @@ declare namespace IRtAsideHeader {
1021
1137
  * Доменные действия (отклонить / удалить / снять с публикации и т.п.)
1022
1138
  * проецируются в слот `[asideActions]` как ряд `rt-icon-button` справа от title.
1023
1139
  *
1140
+ * Слот `[asideHeaderContent]` — строка под заголовком на всю ширину шапки: поиск, вкладки,
1141
+ * сводка. Пустой слот места не занимает.
1142
+ *
1024
1143
  * `ViewEncapsulation.None` — для единообразия с rt-dialog-header (стили
1025
1144
  * префиксованы `.rt-aside-header`).
1026
1145
  *
@@ -1073,7 +1192,7 @@ declare class RtAsideHeaderComponent {
1073
1192
  readonly dismiss: OutputEmitterRef<void>;
1074
1193
  protected onDismiss(): void;
1075
1194
  static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideHeaderComponent, never>;
1076
- static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideHeaderComponent, "rt-aside-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "overline": { "alias": "overline"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[asideActions]"], true, never>;
1195
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideHeaderComponent, "rt-aside-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "overline": { "alias": "overline"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[asideActions]", "[asideHeaderContent]"], true, never>;
1077
1196
  }
1078
1197
 
1079
1198
  /**
@@ -1438,6 +1557,11 @@ declare namespace IButton {
1438
1557
  type Size = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
1439
1558
  /** Положение иконки относительно лейбла. */
1440
1559
  type IconPos = 'left' | 'right';
1560
+ /**
1561
+ * Подпись во время загрузки: `keep` — спиннер рядом с подписью, `hide` — подпись и иконка
1562
+ * невидимы, но держат ширину кнопки, а спиннер стоит по центру.
1563
+ */
1564
+ type LoadingLabel = 'keep' | 'hide';
1441
1565
  }
1442
1566
 
1443
1567
  /**
@@ -1496,7 +1620,11 @@ declare class RtButtonDirective {
1496
1620
  protected readonly isIconOnly: Signal<boolean>;
1497
1621
  /** Текстовый лейбл кнопки. Если null — кнопка только с иконкой. */
1498
1622
  readonly label: InputSignal<string | null>;
1499
- /** CSS-класс иконки (например, `check`). Если null — без иконки. */
1623
+ /**
1624
+ * Значок кнопки: имя кита (`check`) или имя Material (`arrow_back`). Имя Material рисуется
1625
+ * так же, как вход `glyph` у `rt-icon`: парой из перечня кита или лигатурой шрифта — по
1626
+ * настройке `glyphStrategy` у `provideRtIcons()`. Если null — без иконки.
1627
+ */
1500
1628
  readonly icon: InputSignal<string | null>;
1501
1629
  /** Сторона размещения иконки относительно лейбла. */
1502
1630
  readonly iconPos: InputSignal<IButton.IconPos>;
@@ -1510,6 +1638,11 @@ declare class RtButtonDirective {
1510
1638
  readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
1511
1639
  /** Кастомный CSS-класс иконки в loading. Если null — встроенный CSS-спиннер. */
1512
1640
  readonly loadingIcon: InputSignal<string | null>;
1641
+ /**
1642
+ * Подпись во время загрузки. `hide` оставляет подпись и иконку в кнопке невидимыми — ширина
1643
+ * не скачет, — а спиннер ставит по центру; имя кнопки для скринридера остаётся.
1644
+ */
1645
+ readonly loadingLabel: InputSignal<IButton.LoadingLabel>;
1513
1646
  /**
1514
1647
  * Положение двухпозиционной кнопки: `true` — нажата, `false` — отжата, `null` — положения нет
1515
1648
  * вовсе.
@@ -1530,7 +1663,7 @@ declare class RtButtonDirective {
1530
1663
  protected get ariaPressed(): string | null;
1531
1664
  protected get hostClasses(): Record<string, boolean>;
1532
1665
  static ɵfac: i0.ɵɵFactoryDeclaration<RtButtonDirective, never>;
1533
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtButtonDirective, "button[rtButton], a[rtButton]", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRippleDirective; inputs: { "rippleDisabled": "rippleDisabled"; }; outputs: {}; }, { directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
1666
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtButtonDirective, "button[rtButton], a[rtButton]", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRippleDirective; inputs: { "rippleDisabled": "rippleDisabled"; }; outputs: {}; }, { directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
1534
1667
  }
1535
1668
 
1536
1669
  /**
@@ -3604,9 +3737,10 @@ type TRtDialogSize = 'sm' | 'md' | 'lg';
3604
3737
  /**
3605
3738
  * Презентационный styled-frame для модалки поверх CDK Overlay.
3606
3739
  *
3607
- * Видимость / backdrop / scroll-block / ESC / focus-trap — НЕ внутренняя
3608
- * ответственность компонента. Это обеспечивает CDK Overlay через
3609
- * `RtDialogService.open()`. rt-dialog здесь — стилизованная "рамка"
3740
+ * Видимость / backdrop / scroll-block / ESC / фокус — НЕ внутренняя
3741
+ * ответственность компонента. Это обеспечивает `RtDialogService.open()`: оверлей CDK, а
3742
+ * ловушку и первый фокус — по флагам `trapFocus`, `restoreFocus` и `autoFocus` (по
3743
+ * умолчанию выключены). Рамка несёт `tabindex="-1"`, чтобы `autoFocus: 'dialog'` мог её взять. rt-dialog здесь — стилизованная "рамка"
3610
3744
  * (padding-free контейнер) с size-вариантами + ng-content слотом.
3611
3745
  *
3612
3746
  * Композиция:
@@ -3650,6 +3784,9 @@ declare class RtDialogComponent {
3650
3784
  * Контент-компонент инжектит `RtDialogRef` и закрывает модалку через `.close(result?)`.
3651
3785
  * Родитель, открывший модалку, ждёт результата через `.afterClosed()`.
3652
3786
  *
3787
+ * Слой, снятый без `close()` — переходом по адресу или уничтожением хозяина, — тоже завершает
3788
+ * `afterClosed()`: подписчик получает `undefined`. Иначе он ждал бы ответа, которого не будет.
3789
+ *
3653
3790
  * Generic `<T>` — тип результата `close(result)`. Дефолт `unknown` — если результат
3654
3791
  * не нужен, оставляй generic пустым.
3655
3792
  *
@@ -3683,7 +3820,7 @@ declare class RtDialogRef<T = unknown> {
3683
3820
  constructor(overlayRef: OverlayRef);
3684
3821
  /** Закрывает overlay; опционально передаёт результат подписчикам `afterClosed()`. */
3685
3822
  close(result?: T): void;
3686
- /** Эмиттит один раз — результат `close(result)` — и завершается. */
3823
+ /** Эмиттит один раз — результат `close(result)` или `undefined` при снятом слое — и завершается. */
3687
3824
  afterClosed(): Observable<T | undefined>;
3688
3825
  }
3689
3826
 
@@ -3701,7 +3838,18 @@ interface IRtDialogConfig<TData = unknown> {
3701
3838
  closeOnBackdropClick?: boolean;
3702
3839
  /** Закрывать модалку по ESC. По дефолту `true`. */
3703
3840
  closeOnEscape?: boolean;
3841
+ /** Держать Tab внутри модалки, пока она открыта. По дефолту `false` — как было. */
3842
+ trapFocus?: boolean;
3843
+ /** После закрытия вернуть фокус туда, где он стоял при открытии. По дефолту `false`. */
3844
+ restoreFocus?: boolean;
3845
+ /**
3846
+ * Куда поставить фокус при открытии: `'dialog'` — на рамку окна, `'first-tabbable'` — на первый
3847
+ * элемент, до которого доходит Tab. По дефолту `false` — фокус не трогается.
3848
+ */
3849
+ autoFocus?: TRtDialogAutoFocus;
3704
3850
  }
3851
+ /** Куда диалог ставит фокус при открытии; `false` — никуда. */
3852
+ type TRtDialogAutoFocus = 'dialog' | 'first-tabbable' | false;
3705
3853
  /**
3706
3854
  * Программный API для открытия модалок поверх CDK Overlay.
3707
3855
  *
@@ -3788,6 +3936,9 @@ declare const RT_DIALOG_DATA: InjectionToken<unknown>;
3788
3936
  * (внутри inline `<rt-dialog [visible]>`) `RtDialogRef` не зарегистрирован — клик
3789
3937
  * по close-кнопке эмитит output `(closeAction)`, который должен повесить родитель.
3790
3938
  *
3939
+ * Перед заголовком — место для значка или другого элемента: узел с атрибутом
3940
+ * `rtDialogHeaderLead` проецируется туда. Пустое место ничего не занимает.
3941
+ *
3791
3942
  * `ViewEncapsulation.None` — для единообразия с rt-dialog (стили префиксованы `.rt-dialog-header`).
3792
3943
  *
3793
3944
  * @example
@@ -3811,13 +3962,16 @@ declare class RtDialogHeaderComponent {
3811
3962
  readonly closable: InputSignalWithTransform<boolean, BooleanInput>;
3812
3963
  protected onClose(): void;
3813
3964
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDialogHeaderComponent, never>;
3814
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogHeaderComponent, "rt-dialog-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3965
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogHeaderComponent, "rt-dialog-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, {}, never, ["[rtDialogHeaderLead]"], true, never>;
3815
3966
  }
3816
3967
 
3968
+ /** Как подвал раскладывает содержимое: к началу, по центру, к концу или по обоим краям. */
3969
+ type TRtDialogFooterAlign = 'start' | 'center' | 'end' | 'between';
3817
3970
  /**
3818
3971
  * Footer-слот для композиции внутри `<rt-dialog>`. Принимает любой проектированный
3819
3972
  * контент (action-кнопки, статусные сообщения и т.п.), оборачивает в footer с
3820
- * top-border и flex-раскладкой `justify-content: flex-end`.
3973
+ * top-border и flex-раскладкой; вход `align` прижимает содержимое к концу (по умолчанию),
3974
+ * к началу, к центру или разводит по краям (`between`).
3821
3975
  *
3822
3976
  * `ViewEncapsulation.None` — для единообразия с rt-dialog.
3823
3977
  *
@@ -3830,8 +3984,30 @@ declare class RtDialogHeaderComponent {
3830
3984
  * \`\`\`
3831
3985
  */
3832
3986
  declare class RtDialogFooterComponent {
3987
+ readonly align: InputSignal<TRtDialogFooterAlign>;
3833
3988
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDialogFooterComponent, never>;
3834
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogFooterComponent, "rt-dialog-footer", never, {}, {}, never, ["*"], true, never>;
3989
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogFooterComponent, "rt-dialog-footer", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3990
+ }
3991
+
3992
+ /**
3993
+ * Тело модалки для композиции внутри `<rt-dialog>` между шапкой и подвалом. Даёт отступ и
3994
+ * прокрутку: длинное содержимое прокручивается внутри тела, а шапка и подвал стоят на месте.
3995
+ * Отступ задаёт `--rt-dialog-content-padding`, потолок высоты — `--rt-dialog-content-max-height`.
3996
+ *
3997
+ * Часть необязательная: окно со своей обёрткой тела выглядит как прежде.
3998
+ *
3999
+ * @example
4000
+ * \`\`\`html
4001
+ * <rt-dialog size="md">
4002
+ * <rt-dialog-header title="Создание записи" />
4003
+ * <rt-dialog-content>...форма...</rt-dialog-content>
4004
+ * <rt-dialog-footer>...</rt-dialog-footer>
4005
+ * </rt-dialog>
4006
+ * \`\`\`
4007
+ */
4008
+ declare class RtDialogContentComponent {
4009
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtDialogContentComponent, never>;
4010
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogContentComponent, "rt-dialog-content", never, {}, {}, never, ["*"], true, never>;
3835
4011
  }
3836
4012
 
3837
4013
  declare class RtDownloadLinkComponent {
@@ -4080,6 +4256,9 @@ declare class RtDynamicInputComponent extends RtFormControlBase<string[]> {
4080
4256
  protected readonly rows: Signal<IRtDynamicSelector.ListRow<string>[]>;
4081
4257
  protected readonly isInvitationShown: Signal<boolean>;
4082
4258
  protected readonly isAddShown: Signal<boolean>;
4259
+ protected readonly isKeysReset: Signal<boolean>;
4260
+ protected readonly isKeysClear: Signal<boolean>;
4261
+ /** Правки в шаблоне строки держат сброс и очистку включёнными, даже когда строки не менялись. */
4083
4262
  protected readonly isResetDisabled: Signal<boolean>;
4084
4263
  protected readonly isClearDisabled: Signal<boolean>;
4085
4264
  protected readonly addTitle: Signal<string>;
@@ -4096,6 +4275,17 @@ declare class RtDynamicInputComponent extends RtFormControlBase<string[]> {
4096
4275
  readonly invitation: InputSignalWithTransform<boolean, unknown>;
4097
4276
  readonly invitationIcon: InputSignal<IRtIcon.Name | null>;
4098
4277
  readonly invitationDescription: InputSignal<string>;
4278
+ /** Корзина строк; без неё строки убирает только очистка или сам вызывающий. */
4279
+ readonly removeShown: InputSignalWithTransform<boolean, unknown>;
4280
+ /** Сброс и очистка под списком: `false` их убирает, кнопка добавления остаётся. */
4281
+ readonly listActionsShown: InputSignalWithTransform<boolean, unknown>;
4282
+ /**
4283
+ * Строки правлены в шаблоне вызывающего: сброс и очистка включены и тогда, когда строки прежние.
4284
+ * Сброс сообщает `listReset`, очистка — `listCleared`, и вызывающий снимает свои правки.
4285
+ */
4286
+ readonly extraChanged: InputSignalWithTransform<boolean, unknown>;
4287
+ readonly listReset: OutputEmitterRef<void>;
4288
+ readonly listCleared: OutputEmitterRef<void>;
4099
4289
  readonly displayText: Signal<string>;
4100
4290
  /** Записанное формой становится и списком, и значением для сброса; пустой массив список опустошает. */
4101
4291
  writeValue(value: string[] | null): void;
@@ -4110,7 +4300,7 @@ declare class RtDynamicInputComponent extends RtFormControlBase<string[]> {
4110
4300
  protected getEmptyValue(): string[];
4111
4301
  protected focusAfterClear(): void;
4112
4302
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicInputComponent, never>;
4113
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicInputComponent, "rt-dynamic-input", never, { "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; }, {}, ["rowControls"], never, true, never>;
4303
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicInputComponent, "rt-dynamic-input", never, { "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "listActionsShown": { "alias": "listActionsShown"; "required": false; "isSignal": true; }; "extraChanged": { "alias": "extraChanged"; "required": false; "isSignal": true; }; }, { "listReset": "listReset"; "listCleared": "listCleared"; }, ["rowControls"], never, true, never>;
4114
4304
  }
4115
4305
 
4116
4306
  /**
@@ -4139,6 +4329,10 @@ declare class RtDynamicSelectorListComponent<TItem> {
4139
4329
  readonly disabled: InputSignalWithTransform<boolean, unknown>;
4140
4330
  /** Полоса под строками; приглашение вызывающего встаёт на её место. */
4141
4331
  readonly actionsShown: InputSignalWithTransform<boolean, unknown>;
4332
+ /** Сброс и очистка в полосе; без них в полосе остаётся кнопка добавления. */
4333
+ readonly resetClearShown: InputSignalWithTransform<boolean, unknown>;
4334
+ /** Корзина строк; без неё строки двигаются и правятся, но не убираются. */
4335
+ readonly removeShown: InputSignalWithTransform<boolean, unknown>;
4142
4336
  readonly resetDisabled: InputSignalWithTransform<boolean, unknown>;
4143
4337
  readonly clearDisabled: InputSignalWithTransform<boolean, unknown>;
4144
4338
  /** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
@@ -4157,7 +4351,7 @@ declare class RtDynamicSelectorListComponent<TItem> {
4157
4351
  protected onEditApply(row: IRtDynamicSelector.ListRow<TItem>): void;
4158
4352
  protected onEditCancel(): void;
4159
4353
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorListComponent<any>, never>;
4160
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorListComponent<any>, "rt-dynamic-selector-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "actionsShown": { "alias": "actionsShown"; "required": false; "isSignal": true; }; "resetDisabled": { "alias": "resetDisabled"; "required": false; "isSignal": true; }; "clearDisabled": { "alias": "clearDisabled"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "titleTpl": { "alias": "titleTpl"; "required": false; "isSignal": true; }; "controlsTpl": { "alias": "controlsTpl"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "moved": "moved"; "edited": "edited"; "resetClicked": "resetClicked"; "cleared": "cleared"; }, never, ["*"], true, never>;
4354
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorListComponent<any>, "rt-dynamic-selector-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "actionsShown": { "alias": "actionsShown"; "required": false; "isSignal": true; }; "resetClearShown": { "alias": "resetClearShown"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "resetDisabled": { "alias": "resetDisabled"; "required": false; "isSignal": true; }; "clearDisabled": { "alias": "clearDisabled"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "titleTpl": { "alias": "titleTpl"; "required": false; "isSignal": true; }; "controlsTpl": { "alias": "controlsTpl"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "moved": "moved"; "edited": "edited"; "resetClicked": "resetClicked"; "cleared": "cleared"; }, never, ["*"], true, never>;
4161
4355
  }
4162
4356
 
4163
4357
  /** Сколько ждёт поиск на сервере после последней нажатой клавиши. */
@@ -4209,6 +4403,8 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
4209
4403
  readonly pinnedKeys: InputSignal<ReadonlyArray<unknown>>;
4210
4404
  readonly navigateTitle: InputSignal<string>;
4211
4405
  readonly navigateLink: InputSignal<string>;
4406
+ /** Запрос, с которым выбор открывается; событием поиска он не уходит — вызывающий его знает. */
4407
+ readonly searchTerm: InputSignal<string>;
4212
4408
  /** Применённые ключи в порядке отметок. */
4213
4409
  readonly applied: OutputEmitterRef<unknown[]>;
4214
4410
  readonly cancelled: OutputEmitterRef<void>;
@@ -4227,7 +4423,7 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
4227
4423
  protected onApply(): void;
4228
4424
  protected onCancel(): void;
4229
4425
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorPopupComponent<any>, never>;
4230
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
4426
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
4231
4427
  }
4232
4428
 
4233
4429
  /**
@@ -4258,6 +4454,9 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
4258
4454
  protected readonly hasOffer: Signal<boolean>;
4259
4455
  protected readonly isNothingToChoose: Signal<boolean>;
4260
4456
  protected readonly isAddShown: Signal<boolean>;
4457
+ protected readonly isKeysReset: Signal<boolean>;
4458
+ protected readonly isKeysClear: Signal<boolean>;
4459
+ /** Правки в шаблоне строки держат сброс и очистку включёнными, даже когда ключи не менялись. */
4261
4460
  protected readonly isResetDisabled: Signal<boolean>;
4262
4461
  protected readonly isClearDisabled: Signal<boolean>;
4263
4462
  protected readonly addTitle: Signal<string>;
@@ -4270,6 +4469,17 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
4270
4469
  /** Название кнопки добавления; пустое — «Add» из словаря кита. */
4271
4470
  readonly buttonTitle: InputSignal<string>;
4272
4471
  readonly addShown: InputSignalWithTransform<boolean, unknown>;
4472
+ /** Корзина строк; без неё записи убирает только очистка или сам вызывающий. */
4473
+ readonly removeShown: InputSignalWithTransform<boolean, unknown>;
4474
+ /** Сброс и очистка под списком: `false` их убирает, кнопка добавления остаётся. */
4475
+ readonly listActionsShown: InputSignalWithTransform<boolean, unknown>;
4476
+ /**
4477
+ * Строки правлены в шаблоне вызывающего: сброс и очистка включены и тогда, когда ключи прежние.
4478
+ * Сброс сообщает `listReset`, очистка — `listCleared`, и вызывающий снимает свои правки.
4479
+ */
4480
+ readonly extraChanged: InputSignalWithTransform<boolean, unknown>;
4481
+ /** Запрос, с которым открывается всплывающий выбор; событием поиска он не уходит. */
4482
+ readonly searchTerm: InputSignal<string>;
4273
4483
  /** Ключи, которые нельзя убрать из списка. */
4274
4484
  readonly readonlyKeys: InputSignal<ReadonlyArray<unknown>>;
4275
4485
  /** Ключи строк всплывающего выбора, под последней из которых стоит разделитель. */
@@ -4294,9 +4504,14 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
4294
4504
  readonly chosenEntities: ModelSignal<TEntity[]>;
4295
4505
  readonly selectionChange: OutputEmitterRef<TEntity[]>;
4296
4506
  readonly listReset: OutputEmitterRef<void>;
4507
+ readonly listCleared: OutputEmitterRef<void>;
4508
+ /** Всплывающий выбор открылся или закрылся. */
4509
+ readonly popupOpenChange: OutputEmitterRef<boolean>;
4297
4510
  readonly searchChange: OutputEmitterRef<string>;
4298
4511
  readonly loadMore: OutputEmitterRef<void>;
4299
4512
  readonly temporaryChoiceChange: OutputEmitterRef<TEntity[]>;
4513
+ /** Открыт ли всплывающий выбор — от кнопки полосы или от кнопки приглашения. */
4514
+ readonly popupOpen: Signal<boolean>;
4300
4515
  readonly displayText: Signal<string>;
4301
4516
  /** Записанное формой становится и списком, и значением для сброса; пустой массив список опустошает. */
4302
4517
  writeValue(value: unknown[] | null): void;
@@ -4307,11 +4522,12 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
4307
4522
  protected onMoved(move: IRtDynamicSelector.Move): void;
4308
4523
  protected onReset(): void;
4309
4524
  protected onCleared(): void;
4525
+ protected onOpened(): void;
4310
4526
  protected onClosed(): void;
4311
4527
  protected getEmptyValue(): unknown[];
4312
4528
  protected focusAfterClear(): void;
4313
4529
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorComponent<any>, never>;
4314
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorComponent<any>, "rt-dynamic-selector", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "addShown": { "alias": "addShown"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "sortFn": { "alias": "sortFn"; "required": false; "isSignal": true; }; "chosenEntities": { "alias": "chosenEntities"; "required": false; "isSignal": true; }; }, { "chosenEntities": "chosenEntitiesChange"; "selectionChange": "selectionChange"; "listReset": "listReset"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, ["rowTitle", "rowControls"], never, true, never>;
4530
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorComponent<any>, "rt-dynamic-selector", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "addShown": { "alias": "addShown"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "listActionsShown": { "alias": "listActionsShown"; "required": false; "isSignal": true; }; "extraChanged": { "alias": "extraChanged"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "sortFn": { "alias": "sortFn"; "required": false; "isSignal": true; }; "chosenEntities": { "alias": "chosenEntities"; "required": false; "isSignal": true; }; }, { "chosenEntities": "chosenEntitiesChange"; "selectionChange": "selectionChange"; "listReset": "listReset"; "listCleared": "listCleared"; "popupOpenChange": "popupOpenChange"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, ["rowTitle", "rowControls"], never, true, never>;
4315
4531
  }
4316
4532
 
4317
4533
  /**
@@ -4326,12 +4542,14 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
4326
4542
  */
4327
4543
  declare class RtEmptyStateComponent {
4328
4544
  readonly icon: InputSignal<IRtIcon.Name | null>;
4545
+ /** Имя Material вместо `icon` — рисуется так же, как вход `glyph` у `rt-icon`. */
4546
+ readonly glyph: InputSignal<string | null>;
4329
4547
  readonly title: InputSignal<string>;
4330
4548
  readonly description: InputSignal<string | null>;
4331
4549
  /** Пунктирная рамка вокруг заглушки — так она читается как зона, куда бросают файл. */
4332
4550
  readonly framed: InputSignalWithTransform<boolean, BooleanInput>;
4333
4551
  static ɵfac: i0.ɵɵFactoryDeclaration<RtEmptyStateComponent, never>;
4334
- static ɵcmp: i0.ɵɵComponentDeclaration<RtEmptyStateComponent, "rt-empty-state", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "framed": { "alias": "framed"; "required": false; "isSignal": true; }; }, {}, never, ["[rtEmptyIllustration]", "*"], true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
4552
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtEmptyStateComponent, "rt-empty-state", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "framed": { "alias": "framed"; "required": false; "isSignal": true; }; }, {}, never, ["[rtEmptyIllustration]", "*"], true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
4335
4553
  }
4336
4554
 
4337
4555
  /**
@@ -4464,8 +4682,11 @@ declare class RtFieldComponent implements AfterContentInit {
4464
4682
  declare namespace IRtIconButton {
4465
4683
  /** Семантическая палитра кнопки. */
4466
4684
  type Variant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success' | 'warning';
4467
- /** Размер квадрата кнопки. Маппинг на пиксели — в SCSS (`--rt-icon-button-size`). */
4468
- type Size = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
4685
+ /**
4686
+ * Размер квадрата кнопки. Шаги — в SCSS; `xs` — 22px и `2xs` — 20px, оба со значком 16px.
4687
+ * Свой размер задаёт `--rt-icon-button-size` на теге или выше.
4688
+ */
4689
+ type Size = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
4469
4690
  /** HTML-тип нативного `<button>`. */
4470
4691
  type Type = 'button' | 'submit';
4471
4692
  }
@@ -4770,8 +4991,7 @@ declare class RtFilterControlComponent<T = string> {
4770
4991
  * `canGoBack=false` (default) — slot полностью скрыт через display:none, wordmark
4771
4992
  * выравнивается слева.
4772
4993
  *
4773
- * Далее — wordmark, справа — action-иконки (на базе rt-icon-button с inline
4774
- * override `--rt-icon-button-size: 35px`): опциональная «Пригласить пользователя»
4994
+ * Далее — wordmark, справа — action-иконки (rt-icon-button шагом md): опциональная «Пригласить пользователя»
4775
4995
  * (`showInvite`), слот колокольчика и профиль.
4776
4996
  *
4777
4997
  * Колокольчик уведомлений — проекция `[rtHeaderBell]`: домен кладёт в слот
@@ -4801,8 +5021,8 @@ declare class RtHeaderComponent {
4801
5021
  *
4802
5022
  * Рендерит свой собственный `<button type="...">` внутри template (НЕ host-button).
4803
5023
  * Все цвета и размеры — через семантические `--rt-*` токены; геометрия квадрата
4804
- * выставляется CSS-custom-property `--rt-icon-button-size` (overridable inline
4805
- * через `style="--rt-icon-button-size: 35px"` — нужно для миграции rt-header 35×35).
5024
+ * берётся из `--rt-icon-button-size`, а без него — из шага `size`. Свойство, заданное на теге
5025
+ * `<rt-icon-button>` или выше, доходит до кнопки; так же и `--rt-icon-button-bg`.
4806
5026
  *
4807
5027
  * Loading state — заменяет иконку на `<rt-icon name="spinner">` и блокирует
4808
5028
  * клики (`button[disabled]`). Active state управляет `aria-pressed` (для toggle-кнопок).
@@ -4828,8 +5048,14 @@ declare class RtIconButtonComponent {
4828
5048
  * camelCase ключи `hasIndicator` директива автоматически конвертирует в `has-indicator`.
4829
5049
  */
4830
5050
  protected readonly bemMods: Signal<Record<string, boolean>>;
4831
- /** Имя иконки — обязательно. */
4832
- readonly icon: InputSignal<IRtIcon.Name>;
5051
+ /**
5052
+ * Имя иконки в наборе кита. Нужно оно или `glyph`; когда переданы оба, побеждает имя. Нет ни
5053
+ * того ни другого — значок кит не рисует, и кнопка показывает вложенное содержимое: свой
5054
+ * рисунок приложения встаёт в кнопку с её размером, формой и состояниями.
5055
+ */
5056
+ readonly icon: InputSignal<IRtIcon.Name | null>;
5057
+ /** Имя Material вместо имени кита — рисуется так же, как вход `glyph` у `rt-icon`. */
5058
+ readonly glyph: InputSignal<string | null>;
4833
5059
  /** Доступное имя для screen-reader'ов — обязательно (icon-only кнопка). */
4834
5060
  readonly ariaLabel: InputSignal<string>;
4835
5061
  /** Семантическая палитра. */
@@ -4875,7 +5101,7 @@ declare class RtIconButtonComponent {
4875
5101
  readonly clicked: OutputEmitterRef<MouseEvent>;
4876
5102
  protected onClick(event: MouseEvent): void;
4877
5103
  static ɵfac: i0.ɵɵFactoryDeclaration<RtIconButtonComponent, never>;
4878
- static ɵcmp: i0.ɵɵComponentDeclaration<RtIconButtonComponent, "rt-icon-button", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "iconFill": { "alias": "iconFill"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
5104
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtIconButtonComponent, "rt-icon-button", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "iconFill": { "alias": "iconFill"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
4879
5105
  }
4880
5106
 
4881
5107
  /**
@@ -5088,6 +5314,12 @@ declare class RtImageUploadComponent {
5088
5314
  readonly downloadable: InputSignalWithTransform<boolean, BooleanInput>;
5089
5315
  /** Форма кнопки скачивания; она заходит за правый верхний угол картинки при любой форме */
5090
5316
  readonly downloadShape: InputSignal<IRtImageUpload.DownloadShape>;
5317
+ /** Размер значка кнопки скачивания; пусто — от размера кнопки */
5318
+ readonly downloadIconSize: InputSignal<IRtIcon.Size | null>;
5319
+ /** Вид кнопки выбора файла в пустом загрузчике */
5320
+ readonly chooseAppearance: InputSignal<IButton.Appearance>;
5321
+ /** Значок кнопки выбора файла; пусто — кнопка без значка */
5322
+ readonly chooseIcon: InputSignal<string | null>;
5091
5323
  /** Без кнопок «Отмена» и «Применить»: каждый результат обрезки применяется сразу */
5092
5324
  readonly autoApply: InputSignalWithTransform<boolean, BooleanInput>;
5093
5325
  /** Приложение загружает картинку: на месте стоит индикатор */
@@ -5118,7 +5350,7 @@ declare class RtImageUploadComponent {
5118
5350
  protected cancel(): void;
5119
5351
  protected download(): void;
5120
5352
  static ɵfac: i0.ɵɵFactoryDeclaration<RtImageUploadComponent, never>;
5121
- static ɵcmp: i0.ɵɵComponentDeclaration<RtImageUploadComponent, "rt-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "downloadShape": { "alias": "downloadShape"; "required": false; "isSignal": true; }; "autoApply": { "alias": "autoApply"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "round": { "alias": "round"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; }, { "imageChanged": "imageChanged"; "downloaded": "downloaded"; }, never, never, true, never>;
5353
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtImageUploadComponent, "rt-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "downloadShape": { "alias": "downloadShape"; "required": false; "isSignal": true; }; "downloadIconSize": { "alias": "downloadIconSize"; "required": false; "isSignal": true; }; "chooseAppearance": { "alias": "chooseAppearance"; "required": false; "isSignal": true; }; "chooseIcon": { "alias": "chooseIcon"; "required": false; "isSignal": true; }; "autoApply": { "alias": "autoApply"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "round": { "alias": "round"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; }, { "imageChanged": "imageChanged"; "downloaded": "downloaded"; }, never, never, true, never>;
5122
5354
  }
5123
5355
 
5124
5356
  /**
@@ -5470,8 +5702,11 @@ declare const RT_MENU_SELECT_EVENT: string;
5470
5702
  * Модель `[rtTooltip]`: один корневой неймспейс с префиксом `I`.
5471
5703
  */
5472
5704
  declare namespace IRtTooltip {
5473
- /** Сторона, с которой tooltip пристыкован к host'у (с авто-flip у края). */
5474
- type Placement = 'top' | 'bottom';
5705
+ /**
5706
+ * Сторона, с которой tooltip пристыкован к host'у. Не поместилась — подсказка уходит на
5707
+ * противоположную; боковой не хватило ни одной стороны — встаёт сверху или снизу.
5708
+ */
5709
+ type Placement = 'top' | 'bottom' | 'left' | 'right';
5475
5710
  }
5476
5711
 
5477
5712
  /**
@@ -6503,18 +6738,27 @@ declare class RtSideMenuFooterDirective {
6503
6738
  static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuFooterDirective, never>;
6504
6739
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuFooterDirective, "[rtSideMenuFooter]", never, {}, {}, never, never, true, never>;
6505
6740
  }
6506
- /** Контекст своего значка пункта: сам пункт — по нему приложение выбирает рисунок. */
6741
+ /**
6742
+ * Контекст своего значка: пункт, имя, которое надо нарисовать, и место. Шаблон один на меню и рисует
6743
+ * и значок строки, и кнопку строки, поэтому рисунок выбирают по `icon`, а не по `item.icon`: у кнопки
6744
+ * это имя её значка.
6745
+ */
6507
6746
  interface IRtSideMenuIconContext {
6508
6747
  $implicit: IRtSideMenu.Item;
6748
+ /** Имя значка этого места: значка строки или кнопки строки. */
6749
+ icon: string;
6750
+ /** Место: значок строки или кнопка строки. */
6751
+ slot: 'icon' | 'iconButton';
6509
6752
  }
6510
6753
  /**
6511
6754
  * Помечает `<ng-template>` своего значка пунктов меню — для имён, которых нет ни в наборе кита, ни
6512
- * в перечне имён Material. Шаблон один на меню и получает пункт; кит ставит его на место значка
6513
- * размером значка и цветом строки. Значок, который кит рисует сам, шаблон не перебивает.
6755
+ * в перечне имён Material. Шаблон один на меню и рисует и значок строки, и значок кнопки строки; кит
6756
+ * ставит его на место значка размером значка и цветом строки. Рисунок выбирают по `icon` контекста.
6757
+ * Значок, который кит рисует сам, шаблон не перебивает.
6514
6758
  *
6515
6759
  * ```html
6516
6760
  * <rt-side-menu [menuItems]="items">
6517
- * <ng-template rtSideMenuIcon let-item><img [src]="'/icons/' + item.icon + '.svg'" alt="" /></ng-template>
6761
+ * <ng-template rtSideMenuIcon let-icon="icon"><img [src]="'/icons/' + icon + '.svg'" alt="" /></ng-template>
6518
6762
  * </rt-side-menu>
6519
6763
  * ```
6520
6764
  */
@@ -6547,6 +6791,8 @@ interface IRtSideMenuHost {
6547
6791
  readonly isFavoritesSearchShown: Signal<boolean>;
6548
6792
  /** Свой значок пунктов, чьё имя кит не рисует: шаблон `rtSideMenuIcon` меню. */
6549
6793
  readonly ownIconTpl: Signal<TemplateRef<IRtSideMenuIconContext> | undefined>;
6794
+ /** Подсказки строк подменю: выключено — их нет ни у подписей, ни у кнопок строк. */
6795
+ readonly subMenuTooltipsShown: Signal<boolean>;
6550
6796
  /** Раскрыть или свернуть папку нажатием её заголовка. */
6551
6797
  toggleFolder(item: IRtSideMenu.Item): void;
6552
6798
  /** Уход указателя с панели: подменю, открытое наведением, закрывается. */
@@ -6614,6 +6860,10 @@ declare class RtSideMenuComponent implements IRtSideMenuHost {
6614
6860
  readonly favoriteActionsReserve: InputSignal<IRtSideMenu.FavoriteActionsReserve>;
6615
6861
  /** Поиск показывает совпавшие строки избранного; выключено — на время поиска блока нет. */
6616
6862
  readonly isFavoritesSearchShown: InputSignalWithTransform<boolean, unknown>;
6863
+ /** Кнопка закрепления в шапке подменю; выключено — подменю только всплывает, если режим не задан входом. */
6864
+ readonly pinShown: InputSignalWithTransform<boolean, unknown>;
6865
+ /** Подсказки строк подменю — у подписей и у кнопок строк. Доступные имена остаются. */
6866
+ readonly subMenuTooltipsShown: InputSignalWithTransform<boolean, unknown>;
6617
6867
  readonly subMenuModeChange: OutputEmitterRef<IRtSideMenu.SubMenuMode>;
6618
6868
  readonly subMenuWidthChange: OutputEmitterRef<number>;
6619
6869
  /** Начало и конец тяги: по ним потребитель накрывает чужие кадры и снимает накрытие. */
@@ -6656,7 +6906,7 @@ declare class RtSideMenuComponent implements IRtSideMenuHost {
6656
6906
  onResizeKeydown(event: KeyboardEvent): void;
6657
6907
  closeMobileMenu(): void;
6658
6908
  static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuComponent, never>;
6659
- static ɵcmp: i0.ɵɵComponentDeclaration<RtSideMenuComponent, "rt-side-menu", never, { "activeMenuIds": { "alias": "activeMenuIds"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "subMenuMode": { "alias": "subMenuMode"; "required": false; "isSignal": true; }; "subMenuWidth": { "alias": "subMenuWidth"; "required": false; "isSignal": true; }; "menuId": { "alias": "menuId"; "required": false; "isSignal": true; }; "favoritesCount": { "alias": "favoritesCount"; "required": false; "isSignal": true; }; "favoriteActionsReserve": { "alias": "favoriteActionsReserve"; "required": false; "isSignal": true; }; "isFavoritesSearchShown": { "alias": "isFavoritesSearchShown"; "required": false; "isSignal": true; }; }, { "subMenuModeChange": "subMenuModeChange"; "subMenuWidthChange": "subMenuWidthChange"; "subMenuResizeStart": "subMenuResizeStart"; "subMenuResizeEnd": "subMenuResizeEnd"; "closeMobileMenuAction": "closeMobileMenuAction"; "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, ["headerTpl", "footerTpl", "ownIconTpl"], never, true, never>;
6909
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtSideMenuComponent, "rt-side-menu", never, { "activeMenuIds": { "alias": "activeMenuIds"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "subMenuMode": { "alias": "subMenuMode"; "required": false; "isSignal": true; }; "subMenuWidth": { "alias": "subMenuWidth"; "required": false; "isSignal": true; }; "menuId": { "alias": "menuId"; "required": false; "isSignal": true; }; "favoritesCount": { "alias": "favoritesCount"; "required": false; "isSignal": true; }; "favoriteActionsReserve": { "alias": "favoriteActionsReserve"; "required": false; "isSignal": true; }; "isFavoritesSearchShown": { "alias": "isFavoritesSearchShown"; "required": false; "isSignal": true; }; "pinShown": { "alias": "pinShown"; "required": false; "isSignal": true; }; "subMenuTooltipsShown": { "alias": "subMenuTooltipsShown"; "required": false; "isSignal": true; }; }, { "subMenuModeChange": "subMenuModeChange"; "subMenuWidthChange": "subMenuWidthChange"; "subMenuResizeStart": "subMenuResizeStart"; "subMenuResizeEnd": "subMenuResizeEnd"; "closeMobileMenuAction": "closeMobileMenuAction"; "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, ["headerTpl", "footerTpl", "ownIconTpl"], never, true, never>;
6660
6910
  }
6661
6911
 
6662
6912
  /**
@@ -6750,8 +7000,8 @@ declare function pinnedSideMenuItems(picked: IRtSideMenu.Item[] | null | undefin
6750
7000
  */
6751
7001
  declare function sideMenuIconName(icon: string | undefined): IRtIcon.Name | null;
6752
7002
  /**
6753
- * Имена значков меню, о которых оно должно предупредить: ни имени кита, ни пары в перечне. Значок
6754
- * пункта закрывает свой шаблон меню; значок кнопки строки шаблона не берёт и предупреждает всегда.
7003
+ * Имена значков меню, о которых оно должно предупредить: ни имени кита, ни пары в перечне. И значок
7004
+ * пункта, и значок кнопки строки закрывает свой шаблон меню.
6755
7005
  * Без предупреждения такой значок пуст, и пропуск не заметен. Обходит пункты на любую глубину;
6756
7006
  * каждое имя — один раз.
6757
7007
  */
@@ -7128,33 +7378,48 @@ declare class RtSkeletonWrapperComponent {
7128
7378
  * - `primary` — синий основной (action accent), default
7129
7379
  * - `neutral` — нейтральный серый (для тонких inline-loader'ов)
7130
7380
  * - `on-primary` — белый (для overlay поверх primary-фона)
7381
+ *
7382
+ * `Appearance` — вид кольца: `border` — кольцо с дорожкой, `arc` — дуга без дорожки, как в Material.
7131
7383
  */
7132
7384
  declare namespace IRtSpinner {
7133
7385
  type Color = 'primary' | 'neutral' | 'on-primary';
7386
+ type Appearance = 'border' | 'arc';
7134
7387
  }
7135
7388
 
7136
7389
  /**
7137
7390
  * Атомарный rotating-spinner для loading-индикаторов.
7138
7391
  *
7139
- * Чистый CSS keyframe (border + animation rotate), zero deps. Без conditional
7140
- * rendering и backdrop'а — это ответственность parent'а (например `rt-table`
7141
- * sticky overlay).
7392
+ * Без новых режимов кольцо рисует сам host: border с одной цветной стороной и вращение, своей
7393
+ * разметки нет. Так спиннер стоит у семи компонентов кита, и их разметка от режимов не меняется.
7142
7394
  *
7143
- * Размер задаётся через `[diameter]` (px); цвет — через `[color]`
7144
- * (`primary` / `neutral` / `on-primary`).
7395
+ * Режимы `overlay`, `plate` и вид `arc` рисуют внутреннюю разметку, а host перестаёт быть кольцом:
7396
+ * - `overlay` — спиннер занимает позиционированного родителя целиком и ставит кольцо в центр;
7397
+ * слой — ступень `sticky`, ниже всего, что открывается поверх страницы;
7398
+ * - `backdrop` — полупрозрачная подложка оверлея, без `overlay` не действует;
7399
+ * - `plate` — круглая плашка с тенью под кольцом;
7400
+ * - `appearance="arc"` — дуга без дорожки, как у Material.
7145
7401
  *
7146
- * Анимация уважает `@media (prefers-reduced-motion)` — у пользователей с
7147
- * включённым reduced-motion spinner не вращается.
7402
+ * Анимация уважает `@media (prefers-reduced-motion)` — вращение замедляется.
7148
7403
  */
7149
7404
  declare class RtSpinnerComponent {
7405
+ /** Кольцо рисуется внутренней разметкой, а не самим host-ом. */
7406
+ protected readonly framed: Signal<boolean>;
7407
+ protected readonly modifiers: Signal<Record<string, boolean>>;
7408
+ protected readonly cssDiameter: Signal<string>;
7150
7409
  /** Диаметр spinner'а в px. Default 32. */
7151
7410
  readonly diameter: InputSignalWithTransform<number, NumberInput>;
7152
7411
  /** Семантическая палитра. Default `primary`. */
7153
7412
  readonly color: InputSignal<IRtSpinner.Color>;
7154
- get hostClasses(): Record<string, boolean>;
7155
- get cssDiameter(): string;
7413
+ /** Вид кольца: `border` — с дорожкой, `arc` — дуга без дорожки. Default `border`. */
7414
+ readonly appearance: InputSignal<IRtSpinner.Appearance>;
7415
+ /** Спиннер накрывает позиционированного родителя и стоит в его центре. Default `false`. */
7416
+ readonly overlay: InputSignalWithTransform<boolean, BooleanInput>;
7417
+ /** Полупрозрачная подложка оверлея; без `overlay` не действует. Default `false`. */
7418
+ readonly backdrop: InputSignalWithTransform<boolean, BooleanInput>;
7419
+ /** Круглая плашка с тенью под кольцом. Default `false`. */
7420
+ readonly plate: InputSignalWithTransform<boolean, BooleanInput>;
7156
7421
  static ɵfac: i0.ɵɵFactoryDeclaration<RtSpinnerComponent, never>;
7157
- static ɵcmp: i0.ɵɵComponentDeclaration<RtSpinnerComponent, "rt-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7422
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtSpinnerComponent, "rt-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "plate": { "alias": "plate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7158
7423
  }
7159
7424
 
7160
7425
  /**
@@ -8456,8 +8721,17 @@ declare namespace INotification {
8456
8721
  */
8457
8722
  readonly secondaryAction?: Action;
8458
8723
  readonly filled?: boolean;
8724
+ /**
8725
+ * Сколько тост живёт, в миллисекундах. Не задано — столько, сколько велит тостер;
8726
+ * `null` — таймера нет, тост держится до крестика.
8727
+ */
8728
+ readonly duration?: number | null;
8729
+ /** Полоса срока под тостом: сжимается вместе с таймером и встаёт вместе с ним. */
8730
+ readonly progress?: boolean;
8731
+ /** Свой значок вместо значка severity; `null` — тост без значка. */
8732
+ readonly icon?: IRtIcon.Name | null;
8459
8733
  }
8460
- type Options = Pick<Payload, 'description' | 'meta' | 'action' | 'secondaryAction' | 'filled'>;
8734
+ type Options = Pick<Payload, 'description' | 'meta' | 'action' | 'secondaryAction' | 'filled' | 'duration' | 'progress' | 'icon'>;
8461
8735
  /**
8462
8736
  * Событие шины уведомлений. `type` — строковый дискриминатор (доменные
8463
8737
  * action-перечисления вроде «обновление записи успешно»/«ошибка загрузки
@@ -8578,10 +8852,17 @@ declare class ThemeService {
8578
8852
  }
8579
8853
 
8580
8854
  declare const RT_TOASTER_GAP_PX: number;
8855
+ /**
8856
+ * Значки severity у тоста. Приложение подменяет карту целиком — например, на имена
8857
+ * Material, — а тост со своим `icon` берёт свой значок мимо карты.
8858
+ */
8859
+ declare const RT_TOAST_SEVERITY_ICONS: InjectionToken<Readonly<Record<INotification.Severity, IRtIcon.Name>>>;
8581
8860
  declare namespace IRtToaster {
8582
8861
  type Position = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
8583
8862
  type PositionY = 'top' | 'bottom';
8584
8863
  type PositionX = 'left' | 'center' | 'right';
8864
+ /** `stack` копит тосты стопкой; `replace` — новый тост уводит прежние. */
8865
+ type Mode = 'stack' | 'replace';
8585
8866
  interface Toast {
8586
8867
  readonly id: number;
8587
8868
  readonly severity: INotification.Severity;
@@ -8591,6 +8872,11 @@ declare namespace IRtToaster {
8591
8872
  readonly action?: INotification.Action;
8592
8873
  readonly secondaryAction?: INotification.Action;
8593
8874
  readonly filled?: boolean;
8875
+ readonly duration?: number | null;
8876
+ readonly progress?: boolean;
8877
+ readonly icon?: IRtIcon.Name | null;
8878
+ /** Тост вытеснен новым в режиме `replace` и уходит своей анимацией. */
8879
+ readonly replaced?: boolean;
8594
8880
  }
8595
8881
  interface Height {
8596
8882
  readonly toastId: number;
@@ -8601,7 +8887,13 @@ declare namespace IRtToaster {
8601
8887
  declare class RtToastComponent implements AfterViewInit, OnDestroy {
8602
8888
  #private;
8603
8889
  protected readonly t: Signal<TRtKitLabelMap>;
8604
- protected readonly icon: Signal<IRtIcon.Name>;
8890
+ /** Свой значок тоста важнее карты severity; `null` у тоста значок снимает. */
8891
+ protected readonly icon: Signal<IRtIcon.Name | null>;
8892
+ /** Срок жизни тоста: свой, если задан, иначе тостера; `null` — таймера нет. */
8893
+ protected readonly lifetime: Signal<number | null>;
8894
+ protected readonly showProgress: Signal<boolean>;
8895
+ /** Таймер и полоса срока встают от одного признака, чтобы не разойтись. */
8896
+ protected readonly paused: Signal<boolean>;
8605
8897
  readonly toast: InputSignal<IRtToaster.Toast>;
8606
8898
  readonly index: InputSignal<number>;
8607
8899
  readonly totalToasts: InputSignal<number>;
@@ -8639,6 +8931,8 @@ declare class RtToasterComponent {
8639
8931
  readonly position: InputSignal<IRtToaster.Position>;
8640
8932
  readonly duration: InputSignalWithTransform<number, number | string>;
8641
8933
  readonly visibleToasts: InputSignalWithTransform<number, number | string>;
8934
+ /** `replace` — новый тост уводит прежние их же анимацией ухода, а не копится стопкой. */
8935
+ readonly mode: InputSignal<IRtToaster.Mode>;
8642
8936
  readonly expand: InputSignalWithTransform<boolean, boolean | string>;
8643
8937
  get hostModifierClasses(): Record<string, boolean>;
8644
8938
  get hostStackStyles(): Record<string, string>;
@@ -8651,7 +8945,7 @@ declare class RtToasterComponent {
8651
8945
  protected onHeightRemoved(toastId: number): void;
8652
8946
  protected onDismissed(toastId: number): void;
8653
8947
  static ɵfac: i0.ɵɵFactoryDeclaration<RtToasterComponent, never>;
8654
- static ɵcmp: i0.ɵɵComponentDeclaration<RtToasterComponent, "rt-toaster", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "visibleToasts": { "alias": "visibleToasts"; "required": false; "isSignal": true; }; "expand": { "alias": "expand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8948
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtToasterComponent, "rt-toaster", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "visibleToasts": { "alias": "visibleToasts"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "expand": { "alias": "expand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8655
8949
  }
8656
8950
 
8657
8951
  /**
@@ -8671,6 +8965,7 @@ declare namespace IRtToggleButtonGroup {
8671
8965
  * - `value` — уникальный идентификатор сегмента, эмитится в `valueChange`.
8672
8966
  * - `label` — текстовая подпись (основной контент).
8673
8967
  * - `icon` — опциональная иконка перед лейблом (`<rt-icon>`).
8968
+ * - `glyph` — имя Material вместо `icon`; рисуется так же, как вход `glyph` у `rt-icon`.
8674
8969
  * - `title` — нативный HTML-title (вместо тултип-директивы).
8675
8970
  * - `disabled` — сегмент недоступен сейчас: он остаётся видимым, но нажатия не пропускает.
8676
8971
  * Признак лежит рядом с подписью, а не отдельным списком значений: список запретов
@@ -8681,6 +8976,7 @@ declare namespace IRtToggleButtonGroup {
8681
8976
  readonly value: T;
8682
8977
  readonly label: string;
8683
8978
  readonly icon?: IRtIcon.Name;
8979
+ readonly glyph?: string;
8684
8980
  readonly title?: string;
8685
8981
  readonly disabled?: boolean;
8686
8982
  }
@@ -8788,12 +9084,23 @@ declare namespace IRtToggleSwitch {
8788
9084
  * и наезжает на иконку активного состояния, так что видна всегда иконка того
8789
9085
  * состояния, куда переключится контрол.
8790
9086
  *
9087
+ * Вход `label` рисует подпись после кнопки — элементом `<label>`, связанным с
9088
+ * кнопкой: нажатие на подпись переключает, и она же называет переключатель
9089
+ * скринридеру через `aria-labelledby`.
9090
+ *
9091
+ * Размер и отключение выводятся модификаторами и на хост: свойства размеров
9092
+ * объявлены на хосте, чтобы правило приложения на теге их переопределяло, а
9093
+ * прозрачность отключения гасит переключатель вместе с подписью.
9094
+ *
8791
9095
  * ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
8792
9096
  */
8793
9097
  declare class RtToggleSwitchComponent implements ControlValueAccessor {
8794
9098
  #private;
8795
9099
  protected readonly isOn: WritableSignal<boolean>;
8796
9100
  protected readonly isDisabled: Signal<boolean>;
9101
+ /** Id кнопки: заданный входом или свой — на него указывает подпись. */
9102
+ protected readonly controlId: Signal<string>;
9103
+ protected readonly labelId: string;
8797
9104
  /**
8798
9105
  * BEM-модификаторы для `[rtMod]`. Собираем в .ts, потому что
8799
9106
  * Angular template-parser не поддерживает computed property keys
@@ -8802,6 +9109,8 @@ declare class RtToggleSwitchComponent implements ControlValueAccessor {
8802
9109
  protected readonly bemMods: Signal<Record<string, boolean>>;
8803
9110
  readonly inputId: InputSignal<string | null>;
8804
9111
  readonly ariaLabel: InputSignal<string | null>;
9112
+ /** Подпись после переключателя. Пусто — без подписи, как раньше. */
9113
+ readonly label: InputSignal<string | null>;
8805
9114
  /** Размерный тир трека. */
8806
9115
  readonly size: InputSignal<IRtToggleSwitch.Size>;
8807
9116
  /** Иконка выключенного состояния — в начальной половине трека. Пусто — без иконки. */
@@ -8815,7 +9124,7 @@ declare class RtToggleSwitchComponent implements ControlValueAccessor {
8815
9124
  setDisabledState(disabled: boolean): void;
8816
9125
  protected toggle(): void;
8817
9126
  static ɵfac: i0.ɵɵFactoryDeclaration<RtToggleSwitchComponent, never>;
8818
- static ɵcmp: i0.ɵɵComponentDeclaration<RtToggleSwitchComponent, "rt-toggle-switch", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconOff": { "alias": "iconOff"; "required": false; "isSignal": true; }; "iconOn": { "alias": "iconOn"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
9127
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtToggleSwitchComponent, "rt-toggle-switch", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconOff": { "alias": "iconOff"; "required": false; "isSignal": true; }; "iconOn": { "alias": "iconOn"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
8819
9128
  }
8820
9129
 
8821
9130
  /**
@@ -9280,11 +9589,11 @@ declare function provideRtKit(config: IRtKitConfig.Config): EnvironmentProviders
9280
9589
  /** The name of a styling property the kit declares itself. */
9281
9590
  type TRtDesignTokenName = '--rt-amber-400' | '--rt-border-width-medium' | '--rt-border-width-thick' | '--rt-border-width-thin' | '--rt-bp-lg' | '--rt-bp-md' | '--rt-bp-sm' | '--rt-bp-xl' | '--rt-brand-100' | '--rt-brand-200' | '--rt-brand-300' | '--rt-brand-400' | '--rt-brand-50' | '--rt-brand-500' | '--rt-brand-600' | '--rt-brand-700' | '--rt-brand-800' | '--rt-brand-900' | '--rt-brand-950' | '--rt-btn-tint-active' | '--rt-btn-tint-hover' | '--rt-charcoal-700' | '--rt-charcoal-800' | '--rt-charcoal-900' | '--rt-charcoal-950' | '--rt-charcoal-border' | '--rt-charcoal-border-strong' | '--rt-chat-bubble-date' | '--rt-chat-bubble-in-author' | '--rt-chat-bubble-in-bg' | '--rt-chat-bubble-own-author' | '--rt-chat-bubble-own-bg' | '--rt-chat-status-read' | '--rt-color-action-danger' | '--rt-color-action-danger-active' | '--rt-color-action-danger-hover' | '--rt-color-action-danger-on-surface' | '--rt-color-action-disabled' | '--rt-color-action-info' | '--rt-color-action-info-active' | '--rt-color-action-info-hover' | '--rt-color-action-info-on-surface' | '--rt-color-action-on-danger' | '--rt-color-action-on-disabled' | '--rt-color-action-on-info' | '--rt-color-action-on-primary' | '--rt-color-action-on-secondary' | '--rt-color-action-on-success' | '--rt-color-action-on-warning' | '--rt-color-action-primary' | '--rt-color-action-primary-active' | '--rt-color-action-primary-hover' | '--rt-color-action-primary-on-surface' | '--rt-color-action-primary-soft' | '--rt-color-action-primary-subtle' | '--rt-color-action-secondary' | '--rt-color-action-secondary-active' | '--rt-color-action-secondary-hover' | '--rt-color-action-secondary-on-surface' | '--rt-color-action-success' | '--rt-color-action-success-active' | '--rt-color-action-success-hover' | '--rt-color-action-success-on-surface' | '--rt-color-action-warning' | '--rt-color-action-warning-active' | '--rt-color-action-warning-hover' | '--rt-color-action-warning-on-surface' | '--rt-color-bg-hover' | '--rt-color-bg-inverse' | '--rt-color-bg-nav' | '--rt-color-bg-overlay' | '--rt-color-bg-page' | '--rt-color-bg-page-auth' | '--rt-color-bg-subtle' | '--rt-color-bg-surface' | '--rt-color-bg-surface-auth-card' | '--rt-color-bg-surface-subtle' | '--rt-color-bg-surface-subtle-2' | '--rt-color-border-default' | '--rt-color-border-focus' | '--rt-color-border-strong' | '--rt-color-border-subtle' | '--rt-color-field-fill-underline' | '--rt-color-skeleton-base' | '--rt-color-skeleton-wave' | '--rt-color-state-danger' | '--rt-color-state-danger-bg' | '--rt-color-state-error-text' | '--rt-color-state-info' | '--rt-color-state-info-bg' | '--rt-color-state-success' | '--rt-color-state-success-bg' | '--rt-color-state-success-text' | '--rt-color-state-warning' | '--rt-color-state-warning-bg' | '--rt-color-state-warning-text' | '--rt-color-stepper-current' | '--rt-color-stepper-current-subtle' | '--rt-color-stepper-progress' | '--rt-color-stepper-track' | '--rt-color-table-head-bg' | '--rt-color-text-disabled' | '--rt-color-text-inverse' | '--rt-color-text-link' | '--rt-color-text-link-hover' | '--rt-color-text-muted' | '--rt-color-text-primary' | '--rt-control-height-2xl' | '--rt-control-height-lg' | '--rt-control-height-md' | '--rt-control-height-sm' | '--rt-control-height-xl' | '--rt-control-max-width' | '--rt-control-panel-max-height' | '--rt-control-textarea-min-height-lg' | '--rt-control-textarea-min-height-md' | '--rt-control-textarea-min-height-sm' | '--rt-counter-gap' | '--rt-counter-row-color-border' | '--rt-counter-row-gap' | '--rt-counter-row-hint-color' | '--rt-counter-row-hint-font-size' | '--rt-counter-row-label-color' | '--rt-counter-row-label-font-size' | '--rt-counter-row-padding-y' | '--rt-counter-value-color' | '--rt-counter-value-font-size' | '--rt-counter-value-min-width' | '--rt-danger-50' | '--rt-danger-500' | '--rt-danger-600' | '--rt-danger-700' | '--rt-duration-base' | '--rt-duration-fast' | '--rt-duration-slow' | '--rt-duration-slower' | '--rt-field-error-color' | '--rt-field-error-font-size' | '--rt-field-gap' | '--rt-field-hint-color' | '--rt-field-hint-font-size' | '--rt-field-label-color' | '--rt-field-label-font-size' | '--rt-field-label-font-weight' | '--rt-field-label-help-gap' | '--rt-field-required-color' | '--rt-field-value-color' | '--rt-field-value-empty-color' | '--rt-field-value-font-size' | '--rt-focus-ring-color' | '--rt-focus-ring-color-danger' | '--rt-focus-ring-offset' | '--rt-focus-ring-width' | '--rt-font-family-mono' | '--rt-font-family-sans' | '--rt-font-weight-bold' | '--rt-font-weight-medium' | '--rt-font-weight-regular' | '--rt-font-weight-semibold' | '--rt-gray-350' | '--rt-icon-button-color-bg-hover' | '--rt-icon-button-disabled-color' | '--rt-icon-button-disabled-fill' | '--rt-icon-button-disabled-opacity' | '--rt-info-50' | '--rt-info-500' | '--rt-info-600' | '--rt-info-700' | '--rt-input-border-width' | '--rt-input-color-bg' | '--rt-input-color-bg-disabled' | '--rt-input-color-bg-hover' | '--rt-input-color-border' | '--rt-input-color-border-error' | '--rt-input-color-border-focus' | '--rt-input-color-text' | '--rt-input-color-text-placeholder' | '--rt-input-disabled-opacity' | '--rt-input-focus-outline-offset' | '--rt-input-focus-shadow' | '--rt-input-focus-shadow-error' | '--rt-input-font-size' | '--rt-input-gap' | '--rt-input-height' | '--rt-input-height-lg' | '--rt-input-height-md' | '--rt-input-height-sm' | '--rt-input-icon-color' | '--rt-input-icon-size' | '--rt-input-line-height' | '--rt-input-max-width' | '--rt-input-padding-x' | '--rt-input-padding-y' | '--rt-input-panel-max-height' | '--rt-input-radius' | '--rt-input-transition' | '--rt-leading-none' | '--rt-leading-normal' | '--rt-leading-relaxed' | '--rt-leading-snug' | '--rt-leading-tight' | '--rt-letter-spacing-wide' | '--rt-list-action-color' | '--rt-list-action-color-bg-hover' | '--rt-list-action-color-hover' | '--rt-list-action-divider-height' | '--rt-list-action-gap' | '--rt-list-action-icon-size' | '--rt-list-action-radius' | '--rt-list-action-shadow' | '--rt-list-action-shadow-hover' | '--rt-list-content-padding-bottom' | '--rt-list-copy-button-bg' | '--rt-list-copy-button-bg-hover' | '--rt-list-copy-button-color' | '--rt-list-copy-button-radius' | '--rt-list-copy-button-size' | '--rt-list-empty-icon-size' | '--rt-list-empty-icon-wrap-bg' | '--rt-list-empty-icon-wrap-size' | '--rt-list-empty-title-size' | '--rt-list-empty-title-weight' | '--rt-list-filter-line-height' | '--rt-list-placeholder-grow' | '--rt-list-placeholder-min-height' | '--rt-list-search-color-bg' | '--rt-list-search-color-border' | '--rt-list-search-color-placeholder' | '--rt-list-search-font-size' | '--rt-list-search-gap' | '--rt-list-search-height' | '--rt-list-search-icon-color' | '--rt-list-search-icon-size' | '--rt-list-search-padding-x' | '--rt-list-search-radius' | '--rt-list-search-width' | '--rt-list-selector-label-color' | '--rt-list-settings-icon-color' | '--rt-list-settings-item-bg' | '--rt-list-settings-item-radius' | '--rt-list-table-button-radius' | '--rt-list-table-button-size' | '--rt-list-table-head-divider-color' | '--rt-list-table-icon-color' | '--rt-list-table-icon-size' | '--rt-list-toolbar-gap' | '--rt-list-toolbar-padding-bottom' | '--rt-list-toolbar-padding-top' | '--rt-mat-blue-100' | '--rt-mat-blue-20' | '--rt-mat-blue-40' | '--rt-mat-blue-60' | '--rt-mat-blue-80' | '--rt-mat-blue-active' | '--rt-mat-blue-hover' | '--rt-mat-dark-10' | '--rt-mat-dark-20' | '--rt-mat-dark-30' | '--rt-mat-dark-40' | '--rt-mat-green-10' | '--rt-mat-green-100' | '--rt-mat-green-120' | '--rt-mat-green-20' | '--rt-mat-green-40' | '--rt-mat-green-60' | '--rt-mat-green-80' | '--rt-mat-green-active' | '--rt-mat-green-hover' | '--rt-mat-menu-min-width' | '--rt-mat-menu-sm-icon-size' | '--rt-mat-menu-sm-item-height' | '--rt-mat-navy-100' | '--rt-mat-neutral-0' | '--rt-mat-neutral-10' | '--rt-mat-neutral-100' | '--rt-mat-neutral-15' | '--rt-mat-neutral-20' | '--rt-mat-neutral-25' | '--rt-mat-neutral-30' | '--rt-mat-neutral-35' | '--rt-mat-neutral-40' | '--rt-mat-neutral-5' | '--rt-mat-neutral-60' | '--rt-mat-neutral-80' | '--rt-mat-neutral-active' | '--rt-mat-neutral-hover' | '--rt-mat-orange-10' | '--rt-mat-orange-100' | '--rt-mat-orange-20' | '--rt-mat-orange-40' | '--rt-mat-orange-5' | '--rt-mat-orange-60' | '--rt-mat-orange-70' | '--rt-mat-orange-80' | '--rt-mat-orange-active' | '--rt-mat-orange-hover' | '--rt-mat-overlay-black-32' | '--rt-mat-overlay-black-4' | '--rt-mat-overlay-blue-24' | '--rt-mat-overlay-blue-8' | '--rt-mat-radius-4' | '--rt-mat-radius-5' | '--rt-mat-red-10' | '--rt-mat-red-100' | '--rt-mat-red-20' | '--rt-mat-red-40' | '--rt-mat-red-60' | '--rt-mat-red-80' | '--rt-mat-red-active' | '--rt-mat-red-hover' | '--rt-mat-shadow-fab' | '--rt-mat-shadow-fab-hover' | '--rt-mat-shadow-level-2' | '--rt-nav-caret-size' | '--rt-nav-color-disabled' | '--rt-nav-color-focus' | '--rt-nav-header-color-bg' | '--rt-nav-header-padding' | '--rt-nav-item-color' | '--rt-nav-item-color-bg' | '--rt-nav-item-color-bg-active' | '--rt-nav-item-color-border' | '--rt-nav-item-color-caret' | '--rt-nav-item-color-hover' | '--rt-nav-item-color-pressed' | '--rt-nav-item-content-gap' | '--rt-nav-item-font-size' | '--rt-nav-item-font-weight' | '--rt-nav-item-gap' | '--rt-nav-item-height' | '--rt-nav-item-line-height' | '--rt-nav-item-padding' | '--rt-nav-marker-color' | '--rt-nav-marker-size' | '--rt-nav-panel-color-bg' | '--rt-nav-panel-color-border' | '--rt-nav-panel-column-gap' | '--rt-nav-panel-column-width' | '--rt-nav-panel-columns' | '--rt-nav-panel-group-color' | '--rt-nav-panel-group-content-gap' | '--rt-nav-panel-group-font-size' | '--rt-nav-panel-group-font-weight' | '--rt-nav-panel-group-gap' | '--rt-nav-panel-item-color' | '--rt-nav-panel-item-color-active' | '--rt-nav-panel-item-color-bg-active' | '--rt-nav-panel-item-color-bg-hover' | '--rt-nav-panel-item-content-gap' | '--rt-nav-panel-item-font-size' | '--rt-nav-panel-item-font-weight' | '--rt-nav-panel-item-gap' | '--rt-nav-panel-item-height' | '--rt-nav-panel-item-padding' | '--rt-nav-panel-padding' | '--rt-nav-panel-padding-y' | '--rt-nav-panel-shadow' | '--rt-navy-600' | '--rt-navy-900' | '--rt-neutral-0' | '--rt-neutral-100' | '--rt-neutral-200' | '--rt-neutral-300' | '--rt-neutral-400' | '--rt-neutral-50' | '--rt-neutral-500' | '--rt-neutral-600' | '--rt-neutral-700' | '--rt-neutral-800' | '--rt-neutral-900' | '--rt-neutral-950' | '--rt-opacity-disabled' | '--rt-overlay-amber-16' | '--rt-overlay-black-4' | '--rt-overlay-black-50' | '--rt-overlay-black-8' | '--rt-overlay-brand-24' | '--rt-overlay-brand-8' | '--rt-overlay-danger-16' | '--rt-overlay-menu-bg' | '--rt-overlay-menu-current-bg' | '--rt-overlay-menu-danger-color' | '--rt-overlay-menu-danger-label-color' | '--rt-overlay-menu-item-icon-size' | '--rt-overlay-menu-item-min-height' | '--rt-overlay-menu-item-padding-x' | '--rt-overlay-menu-item-padding-y' | '--rt-overlay-menu-item-weight' | '--rt-overlay-menu-min-width' | '--rt-overlay-menu-padding-y' | '--rt-overlay-menu-radius' | '--rt-overlay-menu-shadow' | '--rt-overlay-menu-sm-item-icon-size' | '--rt-overlay-menu-sm-item-min-height' | '--rt-overlay-navy-70' | '--rt-overlay-select-check-display' | '--rt-overlay-select-option-font-size' | '--rt-overlay-select-option-min-height' | '--rt-overlay-select-panel-border-width' | '--rt-overlay-select-radius' | '--rt-overlay-select-selected-bg' | '--rt-overlay-select-selected-weight' | '--rt-overlay-select-shadow' | '--rt-overlay-tooltip-radius' | '--rt-overlay-tooltip-shadow' | '--rt-overlay-white-25' | '--rt-overlay-white-4' | '--rt-overlay-white-40' | '--rt-overlay-white-50' | '--rt-overlay-white-8' | '--rt-pagination-arrow-color' | '--rt-pagination-arrow-radius' | '--rt-pagination-arrow-shadow' | '--rt-pagination-arrow-size' | '--rt-pagination-box-color-border' | '--rt-pagination-box-color-text' | '--rt-pagination-box-current-color-bg' | '--rt-pagination-box-current-color-border' | '--rt-pagination-box-current-color-text' | '--rt-pagination-box-current-font-weight' | '--rt-pagination-box-radius' | '--rt-pagination-box-size' | '--rt-pagination-field-color-bg' | '--rt-pagination-field-color-border' | '--rt-pagination-field-color-text' | '--rt-pagination-field-height' | '--rt-pagination-field-padding-x' | '--rt-pagination-field-radius' | '--rt-pagination-gap' | '--rt-pagination-justify' | '--rt-pagination-nav-gap' | '--rt-pagination-padding-x' | '--rt-pagination-padding-y' | '--rt-pagination-per-page-gap' | '--rt-pagination-per-page-label-white-space' | '--rt-pagination-range-display' | '--rt-profile-avatar-font-size' | '--rt-profile-avatar-size' | '--rt-profile-item-content-gap' | '--rt-profile-item-font-size' | '--rt-profile-item-font-weight' | '--rt-profile-item-padding-y' | '--rt-profile-item-radius' | '--rt-profile-menu-min-width' | '--rt-profile-menu-padding' | '--rt-profile-menu-shadow' | '--rt-profile-row-inset' | '--rt-profile-theme-icon-padding' | '--rt-radius-2xl' | '--rt-radius-control' | '--rt-radius-full' | '--rt-radius-lg' | '--rt-radius-md' | '--rt-radius-ms' | '--rt-radius-none' | '--rt-radius-sm' | '--rt-radius-xl' | '--rt-radius-xs' | '--rt-shadow-card' | '--rt-shadow-card-soft' | '--rt-shadow-dialog' | '--rt-shadow-focus-ring' | '--rt-shadow-focus-ring-danger' | '--rt-shadow-lg' | '--rt-shadow-md' | '--rt-shadow-nav-panel' | '--rt-shadow-none' | '--rt-shadow-profile-menu' | '--rt-shadow-sm' | '--rt-shadow-status-dot' | '--rt-shadow-step-indicator' | '--rt-shadow-xl' | '--rt-size-1' | '--rt-size-10' | '--rt-size-100' | '--rt-size-12' | '--rt-size-16' | '--rt-size-2' | '--rt-size-20' | '--rt-size-24' | '--rt-size-3' | '--rt-size-30' | '--rt-size-4' | '--rt-size-40' | '--rt-size-5' | '--rt-size-6' | '--rt-size-60' | '--rt-size-64' | '--rt-size-8' | '--rt-slate-300' | '--rt-space-0' | '--rt-space-0-5' | '--rt-space-1' | '--rt-space-10' | '--rt-space-12' | '--rt-space-16' | '--rt-space-2' | '--rt-space-20' | '--rt-space-24' | '--rt-space-2xl' | '--rt-space-2xs' | '--rt-space-3xl' | '--rt-space-4' | '--rt-space-5' | '--rt-space-6' | '--rt-space-8' | '--rt-space-lg' | '--rt-space-md' | '--rt-space-sm' | '--rt-space-xl' | '--rt-space-xs' | '--rt-success-100' | '--rt-success-400' | '--rt-success-50' | '--rt-success-500' | '--rt-success-600' | '--rt-success-700' | '--rt-text-2xl' | '--rt-text-2xs' | '--rt-text-3xl' | '--rt-text-3xs' | '--rt-text-4xl' | '--rt-text-base' | '--rt-text-lg' | '--rt-text-md' | '--rt-text-sm' | '--rt-text-xl' | '--rt-text-xs' | '--rt-textarea-line-height' | '--rt-textarea-min-height' | '--rt-textarea-min-height-lg' | '--rt-textarea-min-height-md' | '--rt-textarea-min-height-sm' | '--rt-textarea-padding-y' | '--rt-toggle-color-border' | '--rt-toggle-color-icon' | '--rt-toggle-color-thumb' | '--rt-toggle-color-track' | '--rt-toggle-color-track-on' | '--rt-toggle-shadow-border' | '--rt-toggle-shadow-thumb' | '--rt-warning-50' | '--rt-warning-500' | '--rt-warning-600' | '--rt-warning-700' | '--rt-yellow-400' | '--rt-z-base' | '--rt-z-dropdown' | '--rt-z-fixed' | '--rt-z-modal' | '--rt-z-modal-backdrop' | '--rt-z-popover' | '--rt-z-sticky' | '--rt-z-tooltip';
9282
9591
  /** The name of a consumer's handle — a property the kit deliberately does not declare. */
9283
- type TRtConsumerHandleName = '--rt-aside-bg' | '--rt-aside-width' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-page-header-bg' | '--rt-table-actions-bg' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
9592
+ type TRtConsumerHandleName = '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-aside-bg' | '--rt-aside-content-inset' | '--rt-aside-error-margin-block' | '--rt-aside-footer-gap' | '--rt-aside-footer-inset' | '--rt-aside-footer-justify' | '--rt-aside-footer-margin' | '--rt-aside-header-inset' | '--rt-aside-header-title-leading' | '--rt-aside-width' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-bg' | '--rt-dialog-border' | '--rt-dialog-content-max-height' | '--rt-dialog-content-padding' | '--rt-dialog-footer-border' | '--rt-dialog-footer-padding' | '--rt-dialog-header-border' | '--rt-dialog-header-padding' | '--rt-dialog-title-font-size' | '--rt-dialog-title-transform' | '--rt-dialog-title-weight' | '--rt-dialog-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-glyph-font' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-page-header-bg' | '--rt-table-actions-bg' | '--rt-tag-color-bg' | '--rt-tag-color-border' | '--rt-tag-color-text' | '--rt-tag-letter-spacing' | '--rt-tag-padding-block' | '--rt-tag-padding-inline' | '--rt-toast-action-color' | '--rt-toast-bg' | '--rt-toast-border-color' | '--rt-toast-close-color' | '--rt-toast-color' | '--rt-toast-filled-danger-bg' | '--rt-toast-filled-danger-border-color' | '--rt-toast-filled-danger-color' | '--rt-toast-filled-info-bg' | '--rt-toast-filled-info-border-color' | '--rt-toast-filled-info-color' | '--rt-toast-filled-success-bg' | '--rt-toast-filled-success-border-color' | '--rt-toast-filled-success-color' | '--rt-toast-filled-warning-bg' | '--rt-toast-filled-warning-border-color' | '--rt-toast-filled-warning-color' | '--rt-toast-icon-color' | '--rt-toast-progress-color' | '--rt-toast-progress-height' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
9284
9593
  /** All the styling properties declared by the kit. */
9285
9594
  declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
9286
9595
  /** All the consumer's handles: the value comes from the application, until then the fallback works. */
9287
9596
  declare const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[];
9288
9597
 
9289
- export { BreakpointsService, CATEGORY_ORDER, DATA_LIST_PAGE_SIZES, DATA_TABLE_FILTER_MENU_OPERATORS, DATA_TABLE_FILTER_OPERATOR_GLYPHS, ERtCalendarDayState, ERtDataTableCellColor, ERtDataTableColumnType, ERtDataTableFilterType, ERtDateRangePreset, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAccordion, IRtActionBar, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtConfirmPopover, IRtDataTable, IRtDatePicker, IRtDateRange, IRtDynamicList, IRtDynamicSelector, IRtExpansionPanel, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtImageCropper, IRtImageUpload, IRtInput, IRtKitConfig, IRtLogo, IRtMenu, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSideMenu, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ACTION_BAR_LEAVE_MS, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DATA_TABLE_PRESET_FROM_HOST, RT_DATA_TABLE_ROW_HOST, RT_DATA_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICONS_MATERIAL_BASE_URL, RT_ICON_MATERIAL_FILL_SYMBOL_ID_PREFIX, RT_ICON_MATERIAL_PRESET_SELECTOR, RT_ICON_MATERIAL_SYMBOL_ID_PREFIX, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_IMAGE_CROPPER_HANDLES, RT_IMAGE_CROPPER_KEY_STEP, RT_IMAGE_CROPPER_KEY_STEP_LARGE, RT_IMAGE_CROPPER_QUALITY, RT_KIT_CONFIG, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_PRESET_MATERIAL_CLASS, RT_RADIUS_DEFAULT, RT_RADIUS_STEPS, RT_SIDE_MENU_DEFAULT_ID, RT_SIDE_MENU_SETTINGS_CONFIG, RT_SIDE_MENU_WIDTH_MAX, RT_SIDE_MENU_WIDTH_MIN, RT_SIDE_MENU_WIDTH_STEP, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAccordionComponent, RtActionBarComponent, RtActionBarHolderComponent, RtActionBarService, RtAsideComponent, RtAsideErrorBoxComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDataListAdditionalRowActionsDirective, RtDataListComponent, RtDataListCustomCellsDirective, RtDataListRowActionsDirective, RtDataListSelectorsDirective, RtDataListSettingsAsideComponent, RtDataListToolbarActionsDirective, RtDataListToolbarComponent, RtDataListToolbarSelectorsDirective, RtDataTableAdditionalRowActionsDirective, RtDataTableCellComponent, RtDataTableComponent, RtDataTableConfigService, RtDataTableCustomCellsDirective, RtDataTableFilterCellComponent, RtDataTableHeaderCellComponent, RtDataTableIconDirective, RtDataTableRowActionsDirective, RtDataTableRowClickDirective, RtDataTableSelectorsDirective, RtDataTableStopRowClickDirective, RtDatePickerComponent, RtDateRangeComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtDynamicInputComponent, RtDynamicListComponent, RtDynamicListToolbarActionsDirective, RtDynamicListToolbarSelectorsDirective, RtDynamicSelectorComponent, RtDynamicSelectorListComponent, RtDynamicSelectorPopupComponent, RtDynamicSelectorRowControlsDirective, RtDynamicSelectorRowTitleDirective, RtEmptyStateComponent, RtExpansionPanelComponent, RtExpansionPanelContentDirective, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtImageCropperComponent, RtImageUploadComponent, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMenuItemIconDirective, RtMessageComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRadioButtonComponent, RtRadiusDirective, RtRippleDirective, RtRouteAsideComponent, RtRowHasActionsPipe, RtScrollAreaComponent, RtScrollAreaContentDirective, RtScrollAreaFooterDirective, RtScrollAreaHeaderDirective, RtSectionNavComponent, RtSelectComponent, RtSelectTriggerDirective, RtSideMenuComponent, RtSideMenuFooterDirective, RtSideMenuHeaderDirective, RtSideMenuIconDirective, RtSideMenuSettingsService, RtSideMenuSubItemComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableFilterHeaderComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, RtThemeScopeDirective, RtThemeToggleComponent, RtThreadListComponent, RtThreadListFiltersDirective, RtThreadListRowDirective, RtThreadListSearchDirective, RtTimelineComponent, RtToastComponent, RtToasterComponent, RtToggleButtonGroupComponent, RtToggleSwitchComponent, RtToolbarCenterDirective, RtToolbarComponent, RtToolbarLeftDirective, RtToolbarRightDirective, RtTooltipComponent, RtTooltipDirective, RtTruncateMiddlePipe, RtWelcomeDialogComponent, RtWorkspaceAsideDirective, RtWorkspaceCenterDirective, RtWorkspaceComponent, RtWorkspaceDesktopOnlyDirective, RtWorkspaceDetailsComponent, RtWorkspaceListDirective, SEARCH_DEBOUNCE_MS, ThemeService, ariaSortOf, breakNode, categoryOf, clampSideMenuWidth, coerceQuillDeltaOutput, comparePropNames, cropArea, dataListColumnsFromItems, dataListExcludedAfterEntity, dataListExcludedAfterPageMarked, dataListExcludedAfterPageUnmarked, dataListMoveItem, dataListPageAfterSizeChange, dataListPageCount, dataListPageSizes, dataListSelectedAfterPage, dataListSettingItems, dataListSettingsChanged, dataListToggleHidden, dataTableAllOnPage, dataTableAnyOnPage, dataTableAriaSort, dataTableCellText, dataTableCellValue, dataTableColumnFilter, dataTableCopyButtonSide, dataTableDayToIso, dataTableDefaultOperator, dataTableFiltersWithOperator, dataTableFiltersWithValue, dataTableIconName, dataTableIsoToDay, dataTableKeysOf, dataTableNextSortOrder, dataTablePresetEntities, dataTableSortActive, dataTableWithEntity, dataTableWithPageEntities, dataTableWithoutPageEntities, defaultColumnItems, deriveFileTitle, displayedColumnKeys, drawnSideMenuWidth, fieldDelta, fileNameFromUrl, filterCellsOf, filterOf, filterSideMenuItems, filterValueOf, filtersWithOperator, filtersWithValue, fitSource, formatFileSize, frameInField, frameRatio, getFileTypeIcon, handleDirection, iconsName, indexFromParam, indexFromScroll, initialFrame, isColumnSortable, isImageFile, keyDelta, moveFrame, nextPhotoIndex, nextSort, normalizeQuillDelta, normalizeSideMenuId, normalizeSideMenuSettings, omitSideMenuSettings, paramFromIndex, parseInline, parseMarkdown, parseSideMenuSettingsRecord, patchSideMenuSettings, pinnedSideMenuItems, provideRtIcons, provideRtKit, provideRtKitLabels, provideRtSideMenuSettings, readSideMenuSettings, reportedSideMenuWidth, resizeFrame, resolveColumns, resultFileName, resultQuality, resultType, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitDefault, rtKitLabel, searchDebounce, shouldRenderPhoto, sideMenuIconName, sideMenuIdsToExpand, sideMenuWidthByKey, sortDirectionOf, splitSideMenuTitle, startOperatorOf, startSideMenuWidthDrag, stepSideMenuHighlight, unpairedSideMenuIcons, uploadState, walkSideMenuItems, withoutLockedHidden };
9290
- export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDataTableIconContext, IRtDataTableRowContext, IRtDataTableRowHost, IRtDialogConfig, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPicture, IRtPictureSource, IRtSideMenuFavoritesIcons, IRtSideMenuIconContext, IRtSideMenuSettingsConfig, IRtSubMenuWidthDragHooks, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, TIconCategory, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDataTableAriaSort, TRtDataTableFilterValue, TRtDataTableFilters, TRtDesignTokenName, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtPointerListen, TRtRadius, TRtSideMenuSettingsRecord, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTableFilterInput, TRtTableFilterValue, TRtTextareaResize };
9598
+ export { BreakpointsService, CATEGORY_ORDER, DATA_LIST_PAGE_SIZES, DATA_TABLE_FILTER_MENU_OPERATORS, DATA_TABLE_FILTER_OPERATOR_GLYPHS, ERtCalendarDayState, ERtDataTableCellColor, ERtDataTableColumnType, ERtDataTableFilterType, ERtDateRangePreset, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAccordion, IRtActionBar, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtConfirmPopover, IRtDataTable, IRtDatePicker, IRtDateRange, IRtDynamicList, IRtDynamicSelector, IRtExpansionPanel, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtImageCropper, IRtImageUpload, IRtInput, IRtKitConfig, IRtLogo, IRtMenu, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSideMenu, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ACTION_BAR_LEAVE_MS, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DATA_TABLE_PRESET_FROM_HOST, RT_DATA_TABLE_ROW_HOST, RT_DATA_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICONS_MATERIAL_BASE_URL, RT_ICON_GLYPH_STRATEGY, RT_ICON_MATERIAL_FILL_SYMBOL_ID_PREFIX, RT_ICON_MATERIAL_PRESET_SELECTOR, RT_ICON_MATERIAL_SYMBOL_ID_PREFIX, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_IMAGE_CROPPER_HANDLES, RT_IMAGE_CROPPER_KEY_STEP, RT_IMAGE_CROPPER_KEY_STEP_LARGE, RT_IMAGE_CROPPER_QUALITY, RT_KIT_CONFIG, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_PRESET_MATERIAL_CLASS, RT_RADIUS_DEFAULT, RT_RADIUS_STEPS, RT_SIDE_MENU_DEFAULT_ID, RT_SIDE_MENU_SETTINGS_CONFIG, RT_SIDE_MENU_WIDTH_MAX, RT_SIDE_MENU_WIDTH_MIN, RT_SIDE_MENU_WIDTH_STEP, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RT_TOAST_SEVERITY_ICONS, RtAccordionComponent, RtActionBarComponent, RtActionBarHolderComponent, RtActionBarService, RtAsideComponent, RtAsideErrorBoxComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDataListAdditionalRowActionsDirective, RtDataListComponent, RtDataListCustomCellsDirective, RtDataListRowActionsDirective, RtDataListSelectorsDirective, RtDataListSettingsAsideComponent, RtDataListToolbarActionsDirective, RtDataListToolbarComponent, RtDataListToolbarSelectorsDirective, RtDataTableAdditionalRowActionsDirective, RtDataTableCellComponent, RtDataTableComponent, RtDataTableConfigService, RtDataTableCustomCellsDirective, RtDataTableFilterCellComponent, RtDataTableHeaderCellComponent, RtDataTableIconDirective, RtDataTableRowActionsDirective, RtDataTableRowClickDirective, RtDataTableSelectorsDirective, RtDataTableStopRowClickDirective, RtDatePickerComponent, RtDateRangeComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogContentComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtDynamicInputComponent, RtDynamicListComponent, RtDynamicListToolbarActionsDirective, RtDynamicListToolbarSelectorsDirective, RtDynamicSelectorComponent, RtDynamicSelectorListComponent, RtDynamicSelectorPopupComponent, RtDynamicSelectorRowControlsDirective, RtDynamicSelectorRowTitleDirective, RtEmptyStateComponent, RtExpansionPanelComponent, RtExpansionPanelContentDirective, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconFontService, RtIconRegistry, RtImageCropperComponent, RtImageUploadComponent, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMenuItemIconDirective, RtMessageComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRadioButtonComponent, RtRadiusDirective, RtRippleDirective, RtRouteAsideComponent, RtRowHasActionsPipe, RtScrollAreaComponent, RtScrollAreaContentDirective, RtScrollAreaFooterDirective, RtScrollAreaHeaderDirective, RtSectionNavComponent, RtSelectComponent, RtSelectTriggerDirective, RtSideMenuComponent, RtSideMenuFooterDirective, RtSideMenuHeaderDirective, RtSideMenuIconDirective, RtSideMenuSettingsService, RtSideMenuSubItemComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableFilterHeaderComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, RtThemeScopeDirective, RtThemeToggleComponent, RtThreadListComponent, RtThreadListFiltersDirective, RtThreadListRowDirective, RtThreadListSearchDirective, RtTimelineComponent, RtToastComponent, RtToasterComponent, RtToggleButtonGroupComponent, RtToggleSwitchComponent, RtToolbarCenterDirective, RtToolbarComponent, RtToolbarLeftDirective, RtToolbarRightDirective, RtTooltipComponent, RtTooltipDirective, RtTruncateMiddlePipe, RtWelcomeDialogComponent, RtWorkspaceAsideDirective, RtWorkspaceCenterDirective, RtWorkspaceComponent, RtWorkspaceDesktopOnlyDirective, RtWorkspaceDetailsComponent, RtWorkspaceListDirective, SEARCH_DEBOUNCE_MS, ThemeService, ariaSortOf, breakNode, categoryOf, clampSideMenuWidth, coerceQuillDeltaOutput, comparePropNames, cropArea, dataListColumnsFromItems, dataListExcludedAfterEntity, dataListExcludedAfterPageMarked, dataListExcludedAfterPageUnmarked, dataListMoveItem, dataListPageAfterSizeChange, dataListPageCount, dataListPageSizes, dataListSelectedAfterPage, dataListSettingItems, dataListSettingsChanged, dataListToggleHidden, dataTableAllOnPage, dataTableAnyOnPage, dataTableAriaSort, dataTableCellText, dataTableCellValue, dataTableColumnFilter, dataTableCopyButtonSide, dataTableDayToIso, dataTableDefaultOperator, dataTableFiltersWithOperator, dataTableFiltersWithValue, dataTableIconName, dataTableIsoToDay, dataTableKeysOf, dataTableNextSortOrder, dataTablePresetEntities, dataTableSortActive, dataTableWithEntity, dataTableWithPageEntities, dataTableWithoutPageEntities, defaultColumnItems, deriveFileTitle, displayedColumnKeys, drawnSideMenuWidth, fieldDelta, fileNameFromUrl, filterCellsOf, filterOf, filterSideMenuItems, filterValueOf, filtersWithOperator, filtersWithValue, fitSource, formatFileSize, frameInField, frameRatio, getFileTypeIcon, handleDirection, iconsName, indexFromParam, indexFromScroll, initialFrame, isColumnSortable, isImageFile, isKitIconName, keyDelta, materialPairOf, moveFrame, nextPhotoIndex, nextSort, normalizeQuillDelta, normalizeSideMenuId, normalizeSideMenuSettings, omitSideMenuSettings, paramFromIndex, parseInline, parseMarkdown, parseSideMenuSettingsRecord, patchSideMenuSettings, pinnedSideMenuItems, provideRtIcons, provideRtKit, provideRtKitLabels, provideRtSideMenuSettings, readSideMenuSettings, reportedSideMenuWidth, resizeFrame, resolveColumns, resolveIconGlyph, resultFileName, resultQuality, resultType, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitDefault, rtKitLabel, searchDebounce, shouldRenderPhoto, sideMenuIconName, sideMenuIdsToExpand, sideMenuWidthByKey, sortDirectionOf, splitSideMenuTitle, startOperatorOf, startSideMenuWidthDrag, stepSideMenuHighlight, unpairedSideMenuIcons, uploadState, walkSideMenuItems, withoutLockedHidden };
9599
+ export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDataTableIconContext, IRtDataTableRowContext, IRtDataTableRowHost, IRtDialogConfig, IRtIconsOptions, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPicture, IRtPictureSource, IRtSideMenuFavoritesIcons, IRtSideMenuIconContext, IRtSideMenuSettingsConfig, IRtSubMenuWidthDragHooks, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, TIconCategory, TRtAsideCloseRequest, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDataTableAriaSort, TRtDataTableFilterValue, TRtDataTableFilters, TRtDesignTokenName, TRtDialogAutoFocus, TRtDialogFooterAlign, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtPointerListen, TRtRadius, TRtSideMenuSettingsRecord, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTableFilterInput, TRtTableFilterValue, TRtTextareaResize };