@rt-tools/ui-kit-v2 0.19.0 → 0.20.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 (48) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +2 -2
  2. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +19 -1
  4. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +14 -2
  6. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +129 -18
  8. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +2 -2
  10. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +14 -8
  12. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +4 -3
  14. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +4 -3
  16. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +9 -4
  18. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  19. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +15 -1
  20. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  21. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +15 -9
  22. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/rt-tools-ui-kit-v2-0.20.0.tgz +0 -0
  25. package/src/lib/components/ai-run-status/CONTEXT.md +6 -1
  26. package/src/lib/components/ai-run-status/rt-ai-run-status.component.scss +41 -2
  27. package/src/lib/components/data-table/CONTEXT.md +5 -0
  28. package/src/lib/components/dynamic-selector/CONTEXT.md +24 -3
  29. package/src/lib/components/dynamic-selector/dynamic-input/rt-dynamic-input.component.scss +4 -5
  30. package/src/lib/components/dynamic-selector/list/rt-dynamic-selector-list.component.scss +50 -6
  31. package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup-options.scss +108 -0
  32. package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup.component.scss +28 -23
  33. package/src/lib/components/dynamic-selector/rt-dynamic-selector.component.scss +4 -5
  34. package/src/lib/components/empty-state/CONTEXT.md +3 -1
  35. package/src/lib/components/empty-state/rt-empty-state.component.scss +9 -5
  36. package/src/lib/components/input/rt-input.component.scss +17 -0
  37. package/src/lib/components/input-number/rt-input-number.component.scss +15 -0
  38. package/src/lib/components/select/CONTEXT.md +2 -2
  39. package/src/lib/components/thread-list/CONTEXT.md +3 -1
  40. package/src/rich-editor/lib/components/ai-chat/CONTEXT.md +2 -0
  41. package/types/rt-tools-ui-kit-v2-core.d.ts +70 -5
  42. package/types/rt-tools-ui-kit-v2-data-table.d.ts +7 -0
  43. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +45 -3
  44. package/types/rt-tools-ui-kit-v2-icon.d.ts +3 -1
  45. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +4 -2
  46. package/types/rt-tools-ui-kit-v2-select.d.ts +6 -0
  47. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +13 -8
  48. package/rt-tools-ui-kit-v2-0.19.0.tgz +0 -0
@@ -12,12 +12,11 @@
12
12
  gap: var(--rt-space-sm);
13
13
  }
14
14
 
15
- &__invitation {
16
- display: block;
17
- }
18
-
15
+ // Хосты компонентов кита несут свой блочный класс и свой display, а порядок стилей двух
16
+ // компонентов между собой не закреплён: своего display у этих элементов нет.
17
+ &__invitation,
19
18
  &__nothing {
20
- display: block;
19
+ min-width: 0;
21
20
  }
22
21
  }
23
22
  }
@@ -35,7 +35,9 @@
35
35
  - Размеры и подложка — свойства блока: `--rt-empty-state-icon-wrap-size`,
36
36
  `--rt-empty-state-icon-wrap-bg`, `--rt-empty-state-icon-size`, `--rt-empty-state-title-size`,
37
37
  `--rt-empty-state-title-weight`, `--rt-empty-state-title-color`,
38
- `--rt-empty-state-description-size`. Список ставит им назначения `--rt-list-empty-*`. Под
38
+ `--rt-empty-state-description-size`. Поля и зазоры задают `--rt-empty-state-padding`,
39
+ `--rt-empty-state-gap`, `--rt-empty-state-icon-offset` и
40
+ `--rt-empty-state-description-line-height`. Список ставит им назначения `--rt-list-empty-*`. Под
39
41
  материальным набором его заглушка рисуется как у первого кита: значок 48px без круга, заголовок
40
42
  32px весом 400.
41
43
 
@@ -15,6 +15,10 @@
15
15
  --rt-empty-state-title-weight: var(--rt-font-weight-medium);
16
16
  --rt-empty-state-title-color: var(--rt-color-text-primary);
17
17
  --rt-empty-state-description-size: var(--rt-text-sm);
18
+ --rt-empty-state-description-line-height: var(--rt-leading-normal);
19
+ --rt-empty-state-padding: var(--rt-space-xl) var(--rt-space-lg);
20
+ --rt-empty-state-gap: var(--rt-space-sm);
21
+ --rt-empty-state-icon-offset: var(--rt-space-xs);
18
22
  --rt-empty-state-frame-width: var(--rt-border-width-medium);
19
23
  --rt-empty-state-frame-color: var(--rt-color-border-strong);
20
24
  --rt-empty-state-frame-radius: var(--rt-radius-lg);
@@ -23,8 +27,8 @@
23
27
  flex-direction: column;
24
28
  align-items: center;
25
29
  justify-content: center;
26
- padding: var(--rt-space-xl) var(--rt-space-lg);
27
- gap: var(--rt-space-sm);
30
+ padding: var(--rt-empty-state-padding);
31
+ gap: var(--rt-empty-state-gap);
28
32
  text-align: center;
29
33
 
30
34
  /* Рамка зоны загрузки: пунктир говорит «сюда можно бросить файл», как у первого кита. */
@@ -39,7 +43,7 @@
39
43
  display: none;
40
44
  }
41
45
 
42
- margin-bottom: var(--rt-space-xs);
46
+ margin-bottom: var(--rt-empty-state-icon-offset);
43
47
  }
44
48
 
45
49
  &__icon-wrap {
@@ -49,7 +53,7 @@
49
53
  align-items: center;
50
54
  justify-content: center;
51
55
  border-radius: var(--rt-empty-state-icon-radius);
52
- margin-bottom: var(--rt-space-xs);
56
+ margin-bottom: var(--rt-empty-state-icon-offset);
53
57
  background: var(--rt-empty-state-icon-wrap-bg);
54
58
  color: var(--rt-color-text-muted);
55
59
 
@@ -74,7 +78,7 @@
74
78
  margin: 0;
75
79
  color: var(--rt-color-text-muted);
76
80
  font-size: var(--rt-empty-state-description-size);
77
- line-height: var(--rt-leading-normal);
81
+ line-height: var(--rt-empty-state-description-line-height);
78
82
  }
79
83
 
80
84
  /* Слот действия скрыт, если ничего не спроецировано (пустой div). */
@@ -47,6 +47,23 @@
47
47
  background-color: var(--rt-color-bg-surface-subtle-2);
48
48
  }
49
49
 
50
+ /* Шаг входа `radius` у залитого поля скругляет все четыре угла, и черта снизу не рисуется:
51
+ прямой низ с чертой у поля-таблетки читается обрубленным. Без шага поле остаётся прежним.
52
+ `:where` держит силу правила на уровне вида, и рамки фокуса и ошибки ниже его перекрывают. */
53
+ &--appearance--fill:where([data-rt-radius]) {
54
+ border-radius: var(--rt-input-box-radius);
55
+ border-bottom-color: transparent;
56
+ }
57
+
58
+ /* Вид «pill» — залитое поле-таблетка без черты. Скругление идёт через своё свойство поля,
59
+ поэтому шаг входа `radius` его переназначает. */
60
+ &--appearance--pill {
61
+ --rt-input-box-radius: var(--rt-radius-full);
62
+
63
+ border-color: transparent;
64
+ background-color: var(--rt-color-bg-surface-subtle-2);
65
+ }
66
+
50
67
  &--invalid {
51
68
  border-color: var(--rt-input-color-border-error);
52
69
 
@@ -46,6 +46,21 @@
46
46
  background-color: var(--rt-color-bg-surface-subtle-2);
47
47
  }
48
48
 
49
+ /* Шаг входа `radius` у залитого поля скругляет все четыре угла, и черта снизу не рисуется —
50
+ так же, как у поля ввода. `:where` держит силу правила на уровне вида. */
51
+ &--appearance--fill:where([data-rt-radius]) {
52
+ border-radius: var(--rt-input-number-radius);
53
+ border-bottom-color: transparent;
54
+ }
55
+
56
+ /* Вид «pill» — залитое поле-таблетка без черты; шаг входа `radius` переназначает скругление. */
57
+ &--appearance--pill {
58
+ --rt-input-number-radius: var(--rt-radius-full);
59
+
60
+ border-color: transparent;
61
+ background-color: var(--rt-color-bg-surface-subtle-2);
62
+ }
63
+
49
64
  &--invalid {
50
65
  border-color: var(--rt-input-color-border-error);
51
66
 
@@ -33,8 +33,8 @@
33
33
 
34
34
  ## Клавиатура
35
35
 
36
- - Закрытый список раскрывают `ArrowDown`, `ArrowUp`, `Enter`, `Space` — и сразу подсвечивают
37
- первую доступную опцию.
36
+ - Закрытый список раскрывают `ArrowDown`, `ArrowUp`, `Enter`, `Space`. Подсветка встаёт на
37
+ выбранную опцию (`onOpened`, и при открытии мышью тоже), без выбора — на первую доступную.
38
38
  - Стрелки **перешагивают отключённые опции** и заворачиваются по кругу.
39
39
  - `Enter`/`Space` выбирают подсвеченную, `Escape` закрывает без выбора.
40
40
  - В дереве `ArrowRight` раскрывает ветку или спускается к первому ребёнку, `ArrowLeft` сворачивает
@@ -19,7 +19,7 @@
19
19
  ```
20
20
 
21
21
  Входы: `rows`, `activeId`, `searchPlaceholder`, `emptyText`, `loading`, `fetching`, `hasMore`,
22
- `filtersActive`. Выходы: `selectRow`, `openInNewTab`, `searchChange`, `loadMore`.
22
+ `filtersActive`, `emptyPreviewIcons`. Выходы: `selectRow`, `openInNewTab`, `searchChange`, `loadMore`.
23
23
 
24
24
  Строка обязана иметь `id`, `hasUnread` и (необязательно) `overdue` — это всё, что список о ней знает.
25
25
  Номер строки — число или строка: у записей домена ключ не всегда числовой. Тем же типом приходит
@@ -45,6 +45,8 @@
45
45
 
46
46
  ## Края
47
47
 
48
+ - Пустой список рисует строки-превью по одной на значок из `emptyPreviewIcons` (по умолчанию
49
+ `user`, `users`, `user`); каждая вторая строка сдвинута модификатором `offset`.
48
50
  - Якорь догрузки (`rtInfiniteScroll`) появляется только при `hasMore`.
49
51
  - Кнопка фильтров рисуется, только если объявлен шаблон `[rtThreadListFilters]`;
50
52
  `filtersActive` рисует на ней точку.
@@ -48,6 +48,8 @@
48
48
  - Удаление беседы — действие строки `rt-thread-list` (`rtThreadListRowActions`), подтверждение —
49
49
  на приложении.
50
50
  - Подсветка совпадений поиска по беседам — `splitSideMenuTitle`.
51
+ - Строки-превью пустого списка бесед — `emptyPreviewIcons`, по умолчанию `sparkle`, `bot`, `sparkle`:
52
+ беседы идут с ассистентом, а не с людьми. Вход уходит в `rt-thread-list` как есть.
51
53
  - Ответ рисует внутренний `rt-ai-chat-answer` (папка `answer/`): без него шаблон организма
52
54
  превышает предел цикломатической сложности.
53
55
 
@@ -159,6 +159,61 @@ declare namespace IRtDataTable {
159
159
  }
160
160
  }
161
161
 
162
+ /**
163
+ * Модель `rt-dynamic-selector`: один корневой неймспейс с префиксом `I`.
164
+ */
165
+ declare namespace IRtDynamicSelector {
166
+ /** Состояние флажка «Выбрать всё» по видимым пунктам. */
167
+ type SelectAllState = 'none' | 'some' | 'all';
168
+ /** Как выбирает всплывающий список: один пункт переключателем или несколько флажками. */
169
+ type Mode = 'single' | 'multi';
170
+ /** Регистр подписи кнопки: как есть, каждое слово с заглавной или вся заглавными. */
171
+ type LabelCase = 'none' | 'title' | 'upper';
172
+ /** Строки всплывающего выбора: отмеченные раньше над разделителем и найденные под ним. */
173
+ interface PopupRows<T> {
174
+ readonly ticked: ReadonlyArray<T>;
175
+ readonly found: ReadonlyArray<T>;
176
+ }
177
+ /** Кусок подписи пункта: совпал ли он со словом поиска. */
178
+ interface MatchPart {
179
+ readonly text: string;
180
+ readonly matched: boolean;
181
+ }
182
+ /** Строка всплывающего выбора, готовая для разметки. */
183
+ interface PopupRow<T> {
184
+ readonly entity: T;
185
+ readonly key: unknown;
186
+ readonly label: string;
187
+ /** Подпись по кускам; без подсветки поиска — один кусок без отметки. */
188
+ readonly parts: ReadonlyArray<MatchPart>;
189
+ readonly ticked: boolean;
190
+ /** Под строкой стоит разделитель. */
191
+ readonly separated: boolean;
192
+ }
193
+ /** Строка списка выбранного, готовая для разметки. */
194
+ interface ListRow<T> {
195
+ readonly item: T;
196
+ readonly key: unknown;
197
+ readonly label: string;
198
+ /** Строку нельзя убрать из списка. */
199
+ readonly locked: boolean;
200
+ }
201
+ /** Перенос строки списка выбранного: откуда и куда. */
202
+ interface Move {
203
+ readonly from: number;
204
+ readonly to: number;
205
+ }
206
+ /** Обстановка шаблона строки, который принёс вызывающий. */
207
+ interface RowContext<T> {
208
+ readonly $implicit: T;
209
+ }
210
+ /** Правка строки поля списка строк: прежнее значение и новое. */
211
+ interface TextEdit {
212
+ readonly previous: string;
213
+ readonly next: string;
214
+ }
215
+ }
216
+
162
217
  /**
163
218
  * Имена иконок rt-icon. Набор лежит в `assets/icons` пакета, откуда сборка
164
219
  * приложения кладёт его туда, куда указывает `provideRtIcons()`. Большинство
@@ -226,10 +281,10 @@ declare namespace IRtInput {
226
281
  /** Размерный вариант поля (высота). Общий для всего input-семейства. */
227
282
  type Size = 'sm' | 'md' | 'lg';
228
283
  /**
229
- * Вид рамки поля — два вида материального поля первого кита. `outline` — рамка со всех
230
- * сторон, `fill` — залитое поле с чертой снизу.
284
+ * Вид рамки поля. `outline` — рамка со всех сторон, `fill` — залитое поле с чертой снизу, как у
285
+ * материального поля первого кита, `pill` — залитое поле-таблетка без черты.
231
286
  */
232
- type Appearance = 'outline' | 'fill';
287
+ type Appearance = 'outline' | 'fill' | 'pill';
233
288
  }
234
289
 
235
290
  /** Один шаг шкалы скругления. Значения шагов лежат в токенах `--rt-radius-<шаг>`. */
@@ -319,6 +374,16 @@ declare namespace IRtKitConfig {
319
374
  emptyResultsText?: string;
320
375
  /** Переносится ли название строки списка. Умолчание кита — переносится. */
321
376
  titleWrap?: boolean;
377
+ /** Шаг скругления поля поиска в окне выбора. Умолчание кита — скругление самого поля. */
378
+ searchRadius?: TRtRadius | null;
379
+ /** Выделять ли в подписи пункта символы, совпавшие с поиском. Умолчание кита — не выделять. */
380
+ highlightSearch?: boolean;
381
+ /** Подпись кнопки применения в окне выбора. Умолчание кита — пустая строка, то есть подпись кита. */
382
+ applyLabel?: string;
383
+ /** Регистр подписи кнопки применения. Умолчание кита — `none`, подпись как есть. */
384
+ applyLabelCase?: IRtDynamicSelector.LabelCase;
385
+ /** Получает ли поле поиска фокус при открытии окна выбора. Умолчание кита — не получает. */
386
+ autofocusSearch?: boolean;
322
387
  }
323
388
  /** Умолчания по узлам: каждое действует на одну семью и перебивает общее. */
324
389
  interface Components {
@@ -479,7 +544,7 @@ declare const RT_KIT_LABELS_EN: {
479
544
  readonly dataTableFilterOperatorGreaterThan: "More than";
480
545
  readonly dataTableFilterOperatorLessThan: "Less than";
481
546
  readonly dataTableFilterOperatorNotEquals: "Not equal";
482
- readonly dataTableFilterSelectPlaceholder: "Chose filter";
547
+ readonly dataTableFilterSelectPlaceholder: "Choose filter";
483
548
  readonly dataTableFilterValuePlaceholder: "Type in filter value";
484
549
  readonly dataTableSelectPage: "Select the rows of this page";
485
550
  readonly dataTableSelectRow: "Select row";
@@ -1025,7 +1090,7 @@ declare class RtInfiniteScrollDirective implements OnDestroy {
1025
1090
  /** The name of a styling property the kit declares itself. */
1026
1091
  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';
1027
1092
  /** The name of a consumer's handle — a property the kit deliberately does not declare. */
1028
- type TRtConsumerHandleName = '--rt-action-bar-action-bg-hover' | '--rt-action-bar-action-color-danger' | '--rt-action-bar-action-focus-shadow' | '--rt-action-bar-action-font-size' | '--rt-action-bar-action-height' | '--rt-action-bar-action-padding-block' | '--rt-action-bar-action-padding-inline' | '--rt-action-bar-action-radius' | '--rt-action-bar-action-weight' | '--rt-action-bar-bg' | '--rt-action-bar-close-icon-size' | '--rt-action-bar-close-size' | '--rt-action-bar-color' | '--rt-action-bar-counter-font-size' | '--rt-action-bar-counter-weight' | '--rt-action-bar-font-size' | '--rt-action-bar-gap' | '--rt-action-bar-holder-bottom' | '--rt-action-bar-holder-enter-duration' | '--rt-action-bar-holder-inline' | '--rt-action-bar-holder-leave-duration' | '--rt-action-bar-icon-gap' | '--rt-action-bar-icon-size' | '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-gap' | '--rt-action-bar-menu-item-font-size' | '--rt-action-bar-menu-padding' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-action-bar-padding' | '--rt-action-bar-radius' | '--rt-action-bar-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-back-icon-size' | '--rt-aside-header-back-size' | '--rt-aside-header-gap' | '--rt-aside-header-inset' | '--rt-aside-header-min-height' | '--rt-aside-header-subtitle-size' | '--rt-aside-header-title-leading' | '--rt-aside-header-title-size' | '--rt-aside-header-title-weight' | '--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-dynamic-selector-list-add-color' | '--rt-dynamic-selector-popup-bg' | '--rt-dynamic-selector-popup-border-width' | '--rt-dynamic-selector-popup-button-font-size' | '--rt-dynamic-selector-popup-button-height' | '--rt-dynamic-selector-popup-empty-icon-size' | '--rt-dynamic-selector-popup-empty-icon-wrap-bg' | '--rt-dynamic-selector-popup-empty-text-color' | '--rt-dynamic-selector-popup-empty-text-size' | '--rt-dynamic-selector-popup-empty-text-weight' | '--rt-dynamic-selector-popup-foot-border-width' | '--rt-dynamic-selector-popup-max-height' | '--rt-dynamic-selector-popup-min-height' | '--rt-dynamic-selector-popup-nav-color' | '--rt-dynamic-selector-popup-padding' | '--rt-dynamic-selector-popup-radius' | '--rt-dynamic-selector-popup-shadow' | '--rt-dynamic-selector-popup-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-color-danger' | '--rt-icon-color-disabled' | '--rt-icon-color-info' | '--rt-icon-color-inverse' | '--rt-icon-color-muted' | '--rt-icon-color-primary' | '--rt-icon-color-success' | '--rt-icon-color-warning' | '--rt-icon-glyph-font' | '--rt-icon-glyph-grade' | '--rt-icon-glyph-opsz' | '--rt-icon-glyph-weight' | '--rt-icon-step-2xl' | '--rt-icon-step-3xl' | '--rt-icon-step-4xl' | '--rt-icon-step-lg' | '--rt-icon-step-md' | '--rt-icon-step-sm' | '--rt-icon-step-xl' | '--rt-icon-step-xs' | '--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';
1093
+ type TRtConsumerHandleName = '--rt-action-bar-action-bg-hover' | '--rt-action-bar-action-color-danger' | '--rt-action-bar-action-focus-shadow' | '--rt-action-bar-action-font-size' | '--rt-action-bar-action-height' | '--rt-action-bar-action-padding-block' | '--rt-action-bar-action-padding-inline' | '--rt-action-bar-action-radius' | '--rt-action-bar-action-weight' | '--rt-action-bar-bg' | '--rt-action-bar-close-icon-size' | '--rt-action-bar-close-size' | '--rt-action-bar-color' | '--rt-action-bar-counter-font-size' | '--rt-action-bar-counter-weight' | '--rt-action-bar-font-size' | '--rt-action-bar-gap' | '--rt-action-bar-holder-bottom' | '--rt-action-bar-holder-enter-duration' | '--rt-action-bar-holder-inline' | '--rt-action-bar-holder-leave-duration' | '--rt-action-bar-icon-gap' | '--rt-action-bar-icon-size' | '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-gap' | '--rt-action-bar-menu-item-font-size' | '--rt-action-bar-menu-padding' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-action-bar-padding' | '--rt-action-bar-radius' | '--rt-action-bar-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-back-icon-size' | '--rt-aside-header-back-size' | '--rt-aside-header-gap' | '--rt-aside-header-inset' | '--rt-aside-header-min-height' | '--rt-aside-header-subtitle-size' | '--rt-aside-header-title-leading' | '--rt-aside-header-title-size' | '--rt-aside-header-title-weight' | '--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-dynamic-selector-list-actions-gap' | '--rt-dynamic-selector-list-actions-offset' | '--rt-dynamic-selector-list-actions-padding-end' | '--rt-dynamic-selector-list-add-color' | '--rt-dynamic-selector-list-controls-divider-color' | '--rt-dynamic-selector-list-controls-divider-width' | '--rt-dynamic-selector-list-controls-gap' | '--rt-dynamic-selector-list-handle-padding-end' | '--rt-dynamic-selector-list-handle-padding-start' | '--rt-dynamic-selector-list-row-padding-end' | '--rt-dynamic-selector-list-title-gap' | '--rt-dynamic-selector-popup-bg' | '--rt-dynamic-selector-popup-border-width' | '--rt-dynamic-selector-popup-button-font-size' | '--rt-dynamic-selector-popup-button-height' | '--rt-dynamic-selector-popup-empty-gap' | '--rt-dynamic-selector-popup-empty-icon-size' | '--rt-dynamic-selector-popup-empty-icon-wrap-bg' | '--rt-dynamic-selector-popup-empty-text-color' | '--rt-dynamic-selector-popup-empty-text-size' | '--rt-dynamic-selector-popup-empty-text-weight' | '--rt-dynamic-selector-popup-foot-border-width' | '--rt-dynamic-selector-popup-foot-padding' | '--rt-dynamic-selector-popup-highlight-bg' | '--rt-dynamic-selector-popup-highlight-color' | '--rt-dynamic-selector-popup-highlight-radius' | '--rt-dynamic-selector-popup-highlight-weight' | '--rt-dynamic-selector-popup-max-height' | '--rt-dynamic-selector-popup-min-height' | '--rt-dynamic-selector-popup-nav-color' | '--rt-dynamic-selector-popup-option-line-height' | '--rt-dynamic-selector-popup-option-min-height' | '--rt-dynamic-selector-popup-padding' | '--rt-dynamic-selector-popup-radius' | '--rt-dynamic-selector-popup-shadow' | '--rt-dynamic-selector-popup-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-color-danger' | '--rt-icon-color-disabled' | '--rt-icon-color-info' | '--rt-icon-color-inverse' | '--rt-icon-color-muted' | '--rt-icon-color-primary' | '--rt-icon-color-success' | '--rt-icon-color-warning' | '--rt-icon-glyph-font' | '--rt-icon-glyph-grade' | '--rt-icon-glyph-opsz' | '--rt-icon-glyph-weight' | '--rt-icon-step-2xl' | '--rt-icon-step-3xl' | '--rt-icon-step-4xl' | '--rt-icon-step-lg' | '--rt-icon-step-md' | '--rt-icon-step-sm' | '--rt-icon-step-xl' | '--rt-icon-step-xs' | '--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';
1029
1094
  /** All the styling properties declared by the kit. */
1030
1095
  declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
1031
1096
  /** All the consumer's handles: the value comes from the application, until then the fallback works. */
@@ -319,6 +319,13 @@ declare class RtDataTableFilterCellComponent<KEY extends string = string> {
319
319
  protected onNumberDraft(value: number | null): void;
320
320
  protected onDayChange(day: string | null): void;
321
321
  protected onValueChange(value: TRtDataTableFilterValue | null): void;
322
+ /**
323
+ * Сброс крестиком переводит фокус в поле рядом.
324
+ *
325
+ * Без значения крестик выключается, и выключенная кнопка роняет фокус на `body`: человек с
326
+ * клавиатуры оказывается в начале страницы.
327
+ */
328
+ protected onClear(): void;
322
329
  protected onOperatorChange(operatorType: TFilterOperatorType): void;
323
330
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDataTableFilterCellComponent<any>, never>;
324
331
  static ɵcmp: i0.ɵɵComponentDeclaration<RtDataTableFilterCellComponent<any>, "rt-data-table-filter-cell", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "filterProperty": { "alias": "filterProperty"; "required": true; "isSignal": true; }; "filterType": { "alias": "filterType"; "required": true; "isSignal": true; }; "filterModel": { "alias": "filterModel"; "required": false; "isSignal": true; }; "defaultFilterOperator": { "alias": "defaultFilterOperator"; "required": false; "isSignal": true; }; "filterOperators": { "alias": "filterOperators"; "required": false; "isSignal": true; }; "filterSelectOptions": { "alias": "filterSelectOptions"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; }, never, never, true, never>;
@@ -13,16 +13,25 @@ declare namespace IRtDynamicSelector {
13
13
  type SelectAllState = 'none' | 'some' | 'all';
14
14
  /** Как выбирает всплывающий список: один пункт переключателем или несколько флажками. */
15
15
  type Mode = 'single' | 'multi';
16
+ /** Регистр подписи кнопки: как есть, каждое слово с заглавной или вся заглавными. */
17
+ type LabelCase = 'none' | 'title' | 'upper';
16
18
  /** Строки всплывающего выбора: отмеченные раньше над разделителем и найденные под ним. */
17
19
  interface PopupRows<T> {
18
20
  readonly ticked: ReadonlyArray<T>;
19
21
  readonly found: ReadonlyArray<T>;
20
22
  }
23
+ /** Кусок подписи пункта: совпал ли он со словом поиска. */
24
+ interface MatchPart {
25
+ readonly text: string;
26
+ readonly matched: boolean;
27
+ }
21
28
  /** Строка всплывающего выбора, готовая для разметки. */
22
29
  interface PopupRow<T> {
23
30
  readonly entity: T;
24
31
  readonly key: unknown;
25
32
  readonly label: string;
33
+ /** Подпись по кускам; без подсветки поиска — один кусок без отметки. */
34
+ readonly parts: ReadonlyArray<MatchPart>;
26
35
  readonly ticked: boolean;
27
36
  /** Под строкой стоит разделитель. */
28
37
  readonly separated: boolean;
@@ -233,6 +242,7 @@ declare const RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE: number;
233
242
  declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements OnInit {
234
243
  #private;
235
244
  protected readonly searchLabel: Signal<string>;
245
+ protected readonly searchField: Signal<ElementRef<HTMLElement> | undefined>;
236
246
  protected readonly selectAllLabel: Signal<string>;
237
247
  protected readonly multiLabel: Signal<string>;
238
248
  protected readonly multiHintLabel: Signal<string>;
@@ -240,9 +250,13 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
240
250
  /** Подпись пустого результата: своя у приложения, иначе словарь кита. */
241
251
  protected readonly emptyText: Signal<string>;
242
252
  protected readonly cancelLabel: Signal<string>;
243
- protected readonly applyLabel: Signal<string>;
253
+ protected readonly applyKitLabel: Signal<string>;
254
+ /** Подпись кнопки применения: своя у приложения, иначе словарь кита, — в заданном регистре. */
255
+ protected readonly applyText: Signal<string>;
244
256
  /** Отмеченные ключи — ещё не применённые. */
245
257
  protected readonly ticked: WritableSignal<unknown[]>;
258
+ /** Отметки на минуту последней смены запроса: только они стоят над разделителем, отмеченное потом — на месте. */
259
+ protected readonly raised: WritableSignal<unknown[]>;
246
260
  protected readonly query: WritableSignal<string>;
247
261
  /** Выбор нескольких включён: без него простое нажатие оставляет одну отметку. */
248
262
  protected readonly isMultiOn: WritableSignal<boolean>;
@@ -252,6 +266,8 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
252
266
  protected readonly visibleKeys: Signal<unknown[]>;
253
267
  /** Строки для разметки: отмеченные раньше над разделителем, найденные — под ним. */
254
268
  protected readonly rowItems: Signal<IRtDynamicSelector.PopupRow<TEntity>[]>;
269
+ /** Подпись выбора одной записи рисует окно, а не кнопка: без переноса и при подсветке поиска. */
270
+ protected readonly ownLabel: Signal<boolean>;
255
271
  protected readonly hasRows: Signal<boolean>;
256
272
  protected readonly selectAllState: Signal<IRtDynamicSelector.SelectAllState>;
257
273
  protected readonly isSingle: Signal<boolean>;
@@ -264,6 +280,8 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
264
280
  readonly entities: InputSignal<ReadonlyArray<TEntity>>;
265
281
  readonly keyExp: InputSignal<keyof TEntity & string>;
266
282
  readonly displayExp: InputSignal<keyof TEntity & string>;
283
+ /** Подпись записи для строки, пункта окна и поиска; не задана — поле `displayExp`. */
284
+ readonly displayWith: InputSignal<((entity: TEntity) => string) | null>;
267
285
  readonly mode: InputSignal<IRtDynamicSelector.Mode>;
268
286
  readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
269
287
  readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
@@ -278,8 +296,20 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
278
296
  readonly searchTerm: InputSignal<string>;
279
297
  /** Вид поля поиска — тот же вход, что у поля кита. */
280
298
  readonly searchAppearance: InputSignal<IRtInput.Appearance>;
299
+ /** Шаг скругления поля поиска; null — скругление самого поля. */
300
+ readonly searchRadius: InputSignal<TRtRadius | null>;
281
301
  /** Подпись пустого результата поиска; пустая строка оставляет подпись кита. */
282
302
  readonly emptyResultsText: InputSignal<string>;
303
+ /** Подпись кнопки применения; пустая строка оставляет подпись кита. */
304
+ readonly applyLabel: InputSignal<string>;
305
+ /** Регистр подписи кнопки применения; `none` оставляет её как есть. */
306
+ readonly applyLabelCase: InputSignal<IRtDynamicSelector.LabelCase>;
307
+ /** Поле поиска получает фокус при открытии окна; по умолчанию фокус остаётся там, где был. */
308
+ readonly autofocusSearch: InputSignalWithTransform<boolean, unknown>;
309
+ /** Подпись пункта переносится; `false` ведёт её одной строкой с многоточием и подсказкой при обрезке. */
310
+ readonly titleWrap: InputSignalWithTransform<boolean, unknown>;
311
+ /** Символы подписи пункта, совпавшие со словами поиска, выделены. */
312
+ readonly highlightSearch: InputSignalWithTransform<boolean, unknown>;
283
313
  /** Применённые ключи в порядке отметок. */
284
314
  readonly applied: OutputEmitterRef<unknown[]>;
285
315
  readonly cancelled: OutputEmitterRef<void>;
@@ -298,7 +328,7 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
298
328
  protected onApply(): void;
299
329
  protected onCancel(): void;
300
330
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorPopupComponent<any>, never>;
301
- 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; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
331
+ 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; }; "displayWith": { "alias": "displayWith"; "required": false; "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; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "searchRadius": { "alias": "searchRadius"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "applyLabelCase": { "alias": "applyLabelCase"; "required": false; "isSignal": true; }; "autofocusSearch": { "alias": "autofocusSearch"; "required": false; "isSignal": true; }; "titleWrap": { "alias": "titleWrap"; "required": false; "isSignal": true; }; "highlightSearch": { "alias": "highlightSearch"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
302
332
  }
303
333
 
304
334
  /**
@@ -340,6 +370,8 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
340
370
  readonly entities: InputSignal<ReadonlyArray<TEntity>>;
341
371
  readonly keyExp: InputSignal<keyof TEntity & string>;
342
372
  readonly displayExp: InputSignal<keyof TEntity & string>;
373
+ /** Подпись записи для строки, пункта окна и поиска; не задана — поле `displayExp`. */
374
+ readonly displayWith: InputSignal<((entity: TEntity) => string) | null>;
343
375
  readonly mode: InputSignal<IRtDynamicSelector.Mode>;
344
376
  /** Название кнопки добавления; пустое — «Add» из словаря кита. */
345
377
  readonly buttonTitle: InputSignal<string>;
@@ -378,8 +410,18 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
378
410
  readonly titleWrap: InputSignalWithTransform<boolean, unknown>;
379
411
  /** Вид поля поиска в окне выбора. */
380
412
  readonly searchAppearance: InputSignal<IRtInput.Appearance>;
413
+ /** Шаг скругления поля поиска в окне выбора; null — скругление самого поля. */
414
+ readonly searchRadius: InputSignal<TRtRadius | null>;
415
+ /** Символы подписи пункта окна выбора, совпавшие со словами поиска, выделены. */
416
+ readonly highlightSearch: InputSignalWithTransform<boolean, unknown>;
381
417
  /** Подпись пустого результата поиска; пустая строка оставляет подпись кита. */
382
418
  readonly emptyResultsText: InputSignal<string>;
419
+ /** Подпись кнопки применения в окне выбора; пустая строка оставляет подпись кита. */
420
+ readonly applyLabel: InputSignal<string>;
421
+ /** Регистр подписи кнопки применения; `none` оставляет её как есть. */
422
+ readonly applyLabelCase: InputSignal<IRtDynamicSelector.LabelCase>;
423
+ /** Поле поиска получает фокус при открытии окна выбора. */
424
+ readonly autofocusSearch: InputSignalWithTransform<boolean, unknown>;
383
425
  readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
384
426
  readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
385
427
  readonly localSearch: InputSignalWithTransform<boolean, unknown>;
@@ -417,7 +459,7 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
417
459
  protected getEmptyValue(): unknown[];
418
460
  protected focusAfterClear(): void;
419
461
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorComponent<any>, never>;
420
- 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; }; "invitationGlyph": { "alias": "invitationGlyph"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "invitationButtonIcon": { "alias": "invitationButtonIcon"; "required": false; "isSignal": true; }; "invitationButtonAppearance": { "alias": "invitationButtonAppearance"; "required": false; "isSignal": true; }; "clearIcon": { "alias": "clearIcon"; "required": false; "isSignal": true; }; "titleWrap": { "alias": "titleWrap"; "required": false; "isSignal": true; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "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>;
462
+ 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; }; "displayWith": { "alias": "displayWith"; "required": false; "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; }; "invitationGlyph": { "alias": "invitationGlyph"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "invitationButtonIcon": { "alias": "invitationButtonIcon"; "required": false; "isSignal": true; }; "invitationButtonAppearance": { "alias": "invitationButtonAppearance"; "required": false; "isSignal": true; }; "clearIcon": { "alias": "clearIcon"; "required": false; "isSignal": true; }; "titleWrap": { "alias": "titleWrap"; "required": false; "isSignal": true; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "searchRadius": { "alias": "searchRadius"; "required": false; "isSignal": true; }; "highlightSearch": { "alias": "highlightSearch"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "applyLabelCase": { "alias": "applyLabelCase"; "required": false; "isSignal": true; }; "autofocusSearch": { "alias": "autofocusSearch"; "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>;
421
463
  }
422
464
 
423
465
  export { IRtDynamicSelector, RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE, RtDynamicInputComponent, RtDynamicSelectorComponent, RtDynamicSelectorListComponent, RtDynamicSelectorPopupComponent, RtDynamicSelectorRowControlsDirective, RtDynamicSelectorRowTitleDirective };
@@ -64,7 +64,9 @@ declare function materialPairOf(glyph: string | null | undefined): IRtIcon.Name
64
64
  * Чем рисуется значок: своим рисунком кита или лигатурой шрифта Material.
65
65
  *
66
66
  * Имя кита выигрывает у имени Material, если названы оба. Имя Material по способу `map-first`
67
- * берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу. Материальный рисунок
67
+ * берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу. Имя кита, которое шрифт
68
+ * нарисовать не может (`ico-plus`, `docBox`), и по способу `font` рисуется рисунком кита: иначе в
69
+ * значке стоит текст имени. Имя кита, совпавшее с лигатурой (`search`), по `font` — шрифт. Материальный рисунок
68
70
  * для пары выбирает уже сам значок по признаку набора над собой: это не дело разбора.
69
71
  *
70
72
  * `null` — значку нечего рисовать.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { AfterViewInit, OnDestroy, Signal, ElementRef, WritableSignal, InputSignal, OutputEmitterRef, InputSignalWithTransform, ModelSignal, TemplateRef, PipeTransform } from '@angular/core';
3
- import { RtFormControlBase, IQuillDelta, TRtKitLabelMap, IRtAiRunStatus, IRtTimeline, IRtThreadList, IRtSideMenu } from '@rt-tools/ui-kit-v2';
3
+ import { RtFormControlBase, IQuillDelta, TRtKitLabelMap, IRtAiRunStatus, IRtTimeline, IRtThreadList, IRtSideMenu, IRtIcon } from '@rt-tools/ui-kit-v2';
4
4
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
5
5
  import { FormGroup, FormControl } from '@angular/forms';
6
6
 
@@ -668,6 +668,8 @@ declare class RtAiChatComponent {
668
668
  readonly threadsLoading: InputSignalWithTransform<boolean, BooleanInput>;
669
669
  readonly threadsFetching: InputSignalWithTransform<boolean, BooleanInput>;
670
670
  readonly threadsHasMore: InputSignalWithTransform<boolean, BooleanInput>;
671
+ /** Значки декоративных строк-превью пустого списка бесед, по строке на значок. */
672
+ readonly emptyPreviewIcons: InputSignal<readonly IRtIcon.Name[]>;
671
673
  /** Кнопка «Full screen» в шапке. */
672
674
  readonly fullScreenable: InputSignalWithTransform<boolean, BooleanInput>;
673
675
  /** Кнопка закрытия в шапке. */
@@ -703,7 +705,7 @@ declare class RtAiChatComponent {
703
705
  protected onSearchThreads(query: string): void;
704
706
  protected onSelectThread(id: IRtThreadList.TRowId): void;
705
707
  static ɵfac: i0.ɵɵFactoryDeclaration<RtAiChatComponent, never>;
706
- static ɵcmp: i0.ɵɵComponentDeclaration<RtAiChatComponent, "rt-ai-chat", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disclaimer": { "alias": "disclaimer"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "threads": { "alias": "threads"; "required": false; "isSignal": true; }; "activeThreadId": { "alias": "activeThreadId"; "required": false; "isSignal": true; }; "threadsLoading": { "alias": "threadsLoading"; "required": false; "isSignal": true; }; "threadsFetching": { "alias": "threadsFetching"; "required": false; "isSignal": true; }; "threadsHasMore": { "alias": "threadsHasMore"; "required": false; "isSignal": true; }; "fullScreenable": { "alias": "fullScreenable"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "draft": { "alias": "draft"; "required": false; "isSignal": true; }; "threadsOpen": { "alias": "threadsOpen"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, { "draft": "draftChange"; "threadsOpen": "threadsOpenChange"; "fullScreen": "fullScreenChange"; "send": "send"; "stop": "stop"; "retry": "retry"; "newThread": "newThread"; "closed": "closed"; "selectThread": "selectThread"; "deleteThread": "deleteThread"; "searchThreads": "searchThreads"; "loadMoreThreads": "loadMoreThreads"; "feedbackChange": "feedbackChange"; }, ["extraTemplate"], never, true, never>;
708
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtAiChatComponent, "rt-ai-chat", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disclaimer": { "alias": "disclaimer"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "threads": { "alias": "threads"; "required": false; "isSignal": true; }; "activeThreadId": { "alias": "activeThreadId"; "required": false; "isSignal": true; }; "threadsLoading": { "alias": "threadsLoading"; "required": false; "isSignal": true; }; "threadsFetching": { "alias": "threadsFetching"; "required": false; "isSignal": true; }; "threadsHasMore": { "alias": "threadsHasMore"; "required": false; "isSignal": true; }; "emptyPreviewIcons": { "alias": "emptyPreviewIcons"; "required": false; "isSignal": true; }; "fullScreenable": { "alias": "fullScreenable"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "draft": { "alias": "draft"; "required": false; "isSignal": true; }; "threadsOpen": { "alias": "threadsOpen"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, { "draft": "draftChange"; "threadsOpen": "threadsOpenChange"; "fullScreen": "fullScreenChange"; "send": "send"; "stop": "stop"; "retry": "retry"; "newThread": "newThread"; "closed": "closed"; "selectThread": "selectThread"; "deleteThread": "deleteThread"; "searchThreads": "searchThreads"; "loadMoreThreads": "loadMoreThreads"; "feedbackChange": "feedbackChange"; }, ["extraTemplate"], never, true, never>;
707
709
  }
708
710
 
709
711
  /**
@@ -148,6 +148,12 @@ declare class RtSelectComponent<TValue> extends RtFormControlBase<TValue | null>
148
148
  protected getEmptyValue(): TValue | null;
149
149
  protected focusAfterClear(): void;
150
150
  protected clear(event?: Event): void;
151
+ /**
152
+ * Открытый список встаёт подсветкой на выбранный пункт.
153
+ *
154
+ * Иначе стрелка вниз начинала с первого пункта, и человек с выбранным «20» из «10, 20, 40»
155
+ * получал «10» вместо «40».
156
+ */
151
157
  protected onOpened(): void;
152
158
  protected toggleBranch(event: Event, value: TValue): void;
153
159
  protected onClosed(): void;