@rt-tools/ui-kit-v2 0.5.0 → 0.7.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 (111) hide show
  1. package/README.md +87 -7
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +1929 -994
  3. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/rt-tools-ui-kit-v2-0.7.0.tgz +0 -0
  6. package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
  7. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
  8. package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
  9. package/src/lib/components/aside/rt-aside.component.scss +107 -105
  10. package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
  11. package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
  12. package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
  13. package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
  14. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
  15. package/src/lib/components/button/rt-button.directive.scss +319 -280
  16. package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
  17. package/src/lib/components/card/rt-card.component.scss +53 -45
  18. package/src/lib/components/chat/rt-chat.component.scss +312 -306
  19. package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
  20. package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
  21. package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
  22. package/src/lib/components/container/rt-container.component.scss +91 -87
  23. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  24. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  25. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  26. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  27. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  28. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  29. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  30. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  31. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  32. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  33. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  34. package/src/lib/components/field/rt-field.component.scss +63 -61
  35. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  36. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  37. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  38. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  39. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  40. package/src/lib/components/header/rt-header.component.scss +61 -55
  41. package/src/lib/components/icon/CONTEXT.md +16 -10
  42. package/src/lib/components/icon/rt-icon.component.scss +14 -12
  43. package/src/lib/components/icon-button/CONTEXT.md +4 -2
  44. package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
  45. package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
  46. package/src/lib/components/input/CONTEXT.md +9 -7
  47. package/src/lib/components/input/rt-input.component.scss +102 -98
  48. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  49. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  50. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  51. package/src/lib/components/markdown-text/CONTEXT.md +40 -0
  52. package/src/lib/components/markdown-text/rt-markdown-text.component.scss +130 -0
  53. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  54. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  55. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  56. package/src/lib/components/message/rt-message.component.scss +53 -49
  57. package/src/lib/components/message-composer/CONTEXT.md +1 -1
  58. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  59. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  60. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  61. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  62. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  63. package/src/lib/components/note/rt-note.component.scss +15 -11
  64. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  65. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  66. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  67. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  68. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  69. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  70. package/src/lib/components/rich-editor/CONTEXT.md +1 -1
  71. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  72. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  73. package/src/lib/components/select/rt-select.component.scss +146 -138
  74. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  75. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  76. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  77. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  78. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  79. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  80. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +39 -30
  81. package/src/lib/components/table/rt-table.component.scss +260 -252
  82. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  83. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  84. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  85. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  86. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  87. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  88. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  89. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  90. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  91. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  92. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  93. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  94. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  95. package/src/lib/components/toolbar/rt-toolbar.component.scss +63 -54
  96. package/src/lib/components/tooltip/rt-tooltip.component.scss +24 -15
  97. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  98. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  99. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  100. package/src/styles/_index.scss +11 -0
  101. package/src/styles/_layers.scss +22 -0
  102. package/src/styles/_login.scss +87 -85
  103. package/src/styles/_mixins.scss +1 -1
  104. package/src/styles/_primitives.scss +138 -66
  105. package/src/styles/_scrollbar.scss +21 -19
  106. package/src/styles/_semantic.scss +155 -62
  107. package/src/styles/_theme-dark-rules.scss +23 -0
  108. package/src/styles/_theme-dark.scss +61 -42
  109. package/styles/tokens.css +754 -418
  110. package/types/rt-tools-ui-kit-v2.d.ts +292 -103
  111. package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InputSignal, WritableSignal, Renderer2, InjectionToken, Signal, EnvironmentProviders, InputSignalWithTransform, OutputEmitterRef, OnInit, OnDestroy, TemplateRef, ElementRef, AfterViewInit, DestroyRef, AfterContentInit, PipeTransform, ModelSignal } from '@angular/core';
2
+ import { InputSignal, WritableSignal, Renderer2, InjectionToken, Signal, EnvironmentProviders, PipeTransform, InputSignalWithTransform, OutputEmitterRef, OnInit, OnDestroy, TemplateRef, ElementRef, AfterViewInit, DestroyRef, AfterContentInit, ModelSignal } from '@angular/core';
3
3
  import { OverlayRef, ComponentType, ConnectedPosition } from '@angular/cdk/overlay';
4
4
  import { Observable, MonoTypeOperatorFunction } from 'rxjs';
5
5
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
6
6
  import { ControlValueAccessor, ValidationErrors, FormGroup, FormControl, AbstractControl } from '@angular/forms';
7
7
  import { Router, ActivatedRoute, Params, CanDeactivateFn } from '@angular/router';
8
- import { IPageModel, ISortModel, ListSortOrderType } from '@rt-tools/utils';
8
+ import { IPageModel, ISortModel, TListSortOrderType } from '@rt-tools/utils';
9
9
  import { CdkTable, CdkColumnDef, CdkTableDataSourceInput } from '@angular/cdk/table';
10
10
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
11
11
 
@@ -15,7 +15,7 @@ import { CdkDragDrop } from '@angular/cdk/drag-drop';
15
15
  * - `md` — 540px (`--rt-aside-width-md`, дефолт)
16
16
  * - `lg` — 720px (`--rt-aside-width-lg`)
17
17
  */
18
- type IRtAsideSize = 'sm' | 'md' | 'lg';
18
+ type TRtAsideSize = 'sm' | 'md' | 'lg';
19
19
  /**
20
20
  * Раскладка контентной зоны side-sheet:
21
21
  * - `default` — контентная зона сама скроллится при overflow (штатный режим);
@@ -23,7 +23,7 @@ type IRtAsideSize = 'sm' | 'md' | 'lg';
23
23
  * полоса вкладок прибита, скроллится только контент активной вкладки
24
24
  * (`rt-tabs__content`).
25
25
  */
26
- type IRtAsideContentLayout = 'default' | 'tabs';
26
+ type TRtAsideContentLayout = 'default' | 'tabs';
27
27
  /**
28
28
  * Презентационный styled-frame для side-sheet.
29
29
  *
@@ -45,8 +45,8 @@ type IRtAsideContentLayout = 'default' | 'tabs';
45
45
  * cross-encapsulation хака.
46
46
  */
47
47
  declare class RtAsideComponent {
48
- readonly size: InputSignal<IRtAsideSize>;
49
- readonly contentLayout: InputSignal<IRtAsideContentLayout>;
48
+ readonly size: InputSignal<TRtAsideSize>;
49
+ readonly contentLayout: InputSignal<TRtAsideContentLayout>;
50
50
  readonly width: InputSignal<string | null>;
51
51
  readonly ariaLabel: InputSignal<string | null>;
52
52
  static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideComponent, never>;
@@ -99,7 +99,7 @@ declare class RtAsideRef<T = unknown> {
99
99
  /**
100
100
  * Позиционирование side-sheet — у какого края viewport "приклеена" панель.
101
101
  */
102
- type IRtAsidePosition = 'right' | 'left';
102
+ type TRtAsidePosition = 'right' | 'left';
103
103
  /**
104
104
  * Конфигурация открытия side-sheet через `RtAsideService.open()`.
105
105
  */
@@ -115,7 +115,7 @@ interface IRtAsideConfig<TData = unknown> {
115
115
  /** Закрывать aside по ESC. По дефолту `true`. */
116
116
  closeOnEscape?: boolean;
117
117
  /** К какому краю viewport "приклеить" панель. По дефолту `"right"`. */
118
- position?: IRtAsidePosition;
118
+ position?: TRtAsidePosition;
119
119
  }
120
120
  /**
121
121
  * Программный API для открытия side-sheet поверх CDK Overlay.
@@ -201,7 +201,7 @@ declare const RT_ASIDE_DATA: InjectionToken<unknown>;
201
201
  * среди ключей много `aria`-подписей, и пустая там означает кнопку без имени
202
202
  * для скринридера.
203
203
  *
204
- * Набор задаёт и **перечень ключей**: `RtKitLabelKey` выводится отсюда, поэтому
204
+ * Набор задаёт и **перечень ключей**: `TRtKitLabelKey` выводится отсюда, поэтому
205
205
  * опечатка в ключе не доживает до рантайма.
206
206
  *
207
207
  * Места вида `{{name}}` заполняются параметрами — их принимает `rtKitLabel()`.
@@ -345,13 +345,13 @@ declare const RT_KIT_LABELS_EN: {
345
345
  * что стоит умолчанием, — поэтому ключа, которого кит не рисует, не существует,
346
346
  * а опечатка не доживает до рантайма.
347
347
  */
348
- type RtKitLabelKey = keyof typeof RT_KIT_LABELS_EN;
348
+ type TRtKitLabelKey = keyof typeof RT_KIT_LABELS_EN;
349
349
  /**
350
350
  * Подстановки в места вида `{{name}}`. Их просят пять подписей: строка
351
351
  * сравнения, имя скачиваемого файла, «страница N из M», диапазон записей и
352
352
  * подпись раздела в разработке.
353
353
  */
354
- type RtKitLabelParams = Readonly<Record<string, string | number>>;
354
+ type TRtKitLabelParams = Readonly<Record<string, string | number>>;
355
355
  /**
356
356
  * Чем кит получает подпись. Даёт её приложение — оно одно знает и язык
357
357
  * продукта, и его формулировки.
@@ -361,7 +361,7 @@ type RtKitLabelParams = Readonly<Record<string, string | number>>;
361
361
  * английское умолчание, потому что пустая `aria`-подпись означает кнопку без
362
362
  * имени для скринридера, а это хуже чужого языка.
363
363
  */
364
- type RtKitTranslator = (key: RtKitLabelKey, params?: RtKitLabelParams) => string;
364
+ type TRtKitTranslator = (key: TRtKitLabelKey, params?: TRtKitLabelParams) => string;
365
365
  /**
366
366
  * Все подписи разом, ключ → готовая строка.
367
367
  *
@@ -370,7 +370,7 @@ type RtKitTranslator = (key: RtKitLabelKey, params?: RtKitLabelParams) => string
370
370
  * Подписи с подстановками в карту не входят — им нужны параметры, и они берутся
371
371
  * через `rtKitLabel()`.
372
372
  */
373
- type RtKitLabelMap = Readonly<Record<RtKitLabelKey, string>>;
373
+ type TRtKitLabelMap = Readonly<Record<TRtKitLabelKey, string>>;
374
374
 
375
375
  /**
376
376
  * Функция, которой кит получает подписи. Её отдаёт приложение —
@@ -380,7 +380,7 @@ type RtKitLabelMap = Readonly<Record<RtKitLabelKey, string>>;
380
380
  * на ходу, кладёт в него новую функцию, и всё, что от неё считано,
381
381
  * пересчитывается само.
382
382
  */
383
- declare const RT_KIT_TRANSLATOR: InjectionToken<Signal<RtKitTranslator>>;
383
+ declare const RT_KIT_TRANSLATOR: InjectionToken<Signal<TRtKitTranslator>>;
384
384
  /**
385
385
  * Активная локаль. Ею кит форматирует даты — больше ни для чего она ему не
386
386
  * нужна.
@@ -399,7 +399,7 @@ declare const RT_KIT_LOCALE: InjectionToken<Signal<string>>;
399
399
  * Подпись, которой переводчик не дал (вернул пустое или упал), берётся
400
400
  * английской: пустая `aria`-подпись означает кнопку без имени для скринридера.
401
401
  */
402
- declare const RT_KIT_LABELS: InjectionToken<Signal<RtKitLabelMap>>;
402
+ declare const RT_KIT_LABELS: InjectionToken<Signal<TRtKitLabelMap>>;
403
403
  /**
404
404
  * Одна подпись, а не вся карта.
405
405
  *
@@ -418,7 +418,7 @@ declare const RT_KIT_LABELS: InjectionToken<Signal<RtKitLabelMap>>;
418
418
  * умолчание тут показало бы ошибку там, где её не случилось.
419
419
  * @param params Подстановки — значением или сигналом, если они меняются.
420
420
  */
421
- declare function rtKitLabel(key: RtKitLabelKey | '' | Signal<RtKitLabelKey | ''>, params?: RtKitLabelParams | Signal<RtKitLabelParams>): Signal<string>;
421
+ declare function rtKitLabel(key: TRtKitLabelKey | '' | Signal<TRtKitLabelKey | ''>, params?: TRtKitLabelParams | Signal<TRtKitLabelParams>): Signal<string>;
422
422
  /**
423
423
  * Отдаёт киту подписи приложения.
424
424
  *
@@ -443,10 +443,23 @@ declare function rtKitLabel(key: RtKitLabelKey | '' | Signal<RtKitLabelKey | ''>
443
443
  * без неё кит форматирует даты по-английски.
444
444
  */
445
445
  declare function provideRtKitLabels(source: {
446
- readonly translator: Signal<RtKitTranslator>;
446
+ readonly translator: Signal<TRtKitTranslator>;
447
447
  readonly locale?: Signal<string>;
448
448
  }): EnvironmentProviders;
449
449
 
450
+ /**
451
+ * Подпись кита по ключу — для значений, приходящих из контекста шаблона.
452
+ *
453
+ * Шаблон не зовёт методов: имя раздела приходит элементом цикла, и посчитать подпись заранее
454
+ * нечем. Пайп чистый, поэтому функция-переводчик передаётся ему вторым доводом — сменившись,
455
+ * она пересчитывает подпись сама.
456
+ */
457
+ declare class RtKitLabelPipe implements PipeTransform {
458
+ transform(key: TRtKitLabelKey, translator: TRtKitTranslator, params?: TRtKitLabelParams): string;
459
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtKitLabelPipe, never>;
460
+ static ɵpipe: i0.ɵɵPipeDeclaration<RtKitLabelPipe, "rtKitLabel", true>;
461
+ }
462
+
450
463
  /**
451
464
  * Имена иконок rt-icon. Набор лежит в `assets/icons` пакета, откуда сборка
452
465
  * приложения кладёт его туда, куда указывает `provideRtIcons()`. Большинство
@@ -455,8 +468,8 @@ declare function provideRtKitLabels(source: {
455
468
  *
456
469
  * При добавлении новой иконки: положить SVG в `assets/icons` пакета, добавить
457
470
  * slug сюда, прогнать pnpm exec eslint --fix + pnpm exec prettier --write по этому файлу.
458
- * Имя без файла роняет весь набор: реестр собирает спрайт одним `forkJoin`, и один отказ
459
- * гасит иконки во всём приложении.
471
+ * Имя без файла гасит только свой значок: реестр ходит за каждым именем отдельно, и промах
472
+ * виден пустым местом на экране, а не отказом в прогоне.
460
473
  *
461
474
  * Аннотация типа намеренно не указывается: явный `readonly string[]` потерял бы узкий
462
475
  * литеральный тип, нужный для `IRtIcon.Name` (см. `rt-icon.model.ts`). `as const`
@@ -482,17 +495,17 @@ declare namespace IRtIcon {
482
495
  * Порядок фиксирован — соответствует порядку отображения в Catalog story (rt-icon.stories.ts).
483
496
  *
484
497
  * Аннотация типа намеренно не указывается: явный `readonly string[]` потерял бы узкий
485
- * литеральный тип, нужный для {@link IIconCategory}. `as const` сохраняет литеральные ключи.
498
+ * литеральный тип, нужный для {@link TIconCategory}. `as const` сохраняет литеральные ключи.
486
499
  */
487
500
  declare const CATEGORY_ORDER: readonly ["Navigation", "Alignment & Sorting", "Status", "Time & Calendar", "Communication", "Documents", "People", "Commerce", "Custom", "Misc"];
488
501
  /** Литеральный union из {@link CATEGORY_ORDER}. */
489
- type IIconCategory = (typeof CATEGORY_ORDER)[number];
502
+ type TIconCategory = (typeof CATEGORY_ORDER)[number];
490
503
  /**
491
504
  * Правило маппинга имени иконки в категорию.
492
505
  * Порядок правил в {@link ICON_CATEGORY_RULES} важен: первое совпавшее правило выигрывает.
493
506
  */
494
507
  interface IIconCategoryRule {
495
- readonly category: IIconCategory;
508
+ readonly category: TIconCategory;
496
509
  readonly match: (name: string) => boolean;
497
510
  }
498
511
  /**
@@ -506,7 +519,7 @@ declare const ICON_CATEGORY_RULES: readonly IIconCategoryRule[];
506
519
  * Возвращает категорию для имени иконки.
507
520
  * Первое совпавшее правило в {@link ICON_CATEGORY_RULES} выигрывает; иначе — `Misc`.
508
521
  */
509
- declare function categoryOf(name: IRtIcon.Name): IIconCategory;
522
+ declare function categoryOf(name: IRtIcon.Name): TIconCategory;
510
523
 
511
524
  declare class RtIconComponent {
512
525
  #private;
@@ -517,14 +530,28 @@ declare class RtIconComponent {
517
530
  readonly name: InputSignal<IRtIcon.Name>;
518
531
  readonly size: InputSignal<IRtIcon.Size>;
519
532
  readonly color: InputSignal<IRtIcon.Color>;
520
- readonly rotate: InputSignalWithTransform<number | null, IRotateInput>;
533
+ readonly rotate: InputSignalWithTransform<number | null, TRotateInput>;
534
+ constructor();
521
535
  static ɵfac: i0.ɵɵFactoryDeclaration<RtIconComponent, never>;
522
536
  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; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
523
537
  }
524
- type IRotateInput = number | string | null;
538
+ type TRotateInput = number | string | null;
539
+
540
+ /**
541
+ * Имена, которыми набор значков виден со стороны страницы.
542
+ *
543
+ * Отдельный файл, а не константы реестра: те же имена читает обвязка снимков витрины, а она идёт
544
+ * под Playwright и ни одного объявления Angular поднять не может. Своя копия там уже стояла —
545
+ * второе объявление того же значения расходится с первым молча: ожидание набора ищет один узел,
546
+ * а реестр создаёт другой, и кадр выходит без значков.
547
+ */
548
+ /** Селектор inline-sprite, создаваемого один раз при первом обращении. */
549
+ declare const RT_ICON_SPRITE_ID: string;
550
+ /** Префикс `id` для inline-sprite символов. Изолирует от внешних `id` на странице. */
551
+ declare const RT_ICON_SYMBOL_ID_PREFIX: string;
525
552
 
526
553
  /**
527
- * Регистрирует все SVG-иконки `rt-icon` в sprite-реестре при бутстрапе приложения.
554
+ * Называет адрес, по которому приложение опубликовало набор значков `rt-icon`.
528
555
  *
529
556
  * ```typescript
530
557
  * export function withCoreProviders(): EnvironmentProviders {
@@ -536,12 +563,11 @@ type IRotateInput = number | string | null;
536
563
  * }
537
564
  * ```
538
565
  *
539
- * Внутри: forkJoin по всем именам из `rt-icon-names.ts`, склейка в `<svg><symbol>...`,
540
- * вставка в `<body>` первым элементом. Компонент `<rt-icon>` через `<use href="#rt-icon-NAME">`
541
- * рендерит иконку из inline-sprite без дополнительных HTTP-запросов.
566
+ * Вперёд отсюда не грузится ничего: значок едет тогда, когда его попросила разметка, и платит
567
+ * за него та страница, которая его нарисовала. Сборка спрайта и загрузка — дело `RtIconRegistry`.
542
568
  *
543
- * Сами файлы приложение публикует само — набор лежит в `assets/icons` пакета, и
544
- * сборка копирует его в свою статику.
569
+ * Сами файлы приложение публикует само — набор лежит в `assets/icons` пакета, и сборка копирует
570
+ * его в свою статику.
545
571
  *
546
572
  * @param baseUrl Адрес опубликованного набора. По умолчанию `/icons`.
547
573
  */
@@ -555,15 +581,19 @@ declare function provideRtIcons(baseUrl?: string): EnvironmentProviders;
555
581
  declare const RT_ICONS_BASE_URL: InjectionToken<string>;
556
582
  declare class RtIconRegistry {
557
583
  #private;
584
+ constructor();
558
585
  /**
559
586
  * Имя symbol для `<use href="#X">`. Возвращает строку с ведущим `#`.
560
587
  */
561
588
  symbolHref(name: IRtIcon.Name): string;
562
589
  /**
563
- * Загружает все SVG из реестра и склеивает их в inline-sprite в `<body>`.
564
- * Вызывается из `provideAppInitializer`. Повторные вызовы — no-op (shareReplay).
590
+ * Просит значок по имени: грузит файл и дописывает `<symbol>` в спрайт страницы.
591
+ *
592
+ * Ответа зовущий не ждёт и потока не получает: разметка рисует ссылку на символ сразу, а
593
+ * браузер дорисовывает её, когда символ приезжает. Подписка живёт здесь и только здесь —
594
+ * иначе каждая разметка гасила бы её сама, а таких мест у значка два.
565
595
  */
566
- preloadAll(): Observable<void>;
596
+ request(name: IRtIcon.Name): void;
567
597
  static ɵfac: i0.ɵɵFactoryDeclaration<RtIconRegistry, never>;
568
598
  static ɵprov: i0.ɵɵInjectableDeclaration<RtIconRegistry>;
569
599
  }
@@ -651,7 +681,7 @@ declare class RtAsideHeaderComponent {
651
681
  #private;
652
682
  /** Текст заголовка — рендерится в `<h2>`. Null/пустая строка вместе с
653
683
  * `[loading]=true` показывают skeleton вместо title. */
654
- protected readonly t: Signal<RtKitLabelMap>;
684
+ protected readonly t: Signal<TRtKitLabelMap>;
655
685
  readonly title: InputSignal<string | null>;
656
686
  /**
657
687
  * Мелкий приглушённый надзаголовок НАД основным title (контекст действия:
@@ -737,7 +767,7 @@ declare namespace IRtInput {
737
767
  * раскладку под локаль, а разбор строки руками означал бы своё поле ввода
738
768
  * времени рядом с китом.
739
769
  */
740
- type Type = 'text' | 'password' | 'email' | 'time';
770
+ type Type = 'text' | 'password' | 'email' | 'time' | 'url';
741
771
  /** Размерный вариант поля (высота). Общий для всего input-семейства. */
742
772
  type Size = 'sm' | 'md' | 'lg';
743
773
  }
@@ -921,7 +951,7 @@ declare namespace IRtAutocomplete {
921
951
  */
922
952
  declare class RtAutocompleteComponent<TItem> extends RtFormControlBase<TItem | null> {
923
953
  #private;
924
- protected readonly t: Signal<RtKitLabelMap>;
954
+ protected readonly t: Signal<TRtKitLabelMap>;
925
955
  protected readonly panelId: string;
926
956
  protected readonly popover: Signal<RtPopoverDirective>;
927
957
  protected readonly fieldEl: Signal<ElementRef<HTMLInputElement> | undefined>;
@@ -996,7 +1026,7 @@ declare class RtBarListComponent {
996
1026
 
997
1027
  declare class RtBottomSheetComponent {
998
1028
  #private;
999
- protected readonly t: Signal<RtKitLabelMap>;
1029
+ protected readonly t: Signal<TRtKitLabelMap>;
1000
1030
  protected readonly dragDeltaY: WritableSignal<number>;
1001
1031
  protected readonly dragging: WritableSignal<boolean>;
1002
1032
  readonly open: InputSignal<boolean>;
@@ -1194,6 +1224,95 @@ declare function fileNameFromUrl(url: string | null | undefined, fallback?: stri
1194
1224
  */
1195
1225
  declare function formatFileSize(bytes: number | null | undefined): string;
1196
1226
 
1227
+ /**
1228
+ * Дерево узлов показа разметки: то, во что разборщик переводит присланный текст.
1229
+ *
1230
+ * Перечень узлов закрыт. Разборщик не умеет строить ничего, кроме перечисленного здесь, —
1231
+ * поэтому сырой HTML, картинки и адреса чужих схем в вывод не попадают вовсе: для них тут
1232
+ * просто нет узла, и они остаются видимым текстом.
1233
+ */
1234
+ /** Род блока — то, чем текст разделён по вертикали. */
1235
+ declare enum ERtMarkdownBlock {
1236
+ Heading = "heading",
1237
+ Paragraph = "paragraph",
1238
+ List = "list",
1239
+ Quote = "quote",
1240
+ Code = "code",
1241
+ Table = "table"
1242
+ }
1243
+ /** Род куска строки — то, чем текст размечен внутри абзаца. */
1244
+ declare enum ERtMarkdownInline {
1245
+ Text = "text",
1246
+ Strong = "strong",
1247
+ Emphasis = "emphasis",
1248
+ Strike = "strike",
1249
+ Code = "code",
1250
+ Link = "link",
1251
+ Break = "break"
1252
+ }
1253
+ /** Кусок строки: либо сам текст, либо разметка вокруг вложенных кусков. */
1254
+ interface IRtMarkdownInlineNode {
1255
+ readonly kind: ERtMarkdownInline;
1256
+ /** Текст куска. У разметки вокруг вложенного — пустая строка. */
1257
+ readonly text: string;
1258
+ /** Вложенные куски у жирного, курсива и зачёркнутого; у остальных пусто. */
1259
+ readonly children: readonly IRtMarkdownInlineNode[];
1260
+ /** Адрес ссылки. Стоит только у ссылки и только разрешённой схемы. */
1261
+ readonly href: string | null;
1262
+ }
1263
+ /** Пункт списка: свои куски строки и уровень вложенности, считая от нуля. */
1264
+ interface IRtMarkdownListItem {
1265
+ readonly level: number;
1266
+ /**
1267
+ * Тот же уровень строкой — для модификатора разметки.
1268
+ *
1269
+ * Директива модификатора числа не принимает: любое нестроковое значение она сводит к
1270
+ * признаку и даёт класс без значения, то есть один и тот же на все уровни.
1271
+ */
1272
+ readonly levelName: string;
1273
+ readonly content: readonly IRtMarkdownInlineNode[];
1274
+ }
1275
+ /** Блок показа. Поля, которых у этого рода нет, стоят пустыми. */
1276
+ interface IRtMarkdownBlockNode {
1277
+ readonly kind: ERtMarkdownBlock;
1278
+ /** Уровень заголовка, от 1 до 6. У остальных родов — 0. */
1279
+ readonly level: number;
1280
+ /** Тот же уровень строкой — для модификатора разметки; у остальных родов пусто. */
1281
+ readonly levelName: string;
1282
+ /** Куски строки у заголовка, абзаца и цитаты. */
1283
+ readonly content: readonly IRtMarkdownInlineNode[];
1284
+ /** Пункты списка. */
1285
+ readonly items: readonly IRtMarkdownListItem[];
1286
+ /** Признак нумерованного списка. */
1287
+ readonly ordered: boolean;
1288
+ /** Текст блока кода как есть, без разбора разметки внутри. */
1289
+ readonly code: string;
1290
+ /** Слово языка у ограды блока кода. Разбирается, но на вид не влияет. */
1291
+ readonly language: string | null;
1292
+ /** Строка заголовка таблицы: ячейка — свои куски строки. */
1293
+ readonly head: readonly (readonly IRtMarkdownInlineNode[])[];
1294
+ /** Прочие строки таблицы. */
1295
+ readonly rows: readonly (readonly (readonly IRtMarkdownInlineNode[])[])[];
1296
+ }
1297
+
1298
+ /** Перенос строки внутри абзаца: одиночный перенос остаётся переносом. */
1299
+ declare function breakNode(): IRtMarkdownInlineNode;
1300
+ /**
1301
+ * Разбирает строку на куски показа.
1302
+ *
1303
+ * @param source Строка без переносов.
1304
+ * @returns Куски строки по порядку; у строки без разметки — один кусок текста.
1305
+ */
1306
+ declare function parseInline(source: string): IRtMarkdownInlineNode[];
1307
+
1308
+ /**
1309
+ * Разбирает текст груза в дерево узлов показа.
1310
+ *
1311
+ * @param source Текст записи. Пустота и отсутствие значения дают пустой список блоков.
1312
+ * @returns Блоки показа по порядку.
1313
+ */
1314
+ declare function parseMarkdown(source: string | null | undefined): IRtMarkdownBlockNode[];
1315
+
1197
1316
  /**
1198
1317
  * Готовая начинка `<picture>`: источники по форматам и запасной кадр на `<img>`.
1199
1318
  *
@@ -1270,7 +1389,7 @@ declare function searchDebounce(): MonoTypeOperatorFunction<string>;
1270
1389
  * Режим тулбара: `full` — весь whitelist, `minimal` — жирный + два списка
1271
1390
  * (G113: чаты оператора/админа/саппорта).
1272
1391
  */
1273
- type IRtRichEditorToolbar = 'full' | 'minimal';
1392
+ type TRtRichEditorToolbar = 'full' | 'minimal';
1274
1393
  /**
1275
1394
  * Rich-редактор чата на Quill. Наследует CVA-ядро input-семейства
1276
1395
  * (`RtFormControlBase`) — плагается в reactive-форму. Quill грузится **лениво**
@@ -1280,10 +1399,16 @@ type IRtRichEditorToolbar = 'full' | 'minimal';
1280
1399
  declare class RtRichEditorComponent extends RtFormControlBase<IQuillDelta | null> implements AfterViewInit, OnDestroy {
1281
1400
  #private;
1282
1401
  protected readonly editorHost: Signal<ElementRef<HTMLElement>>;
1402
+ /**
1403
+ * Смонтирована ли начинка редактора. Пока нет, хост несёт признак недостроенности: съёмке
1404
+ * витрины и любой другой проверке снаружи иначе нечем отличить недостроенный редактор от
1405
+ * достроенного пустого — оба выглядят пустым местом.
1406
+ */
1407
+ protected readonly mounted: WritableSignal<boolean>;
1283
1408
  protected readonly hasValue: Signal<boolean>;
1284
1409
  readonly placeholder: InputSignal<string>;
1285
1410
  /** Набор кнопок форматирования; сужает и принимаемые форматы (вставка из буфера). */
1286
- readonly toolbar: InputSignal<IRtRichEditorToolbar>;
1411
+ readonly toolbar: InputSignal<TRtRichEditorToolbar>;
1287
1412
  /** Enter без Shift в редакторе — сигнал отправки (Shift+Enter остаётся переносом). */
1288
1413
  readonly enterPressed: OutputEmitterRef<void>;
1289
1414
  readonly displayText: Signal<string>;
@@ -1413,7 +1538,7 @@ declare class RtChatComponent {
1413
1538
  * Данные локали для `DatePipe` регистрирует приложение: без них пайп падает
1414
1539
  * `Missing locale data`, и кит за это не отвечает.
1415
1540
  */
1416
- protected readonly t: Signal<RtKitLabelMap>;
1541
+ protected readonly t: Signal<TRtKitLabelMap>;
1417
1542
  protected readonly locale: Signal<string>;
1418
1543
  /**
1419
1544
  * Скролл-контейнер треда — для автопрокрутки к последнему сообщению.
@@ -1501,7 +1626,7 @@ declare class RtChatComponent {
1501
1626
  */
1502
1627
  readonly formatting: InputSignalWithTransform<boolean, BooleanInput>;
1503
1628
  /** Набор кнопок rich-редактора (проброс до `rt-rich-editor` через композер). */
1504
- readonly formattingToolbar: InputSignal<IRtRichEditorToolbar>;
1629
+ readonly formattingToolbar: InputSignal<TRtRichEditorToolbar>;
1505
1630
  /**
1506
1631
  * Растягивать чат на всю высоту контейнера: тред занимает свободное место,
1507
1632
  * композер прижат к низу. По умолчанию выключен (тред с фикс. max-height).
@@ -1674,7 +1799,7 @@ declare class RtCheckboxComponent implements ControlValueAccessor {
1674
1799
 
1675
1800
  declare class RtCollapsibleTextComponent implements OnDestroy {
1676
1801
  #private;
1677
- protected readonly t: Signal<RtKitLabelMap>;
1802
+ protected readonly t: Signal<TRtKitLabelMap>;
1678
1803
  protected readonly textRef: Signal<ElementRef<HTMLElement> | undefined>;
1679
1804
  protected readonly expanded: WritableSignal<boolean>;
1680
1805
  protected readonly overflowing: WritableSignal<boolean>;
@@ -1823,6 +1948,13 @@ declare class RtContainerComponent {
1823
1948
  static ɵcmp: i0.ɵɵComponentDeclaration<RtContainerComponent, "rt-container", never, { "mobileLeftNav": { "alias": "mobileLeftNav"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, { "backdropClick": "backdropClick"; "rightOpened": "rightOpened"; "rightClosed": "rightClosed"; }, ["headerTpl", "leftSidenavTpl", "rightSidenavTpl", "toolbarLeftTpl", "toolbarCenterTpl", "toolbarRightTpl", "contentTpl"], never, true, never>;
1824
1949
  }
1825
1950
 
1951
+ /**
1952
+ * Маркеры слотов оболочки — своим файлом, а не рядом с панельными директивами.
1953
+ *
1954
+ * Панельные директивы берут сам компонент оболочки значением, а компонент объявляет маркеры в
1955
+ * своих импортах: вместе это круг «оболочка → директивы → оболочка». Маркеры пусты и не знают
1956
+ * об оболочке ничего, поэтому расходятся с ней без потерь.
1957
+ */
1826
1958
  /**
1827
1959
  * Маркер-директива для содержимого хедера `rt-container`.
1828
1960
  *
@@ -1935,6 +2067,7 @@ declare class RtContainerContentDirective {
1935
2067
  static ɵfac: i0.ɵɵFactoryDeclaration<RtContainerContentDirective, never>;
1936
2068
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtContainerContentDirective, "[rtContainerContent]", never, {}, {}, never, never, true, never>;
1937
2069
  }
2070
+
1938
2071
  /**
1939
2072
  * Driver-директива для управления левой sidenav через шаблонную ссылку.
1940
2073
  *
@@ -2161,10 +2294,16 @@ declare abstract class RtRouteAsideComponent<T> implements OnInit {
2161
2294
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtRouteAsideComponent<any>, never, never, {}, {}, never, never, true, never>;
2162
2295
  }
2163
2296
 
2164
- /** Панель, которая умеет ответить на вопрос «можно ли уступить место». */
2297
+ /**
2298
+ * Панель, которая умеет ответить на вопрос «можно ли уступить место».
2299
+ *
2300
+ * Объявлена рядом с учётом панелей, а не рядом с гардом: гард берёт учёт значением, и
2301
+ * объявление у него замыкало круг «учёт → гард → учёт».
2302
+ */
2165
2303
  interface IRtAsideDeactivate {
2166
2304
  canDeactivate(): Observable<boolean>;
2167
2305
  }
2306
+
2168
2307
  declare const rtAsideUnsavedGuard: CanDeactivateFn<IRtAsideDeactivate | null>;
2169
2308
 
2170
2309
  /**
@@ -2227,8 +2366,8 @@ declare class RtCounterComponent implements ControlValueAccessor {
2227
2366
  * берёт компонент, у которого есть доступ к текущей локали; перекрываются
2228
2367
  * поштучно через input'ы `decreaseLabel` / `increaseLabel`.
2229
2368
  */
2230
- declare const RT_COUNTER_DECREASE_KEY: RtKitLabelKey;
2231
- declare const RT_COUNTER_INCREASE_KEY: RtKitLabelKey;
2369
+ declare const RT_COUNTER_DECREASE_KEY: TRtKitLabelKey;
2370
+ declare const RT_COUNTER_INCREASE_KEY: TRtKitLabelKey;
2232
2371
 
2233
2372
  /**
2234
2373
  * Строка списка со счётчиком: подпись с пояснением слева, контрол справа,
@@ -2266,7 +2405,7 @@ declare namespace IRtDatePicker {
2266
2405
  */
2267
2406
  declare class RtDatePickerComponent extends RtFormControlBase<string> {
2268
2407
  #private;
2269
- protected readonly t: Signal<RtKitLabelMap>;
2408
+ protected readonly t: Signal<TRtKitLabelMap>;
2270
2409
  protected readonly fieldEl: Signal<ElementRef<HTMLInputElement> | undefined>;
2271
2410
  protected readonly hasValue: Signal<boolean>;
2272
2411
  readonly displayText: Signal<string>;
@@ -2309,7 +2448,7 @@ declare class RtDetailRowComponent {
2309
2448
  static ɵcmp: i0.ɵɵComponentDeclaration<RtDetailRowComponent, "rt-detail-row", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2310
2449
  }
2311
2450
 
2312
- type IRtDialogSize = 'sm' | 'md' | 'lg';
2451
+ type TRtDialogSize = 'sm' | 'md' | 'lg';
2313
2452
  /**
2314
2453
  * Презентационный styled-frame для модалки поверх CDK Overlay.
2315
2454
  *
@@ -2344,7 +2483,7 @@ declare class RtDialogComponent {
2344
2483
  * - `md` — 660px (`--rt-dialog-width-md`, дефолт)
2345
2484
  * - `lg` — 860px (`--rt-dialog-width-lg`)
2346
2485
  */
2347
- readonly size: InputSignal<IRtDialogSize>;
2486
+ readonly size: InputSignal<TRtDialogSize>;
2348
2487
  /** Override ширины через CSS-property `--rt-dialog-width`. Имеет приоритет над `size`. */
2349
2488
  readonly width: InputSignal<string | null>;
2350
2489
  /** ARIA-label для dialog-обёртки (если нет видимого заголовка). */
@@ -2514,7 +2653,7 @@ declare const RT_DIALOG_DATA: InjectionToken<unknown>;
2514
2653
  declare class RtDialogHeaderComponent {
2515
2654
  #private;
2516
2655
  /** Текст заголовка — рендерится в `<h2>`. */
2517
- protected readonly t: Signal<RtKitLabelMap>;
2656
+ protected readonly t: Signal<TRtKitLabelMap>;
2518
2657
  readonly title: InputSignal<string>;
2519
2658
  /** Показывать кнопку закрытия в углу заголовка. Дефолт `true`. */
2520
2659
  readonly closable: InputSignalWithTransform<boolean, BooleanInput>;
@@ -2598,7 +2737,7 @@ declare namespace IRtField {
2598
2737
  * страницы ещё неизвестен, и готовый текст остался бы на языке по умолчанию
2599
2738
  * даже под переведённой подписью поля. Переводит сам компонент поля.
2600
2739
  */
2601
- declare const RT_FIELD_DEFAULT_ERROR_KEYS: Readonly<Record<string, RtKitLabelKey>>;
2740
+ declare const RT_FIELD_DEFAULT_ERROR_KEYS: Readonly<Record<string, TRtKitLabelKey>>;
2602
2741
  /** Текст-плейсхолдер read-only поля без значения. */
2603
2742
  declare const RT_FIELD_EMPTY_VALUE: string;
2604
2743
 
@@ -2618,7 +2757,7 @@ declare const RT_FIELD_EMPTY_VALUE: string;
2618
2757
  */
2619
2758
  declare class RtFieldComponent implements AfterContentInit {
2620
2759
  #private;
2621
- protected readonly t: Signal<RtKitLabelMap>;
2760
+ protected readonly t: Signal<TRtKitLabelMap>;
2622
2761
  protected readonly projectedControl: Signal<RtFormControlBase<unknown> | undefined>;
2623
2762
  protected readonly projectedHint: Signal<RtFieldHintDirective | undefined>;
2624
2763
  /** Итоговый id: явный controlId контрола важнее авто-id. */
@@ -2697,7 +2836,7 @@ declare namespace IRtFileCard {
2697
2836
  */
2698
2837
  declare class RtFileCardComponent {
2699
2838
  /** Имя цветной иконки типа файла по расширению. */
2700
- protected readonly t: Signal<RtKitLabelMap>;
2839
+ protected readonly t: Signal<TRtKitLabelMap>;
2701
2840
  protected readonly iconName: Signal<IRtIcon.Name>;
2702
2841
  /** Заголовок карточки, выведенный из имени файла (без расширения, разделители → пробелы). */
2703
2842
  protected readonly title: Signal<string>;
@@ -2984,7 +3123,7 @@ declare class RtFilterControlComponent<T = string> {
2984
3123
  * страницы в dark).
2985
3124
  */
2986
3125
  declare class RtHeaderComponent {
2987
- protected readonly t: Signal<RtKitLabelMap>;
3126
+ protected readonly t: Signal<TRtKitLabelMap>;
2988
3127
  readonly canGoBack: InputSignal<boolean>;
2989
3128
  /** Показывать action-иконку «Пригласить пользователя» слева от колокола. */
2990
3129
  readonly showInvite: InputSignalWithTransform<boolean, boolean | string>;
@@ -3097,7 +3236,7 @@ declare class RtInfoItemComponent {
3097
3236
  * Все размеры/цвета — через `--rt-input-*` semantic-токены.
3098
3237
  */
3099
3238
  declare class RtInputComponent extends RtFormControlBase<string> {
3100
- protected readonly t: Signal<RtKitLabelMap>;
3239
+ protected readonly t: Signal<TRtKitLabelMap>;
3101
3240
  protected readonly fieldEl: Signal<ElementRef<HTMLInputElement> | undefined>;
3102
3241
  protected readonly isPasswordVisible: WritableSignal<boolean>;
3103
3242
  protected readonly hasValue: Signal<boolean>;
@@ -3145,7 +3284,7 @@ declare class RtInputComponent extends RtFormControlBase<string> {
3145
3284
  */
3146
3285
  declare class RtInputNumberComponent extends RtFormControlBase<number | null> {
3147
3286
  #private;
3148
- protected readonly t: Signal<RtKitLabelMap>;
3287
+ protected readonly t: Signal<TRtKitLabelMap>;
3149
3288
  protected readonly fieldEl: Signal<ElementRef<HTMLInputElement> | undefined>;
3150
3289
  protected readonly displayValue: WritableSignal<string>;
3151
3290
  protected readonly hasValue: Signal<boolean>;
@@ -3253,6 +3392,30 @@ declare class RtLogoComponent {
3253
3392
  static ɵcmp: i0.ɵɵComponentDeclaration<RtLogoComponent, "rt-logo", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "aspect": { "alias": "aspect"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3254
3393
  }
3255
3394
 
3395
+ /**
3396
+ * Текст, написанный разметкой, показанный узлами.
3397
+ *
3398
+ * Перечень разметки зашит в разборщике и входом не задаётся: вход у компонента один — сам
3399
+ * текст. Настраивать нечего, значит нечем и ослабить.
3400
+ *
3401
+ * Присланная строка в страницу не отдаётся ни разу: компонент рисует дерево узлов, которое
3402
+ * вернул разбор, и другого пути у текста внутрь страницы нет. Поэтому сырой HTML, картинки и
3403
+ * адреса чужих схем показываются видимым текстом — узла для них разборщик не строит.
3404
+ *
3405
+ * Таблица рисуется своей разметкой, а не таблицей кита: та объявляет колонки заранее
3406
+ * директивами, а число столбцов здесь приходит из текста и заранее не известно никому.
3407
+ */
3408
+ declare class RtMarkdownTextComponent {
3409
+ /** Роды блоков в шаблоне: сравнение идёт со значением перечисления, а не со строкой. */
3410
+ protected readonly blockKind: typeof ERtMarkdownBlock;
3411
+ /** Роды кусков строки в шаблоне. */
3412
+ protected readonly inlineKind: typeof ERtMarkdownInline;
3413
+ protected readonly blocks: Signal<readonly IRtMarkdownBlockNode[]>;
3414
+ readonly text: InputSignal<string | null>;
3415
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtMarkdownTextComponent, never>;
3416
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtMarkdownTextComponent, "rt-markdown-text", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
3417
+ }
3418
+
3256
3419
  /**
3257
3420
  * Контракты `rt-menu` — dropdown-меню действий (триггер «…» + плавающая панель
3258
3421
  * с пунктами `rt-menu-item`). Один корневой неймспейс с префиксом `I`.
@@ -3452,7 +3615,7 @@ declare class RtMessageComponent {
3452
3615
  * передайте пустую строку как `[icon]` — она будет falsy и не «победит» default.
3453
3616
  * Полное отключение делается через severity `secondary` / `neutral`.
3454
3617
  */
3455
- protected readonly t: Signal<RtKitLabelMap>;
3618
+ protected readonly t: Signal<TRtKitLabelMap>;
3456
3619
  protected readonly effectiveIcon: Signal<IRtIcon.Name | null>;
3457
3620
  /** Семантическая палитра. По умолчанию `info` (синий info-banner). */
3458
3621
  readonly severity: InputSignal<IRtTag.Severity>;
@@ -3484,7 +3647,7 @@ interface IComposerFormShape {
3484
3647
  */
3485
3648
  declare class RtMessageComposerComponent {
3486
3649
  #private;
3487
- protected readonly t: Signal<RtKitLabelMap>;
3650
+ protected readonly t: Signal<TRtKitLabelMap>;
3488
3651
  protected readonly placeholderText: Signal<string>;
3489
3652
  protected readonly fileInput: Signal<ElementRef<HTMLInputElement> | undefined>;
3490
3653
  protected readonly form: FormGroup<IComposerFormShape>;
@@ -3504,7 +3667,7 @@ declare class RtMessageComposerComponent {
3504
3667
  /** Rich-режим: вместо textarea — Quill-редактор, отправка уходит delta-каналом. */
3505
3668
  readonly formatting: InputSignalWithTransform<boolean, BooleanInput>;
3506
3669
  /** Набор кнопок rich-редактора (проброс в `rt-rich-editor`). */
3507
- readonly toolbar: InputSignal<IRtRichEditorToolbar>;
3670
+ readonly toolbar: InputSignal<TRtRichEditorToolbar>;
3508
3671
  /** Минимальная высота textarea в строках. */
3509
3672
  readonly minRows: InputSignalWithTransform<number, NumberInput>;
3510
3673
  /** Максимальная высота textarea в строках (дальше — скролл). */
@@ -3570,7 +3733,7 @@ declare class RtMoneyRowComponent {
3570
3733
  */
3571
3734
  declare class RtMultiselectComponent<TValue> extends RtFormControlBase<ReadonlyArray<TValue>> {
3572
3735
  #private;
3573
- protected readonly t: Signal<RtKitLabelMap>;
3736
+ protected readonly t: Signal<TRtKitLabelMap>;
3574
3737
  protected readonly panelId: string;
3575
3738
  protected readonly placeholderText: Signal<string>;
3576
3739
  protected readonly popover: Signal<RtPopoverDirective>;
@@ -3790,7 +3953,9 @@ declare namespace IRtPageHeaderView {
3790
3953
  */
3791
3954
  declare class RtPageHeaderComponent {
3792
3955
  #private;
3793
- protected readonly t: Signal<RtKitLabelMap>;
3956
+ /** Переводчик для чистого пайпа подписи: шаблон отдаёт его вторым доводом. */
3957
+ protected readonly translate: Signal<TRtKitTranslator>;
3958
+ protected readonly t: Signal<TRtKitLabelMap>;
3794
3959
  protected readonly mobileNavPopoverRef: Signal<RtPopoverDirective | undefined>;
3795
3960
  /** Форма пункта решается один раз здесь, а не ветвлениями в шаблоне. */
3796
3961
  protected readonly sections: Signal<ReadonlyArray<IRtPageHeaderView.Section>>;
@@ -3820,12 +3985,6 @@ declare class RtPageHeaderComponent {
3820
3985
  readonly itemClick: OutputEmitterRef<string>;
3821
3986
  readonly userClick: OutputEmitterRef<void>;
3822
3987
  constructor();
3823
- /**
3824
- * Подпись раздела в разработке. Методом, а не сигналом: имя раздела приходит
3825
- * элементом цикла, и до него подписи ещё нет. Метод читает сигнал
3826
- * переводчика, поэтому смена языка перерисовывает разметку и зовёт его заново.
3827
- */
3828
- protected sectionInProgressLabel(label: string): string;
3829
3988
  protected onItemClick(id: string): void;
3830
3989
  protected onUserClick(): void;
3831
3990
  /** Аккордеон мобильной панели: тумблер раскрытия раздела по его id. */
@@ -3888,7 +4047,7 @@ declare namespace IRtPhotoViewer {
3888
4047
  */
3889
4048
  declare class RtPhotoViewerComponent {
3890
4049
  #private;
3891
- protected readonly t: Signal<RtKitLabelMap>;
4050
+ protected readonly t: Signal<TRtKitLabelMap>;
3892
4051
  protected readonly track: Signal<ElementRef<HTMLElement> | undefined>;
3893
4052
  protected readonly photos: readonly IRtPhotoViewer.Photo[];
3894
4053
  /** Панель правки под дорожкой; там, где кадр только смотрят, её нет */
@@ -3935,7 +4094,7 @@ declare namespace IRtPagination {
3935
4094
  }
3936
4095
 
3937
4096
  declare class RtPaginationComponent {
3938
- protected readonly t: Signal<RtKitLabelMap>;
4097
+ protected readonly t: Signal<TRtKitLabelMap>;
3939
4098
  protected readonly perPageSelectOptions: Signal<ReadonlyArray<IRtSelect.Option<number>>>;
3940
4099
  /**
3941
4100
  * Диапазон записей и номер страницы — с подстановками, поэтому карте подписей
@@ -3991,7 +4150,7 @@ declare class RtSectionNavComponent {
3991
4150
  static ɵcmp: i0.ɵɵComponentDeclaration<RtSectionNavComponent, "rt-section-nav", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
3992
4151
  }
3993
4152
 
3994
- type IBooleanInput = boolean | string;
4153
+ type TBooleanInput = boolean | string;
3995
4154
  /**
3996
4155
  * Single-select dropdown с опциональным filter input.
3997
4156
  *
@@ -4006,7 +4165,7 @@ type IBooleanInput = boolean | string;
4006
4165
  */
4007
4166
  declare class RtSelectComponent<TValue> extends RtFormControlBase<TValue | null> {
4008
4167
  #private;
4009
- protected readonly t: Signal<RtKitLabelMap>;
4168
+ protected readonly t: Signal<TRtKitLabelMap>;
4010
4169
  protected readonly panelId: string;
4011
4170
  protected readonly filterPlaceholderText: Signal<string>;
4012
4171
  protected readonly popover: Signal<RtPopoverDirective>;
@@ -4021,7 +4180,7 @@ declare class RtSelectComponent<TValue> extends RtFormControlBase<TValue | null>
4021
4180
  readonly options: InputSignal<ReadonlyArray<IRtSelect.Option<TValue>>>;
4022
4181
  readonly placeholder: InputSignal<string>;
4023
4182
  readonly iconLeft: InputSignal<IRtIcon.Name | null>;
4024
- readonly filter: InputSignalWithTransform<boolean, IBooleanInput>;
4183
+ readonly filter: InputSignalWithTransform<boolean, TBooleanInput>;
4025
4184
  /** Пусто — берётся переведённая подпись по умолчанию */
4026
4185
  readonly filterPlaceholder: InputSignal<string>;
4027
4186
  readonly selectionChange: OutputEmitterRef<TValue | null>;
@@ -4037,9 +4196,9 @@ declare class RtSelectComponent<TValue> extends RtFormControlBase<TValue | null>
4037
4196
  static ɵcmp: i0.ɵɵComponentDeclaration<RtSelectComponent<any>, "rt-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
4038
4197
  }
4039
4198
 
4040
- type IRtSkeletonShape = 'rectangle' | 'circle' | 'square';
4041
- type IRtSkeletonSize = 'sm' | 'md' | 'lg';
4042
- type IRtSkeletonRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4199
+ type TRtSkeletonShape = 'rectangle' | 'circle' | 'square';
4200
+ type TRtSkeletonSize = 'sm' | 'md' | 'lg';
4201
+ type TRtSkeletonRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4043
4202
  /**
4044
4203
  * Visual primitive для loading-state'а: серая полоска с shimmer-анимацией.
4045
4204
  *
@@ -4052,8 +4211,8 @@ type IRtSkeletonRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4052
4211
  */
4053
4212
  declare class RtSkeletonComponent {
4054
4213
  #private;
4055
- readonly shape: InputSignal<IRtSkeletonShape>;
4056
- readonly size: InputSignal<IRtSkeletonSize>;
4214
+ readonly shape: InputSignal<TRtSkeletonShape>;
4215
+ readonly size: InputSignal<TRtSkeletonSize>;
4057
4216
  readonly width: InputSignal<string>;
4058
4217
  readonly height: InputSignal<string>;
4059
4218
  /**
@@ -4062,7 +4221,7 @@ declare class RtSkeletonComponent {
4062
4221
  * `xl`: тогда явный `xl` неотличим от невыставленного, и квадрату
4063
4222
  * приходилось прибивать `sm` жёстко — вход у него молча пропадал.
4064
4223
  */
4065
- readonly borderRadius: InputSignal<IRtSkeletonRadius | null>;
4224
+ readonly borderRadius: InputSignal<TRtSkeletonRadius | null>;
4066
4225
  readonly animation: InputSignalWithTransform<boolean, BooleanInput>;
4067
4226
  protected get isRectangle(): boolean;
4068
4227
  protected get isCircle(): boolean;
@@ -4093,10 +4252,10 @@ declare class RtSkeletonComponent {
4093
4252
  declare class RtSkeletonWrapperComponent {
4094
4253
  readonly width: InputSignal<string>;
4095
4254
  readonly height: InputSignal<string>;
4096
- readonly shape: InputSignal<IRtSkeletonShape>;
4097
- readonly size: InputSignal<IRtSkeletonSize>;
4255
+ readonly shape: InputSignal<TRtSkeletonShape>;
4256
+ readonly size: InputSignal<TRtSkeletonSize>;
4098
4257
  /** Как у `rt-skeleton`: `null` — «по фигуре», а не «без скругления». */
4099
- readonly borderRadius: InputSignal<IRtSkeletonRadius | null>;
4258
+ readonly borderRadius: InputSignal<TRtSkeletonRadius | null>;
4100
4259
  readonly animation: InputSignalWithTransform<boolean, BooleanInput>;
4101
4260
  readonly isLoading: InputSignalWithTransform<boolean, BooleanInput>;
4102
4261
  static ɵfac: i0.ɵɵFactoryDeclaration<RtSkeletonWrapperComponent, never>;
@@ -4253,7 +4412,7 @@ declare class RtStatTileComponent {
4253
4412
  * = null) не рисуется вовсе: «—» рядом с цифрой читается как поломка, а не
4254
4413
  * как «сравнивать не с чем».
4255
4414
  */
4256
- protected readonly t: Signal<RtKitLabelMap>;
4415
+ protected readonly t: Signal<TRtKitLabelMap>;
4257
4416
  protected readonly primaryDelta: Signal<IDeltaRow | null>;
4258
4417
  /** Годовое сравнение — отдельным компактным чипом, без слов в строке. */
4259
4418
  protected readonly yearDelta: Signal<IDeltaRow | null>;
@@ -4326,7 +4485,7 @@ declare class RtStepperComponent {
4326
4485
  }
4327
4486
 
4328
4487
  /** Значение для буфера: явная строка/число либо `null` (тогда берётся отображаемый текст). */
4329
- type ICopyValue = string | number | null;
4488
+ type TCopyValue = string | number | null;
4330
4489
  /**
4331
4490
  * Ячейка с копированием в буфер — переиспользуемый примитив для `cdkCellDef`
4332
4491
  * (и не только). rt-table projection-driven: контент ячейки пишет
@@ -4350,13 +4509,20 @@ type ICopyValue = string | number | null;
4350
4509
  declare class RtCopyCellComponent {
4351
4510
  #private;
4352
4511
  protected readonly copied: WritableSignal<boolean>;
4512
+ /**
4513
+ * Подсказка со значением целиком — только у обрезанного.
4514
+ *
4515
+ * У помещающегося она повторяла бы то, что человек и так читает, и всплывала бы над каждой
4516
+ * ячейкой таблицы; пустая строка директиву подсказки выключает.
4517
+ */
4518
+ protected readonly hint: WritableSignal<string>;
4353
4519
  protected readonly iconName: Signal<IRtIcon.Name>;
4354
4520
  protected readonly actionLabel: Signal<string>;
4355
4521
  /**
4356
4522
  * Строка для буфера. Если не задана — копируется отображаемый текст
4357
4523
  * (textContent проецируемого контента). Число приводится к строке.
4358
4524
  */
4359
- readonly value: InputSignal<ICopyValue>;
4525
+ readonly value: InputSignal<TCopyValue>;
4360
4526
  /** Палитра кнопки копирования. В таблицах — `ghost`; вне таблиц удобнее `secondary`. */
4361
4527
  readonly variant: InputSignal<IRtIconButton.Variant>;
4362
4528
  /**
@@ -4366,6 +4532,13 @@ declare class RtCopyCellComponent {
4366
4532
  */
4367
4533
  readonly revealOnHover: InputSignalWithTransform<boolean, BooleanInput>;
4368
4534
  constructor();
4535
+ /**
4536
+ * Замер обрезки в момент наведения.
4537
+ *
4538
+ * Ширина известна только отрисованному узлу, а меняется она и от переезда столбца, и от
4539
+ * ширины окна: посчитанная один раз при заведении, она соврала бы при первом же изменении.
4540
+ */
4541
+ protected measureTruncation(): void;
4369
4542
  protected onCopy(event: MouseEvent): void;
4370
4543
  static ɵfac: i0.ɵɵFactoryDeclaration<RtCopyCellComponent, never>;
4371
4544
  static ɵcmp: i0.ɵɵComponentDeclaration<RtCopyCellComponent, "rt-copy-cell", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "revealOnHover": { "alias": "revealOnHover"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -4415,7 +4588,7 @@ declare namespace IRtTable {
4415
4588
  }
4416
4589
 
4417
4590
  /** Значение атрибута `aria-sort` заголовка: направление либо его отсутствие. */
4418
- type IRtTableAriaSort = 'ascending' | 'descending' | 'none';
4591
+ type TRtTableAriaSort = 'ascending' | 'descending' | 'none';
4419
4592
  /**
4420
4593
  * Следующее состояние сортировки при нажатии на заголовок колонки.
4421
4594
  *
@@ -4424,9 +4597,9 @@ type IRtTableAriaSort = 'ascending' | 'descending' | 'none';
4424
4597
  */
4425
4598
  declare function nextSort(current: ISortModel<string> | null, propertyName: string): ISortModel<string> | null;
4426
4599
  /** Направление сортировки по этой колонке либо `null`, когда сортирует другая. */
4427
- declare function sortDirectionOf(current: ISortModel<string> | null, propertyName: string): ListSortOrderType | null;
4600
+ declare function sortDirectionOf(current: ISortModel<string> | null, propertyName: string): TListSortOrderType | null;
4428
4601
  /** Значение `aria-sort` заголовка: направление читается скринридером с самой колонки. */
4429
- declare function ariaSortOf(current: ISortModel<string> | null, propertyName: string): IRtTableAriaSort;
4602
+ declare function ariaSortOf(current: ISortModel<string> | null, propertyName: string): TRtTableAriaSort;
4430
4603
  /**
4431
4604
  * Сортируется ли колонка. Колонка, описанная в `columnsConfig`, сортируется только
4432
4605
  * по своему признаку; колонки, которой в конфиге нет, метаданных взять неоткуда —
@@ -4449,12 +4622,12 @@ declare function isColumnSortable(config: ReadonlyArray<IRtTable.ColumnConfig>,
4449
4622
  declare class RtTableSortHeaderComponent {
4450
4623
  #private;
4451
4624
  /** Направление сортировки по этой колонке; `null` — сортирует другая либо никакая. */
4452
- protected readonly direction: Signal<ListSortOrderType | null>;
4625
+ protected readonly direction: Signal<TListSortOrderType | null>;
4453
4626
  protected readonly icon: Signal<IRtIcon.Name>;
4454
4627
  protected readonly sortable: Signal<boolean>;
4455
4628
  /** Ключ колонки — тот же, что в `cdkColumnDef` и в `[columnsConfig]`. */
4456
4629
  readonly rtSortHeader: InputSignal<string>;
4457
- readonly ariaSort: Signal<IRtTableAriaSort>;
4630
+ readonly ariaSort: Signal<TRtTableAriaSort>;
4458
4631
  protected onToggle(): void;
4459
4632
  static ɵfac: i0.ɵɵFactoryDeclaration<RtTableSortHeaderComponent, never>;
4460
4633
  static ɵcmp: i0.ɵɵComponentDeclaration<RtTableSortHeaderComponent, "rt-table-sort-header, th[rtSortHeader]", never, { "rtSortHeader": { "alias": "rtSortHeader"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -4642,6 +4815,13 @@ declare class RtTableComponent<TRow> extends CdkTable<TRow> {
4642
4815
  */
4643
4816
  private readonly actionsCellDef?;
4644
4817
  private readonly actionsHeaderCellDef?;
4818
+ /**
4819
+ * Роль хоста: у native `<table rt-table>` она есть от самого тега, а элементному
4820
+ * `<rt-table>` её ставим сами. Без неё скрин-ридер читает список строками текста: роли
4821
+ * строк и ячеек CDK проставляет сам, а роли самой таблицы у него нет, и проставленные
4822
+ * остаются висеть вне таблицы. Считается один раз — тег хоста по ходу жизни не меняется.
4823
+ */
4824
+ protected readonly hostRole: 'table' | null;
4645
4825
  /** `true` когда initial-load в полёте и entities ещё нет — рендерим skeleton rows. */
4646
4826
  protected readonly isInitialLoading: Signal<boolean>;
4647
4827
  /** `true` когда загрузка завершена и entities пустые — рендерим empty placeholder. */
@@ -4837,7 +5017,7 @@ declare class RtTableSettingsRegistry {
4837
5017
  declare class RtTableSettingsAsideComponent extends RtRouteAsideComponent<never> {
4838
5018
  #private;
4839
5019
  /** Рабочая копия списка колонок (сидится из регистрации, редактируется телом-панелью). */
4840
- protected readonly t: Signal<RtKitLabelMap>;
5020
+ protected readonly t: Signal<TRtKitLabelMap>;
4841
5021
  protected readonly items: WritableSignal<ReadonlyArray<IRtTable.ColumnSettingItem>>;
4842
5022
  constructor();
4843
5023
  protected resolve(): Observable<never | null>;
@@ -4856,7 +5036,7 @@ declare class RtTableSettingsAsideComponent extends RtRouteAsideComponent<never>
4856
5036
  * для «Сохранить»/«Сбросить» и передаёт сюда через `[(items)]`.
4857
5037
  */
4858
5038
  declare class RtTableSettingsPanelComponent {
4859
- protected readonly t: Signal<RtKitLabelMap>;
5039
+ protected readonly t: Signal<TRtKitLabelMap>;
4860
5040
  readonly items: ModelSignal<ReadonlyArray<IRtTable.ColumnSettingItem>>;
4861
5041
  /** Reorder через drag-drop. Locked-строки drag-disabled; индексы — по всему списку. */
4862
5042
  protected onDrop(event: CdkDragDrop<ReadonlyArray<IRtTable.ColumnSettingItem>>): void;
@@ -4940,7 +5120,7 @@ declare class RtTabsControlDirective {
4940
5120
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtTabsControlDirective, "[rtTabsControl]", never, { "side": { "alias": "rtTabsControl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4941
5121
  }
4942
5122
 
4943
- type IScrollDirection = 'before' | 'after';
5123
+ type TScrollDirection = 'before' | 'after';
4944
5124
  /**
4945
5125
  * Полоса вкладок с проекцией контента. Вкладки декларируются через
4946
5126
  * `<ng-template rtTab="id" label="…">…</ng-template>` (см. {@link RtTabDirective}),
@@ -4996,7 +5176,7 @@ declare class RtTabsComponent {
4996
5176
  /** Навигация по вкладкам с клавиатуры (automatic activation). */
4997
5177
  protected onTabKeydown(event: KeyboardEvent): void;
4998
5178
  /** Старт прокрутки полосы по удержанию ЛКМ на стрелке. */
4999
- protected onRestPointerDown(direction: IScrollDirection, event: MouseEvent): void;
5179
+ protected onRestPointerDown(direction: TScrollDirection, event: MouseEvent): void;
5000
5180
  protected onRestPointerUp(): void;
5001
5181
  protected onTabListScroll(): void;
5002
5182
  static ɵfac: i0.ɵɵFactoryDeclaration<RtTabsComponent, never>;
@@ -5015,7 +5195,7 @@ declare class RtTabsComponent {
5015
5195
  */
5016
5196
  declare class RtTagComponent {
5017
5197
  /** Текст pill — обязательный input. */
5018
- protected readonly t: Signal<RtKitLabelMap>;
5198
+ protected readonly t: Signal<TRtKitLabelMap>;
5019
5199
  readonly value: InputSignal<string>;
5020
5200
  /** Семантическая палитра. По умолчанию `neutral` (нейтральный серый). */
5021
5201
  readonly severity: InputSignal<IRtTag.Severity>;
@@ -5038,7 +5218,7 @@ declare class RtTagComponent {
5038
5218
  static ɵcmp: i0.ɵɵComponentDeclaration<RtTagComponent, "rt-tag", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconEnd": { "alias": "iconEnd"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
5039
5219
  }
5040
5220
 
5041
- type IRtTextareaResize = 'none' | 'vertical';
5221
+ type TRtTextareaResize = 'none' | 'vertical';
5042
5222
  /**
5043
5223
  * Шеренный textarea common/ui. CVA через общий `RtFormControlBase` —
5044
5224
  * авто-подсветка invalid. Размерные варианты sm/md/lg через host-класс. Resize
@@ -5057,7 +5237,7 @@ declare class RtTextareaComponent extends RtFormControlBase<string> {
5057
5237
  readonly placeholder: InputSignal<string>;
5058
5238
  readonly readonly: InputSignalWithTransform<boolean, BooleanInput>;
5059
5239
  readonly rows: InputSignalWithTransform<number, NumberInput>;
5060
- readonly resize: InputSignal<IRtTextareaResize>;
5240
+ readonly resize: InputSignal<TRtTextareaResize>;
5061
5241
  protected getEmptyValue(): string;
5062
5242
  protected focusAfterClear(): void;
5063
5243
  protected onInput(event: Event): void;
@@ -5172,7 +5352,7 @@ declare class RtThreadListSearchDirective {
5172
5352
  */
5173
5353
  declare class RtThreadListComponent<TRow extends IRtThreadList.Row> implements OnInit {
5174
5354
  #private;
5175
- protected readonly t: Signal<RtKitLabelMap>;
5355
+ protected readonly t: Signal<TRtKitLabelMap>;
5176
5356
  protected readonly searchPlaceholderText: Signal<string>;
5177
5357
  protected readonly emptyTitle: Signal<string>;
5178
5358
  protected readonly skeletonRows: number[];
@@ -5409,7 +5589,7 @@ declare namespace IRtToaster {
5409
5589
 
5410
5590
  declare class RtToastComponent implements AfterViewInit, OnDestroy {
5411
5591
  #private;
5412
- protected readonly t: Signal<RtKitLabelMap>;
5592
+ protected readonly t: Signal<TRtKitLabelMap>;
5413
5593
  protected readonly icon: Signal<IRtIcon.Name>;
5414
5594
  readonly toast: InputSignal<IRtToaster.Toast>;
5415
5595
  readonly index: InputSignal<number>;
@@ -5681,7 +5861,7 @@ declare namespace IRtWelcomeDialog {
5681
5861
  */
5682
5862
  declare class RtWelcomeDialogComponent {
5683
5863
  #private;
5684
- protected readonly t: Signal<RtKitLabelMap>;
5864
+ protected readonly t: Signal<TRtKitLabelMap>;
5685
5865
  protected readonly title: string;
5686
5866
  protected readonly paragraphs: string[];
5687
5867
  /** Своя подпись важнее умолчания: роль знает, куда ведёт кнопка */
@@ -5737,7 +5917,7 @@ declare class RtWorkspaceAsideDirective {
5737
5917
 
5738
5918
  declare class RtWorkspaceComponent implements IRtWorkspace.PanelApi {
5739
5919
  #private;
5740
- protected readonly t: Signal<RtKitLabelMap>;
5920
+ protected readonly t: Signal<TRtKitLabelMap>;
5741
5921
  protected readonly listSlot: Signal<RtWorkspaceListDirective | undefined>;
5742
5922
  protected readonly centerSlot: Signal<RtWorkspaceCenterDirective | undefined>;
5743
5923
  protected readonly asideSlot: Signal<RtWorkspaceAsideDirective | undefined>;
@@ -5848,7 +6028,7 @@ interface ITransitionFormShape {
5848
6028
  }
5849
6029
  declare class RtWorkspaceDetailsComponent {
5850
6030
  #private;
5851
- protected readonly t: Signal<RtKitLabelMap>;
6031
+ protected readonly t: Signal<TRtKitLabelMap>;
5852
6032
  protected readonly editingAgent: WritableSignal<boolean>;
5853
6033
  protected readonly selectedAgentId: WritableSignal<number | null>;
5854
6034
  protected readonly transitionForm: FormGroup<ITransitionFormShape>;
@@ -5940,5 +6120,14 @@ declare class RtInfiniteScrollDirective implements OnDestroy {
5940
6120
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtInfiniteScrollDirective, "[rtInfiniteScroll]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "rootMargin": { "alias": "rootMargin"; "required": false; "isSignal": true; }; }, { "loadMore": "loadMore"; }, never, never, true, never>;
5941
6121
  }
5942
6122
 
5943
- export { BreakpointsService, CATEGORY_ORDER, ERtCalendarDayState, ERtChatMessageStatus, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtChat, IRtConfirmPopover, IRtDatePicker, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtInput, IRtLogo, IRtMenu, IRtMessageComposer, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ASIDE_DATA, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DIALOG_DATA, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAsideComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtChatComponent, RtChatStatusLabelPipe, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDatePickerComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtEmptyStateComponent, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtLiveBadgeComponent, RtLogoComponent, RtMenuComponent, RtMenuItemComponent, RtMessageComponent, RtMessageComposerComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRichEditorComponent, RtRouteAsideComponent, RtRowHasActionsPipe, RtSectionNavComponent, RtSelectComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, 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, categoryOf, coerceQuillDeltaOutput, deliveryStatus, deriveFileTitle, fileNameFromUrl, formatFileSize, getFileTypeIcon, iconsName, indexFromParam, indexFromScroll, isColumnSortable, nextPhotoIndex, nextSort, normalizeQuillDelta, paramFromIndex, pendingToRtMessage, provideRtIcons, provideRtKitLabels, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitLabel, searchDebounce, shouldRenderPhoto, sortDirectionOf, toRtMessage };
5944
- export type { IIconCategory, IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtAsideContentLayout, IRtAsideDeactivate, IRtAsidePosition, IRtAsideSize, IRtDialogConfig, IRtDialogSize, IRtMappableMessage, IRtPendingMessage, IRtPicture, IRtPictureSource, IRtRichEditorToolbar, IRtSkeletonRadius, IRtSkeletonShape, IRtSkeletonSize, IRtTableAriaSort, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, IRtTextareaResize, IToRtMessageOptions, RtKitLabelKey, RtKitLabelMap, RtKitLabelParams, RtKitTranslator };
6123
+ /** Имя свойства оформления, которое кит объявляет сам. */
6124
+ 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-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-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-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-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-height' | '--rt-input-height-lg' | '--rt-input-height-md' | '--rt-input-height-sm' | '--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-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-navy-70' | '--rt-overlay-white-25' | '--rt-overlay-white-4' | '--rt-overlay-white-40' | '--rt-overlay-white-50' | '--rt-overlay-white-8' | '--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-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-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';
6125
+ /** Имя ручки потребителя — свойства, которое кит намеренно не объявляет. */
6126
+ type TRtConsumerHandleName = '--rt-aside-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-workspace-aside-size' | '--rt-workspace-list-size';
6127
+ /** Все свойства оформления, объявленные китом. */
6128
+ declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
6129
+ /** Все ручки потребителя: значение приходит от приложения, до него работает запасное. */
6130
+ declare const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[];
6131
+
6132
+ export { BreakpointsService, CATEGORY_ORDER, ERtCalendarDayState, ERtChatMessageStatus, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtChat, IRtConfirmPopover, IRtDatePicker, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtInput, IRtLogo, IRtMenu, IRtMessageComposer, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAsideComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtChatComponent, RtChatStatusLabelPipe, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDatePickerComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtEmptyStateComponent, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMessageComponent, RtMessageComposerComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRichEditorComponent, RtRouteAsideComponent, RtRowHasActionsPipe, RtSectionNavComponent, RtSelectComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, 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, coerceQuillDeltaOutput, deliveryStatus, deriveFileTitle, fileNameFromUrl, formatFileSize, getFileTypeIcon, iconsName, indexFromParam, indexFromScroll, isColumnSortable, nextPhotoIndex, nextSort, normalizeQuillDelta, paramFromIndex, parseInline, parseMarkdown, pendingToRtMessage, provideRtIcons, provideRtKitLabels, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitLabel, searchDebounce, shouldRenderPhoto, sortDirectionOf, toRtMessage };
6133
+ export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDialogConfig, IRtMappableMessage, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPendingMessage, IRtPicture, IRtPictureSource, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, IToRtMessageOptions, TIconCategory, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDesignTokenName, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtRichEditorToolbar, TRtSkeletonRadius, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTextareaResize };