@rt-tools/ui-kit-v2 0.17.0 → 0.19.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 (328) hide show
  1. package/README.md +21 -2
  2. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +79 -0
  3. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -0
  4. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +233 -0
  5. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -0
  6. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +97 -0
  7. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -0
  8. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +47 -0
  9. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -0
  10. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +709 -0
  11. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -0
  12. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +214 -0
  13. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -0
  14. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +53 -0
  15. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -0
  16. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +88 -0
  17. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +365 -0
  19. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -0
  20. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +152 -0
  21. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -0
  22. package/fesm2022/rt-tools-ui-kit-v2-card.mjs +72 -0
  23. package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -0
  24. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +111 -0
  25. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +76 -0
  27. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -0
  28. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +255 -0
  29. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -0
  30. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1326 -0
  31. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +81 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -0
  34. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2688 -0
  35. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -0
  36. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +45 -0
  37. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -0
  38. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +158 -0
  39. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -0
  40. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +894 -0
  41. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -0
  42. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +1217 -0
  43. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -0
  44. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +779 -0
  45. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -0
  46. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +573 -0
  47. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -0
  48. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +141 -0
  49. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -0
  50. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +68 -0
  51. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -0
  52. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +478 -0
  53. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -0
  54. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +183 -0
  55. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -0
  56. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +44 -0
  57. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -0
  58. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +260 -0
  59. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -0
  60. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +1036 -0
  61. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -0
  62. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +56 -0
  63. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +107 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -0
  66. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +183 -0
  67. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -0
  68. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +219 -0
  69. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -0
  70. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +214 -0
  71. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -0
  72. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +117 -0
  73. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -0
  74. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +32 -0
  75. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -0
  76. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +91 -0
  77. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -0
  78. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +220 -0
  79. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -0
  80. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +72 -0
  81. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -0
  82. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +163 -0
  83. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -0
  84. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +711 -0
  85. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -0
  86. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +540 -0
  87. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -0
  88. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +227 -0
  89. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -0
  90. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +37 -0
  91. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -0
  92. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +361 -0
  93. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -0
  94. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +143 -0
  95. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -0
  96. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +49 -0
  97. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -0
  98. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +97 -0
  99. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -0
  100. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +57 -0
  101. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -0
  102. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +537 -0
  103. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -0
  104. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +105 -0
  105. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -0
  106. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +71 -0
  107. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -0
  108. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +315 -0
  109. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -0
  110. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +51 -0
  111. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -0
  112. package/fesm2022/rt-tools-ui-kit-v2-note.mjs +44 -0
  113. package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -0
  114. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +54 -0
  115. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -0
  116. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +339 -0
  117. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -0
  118. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +187 -0
  119. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -0
  120. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +170 -0
  121. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -0
  122. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +312 -0
  123. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -0
  124. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs +46 -0
  125. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -0
  126. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +174 -0
  127. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -0
  128. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +56 -0
  129. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -0
  130. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +336 -12
  131. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  132. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +118 -0
  133. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -0
  134. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +290 -0
  135. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -0
  136. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +37 -0
  137. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -0
  138. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +495 -0
  139. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -0
  140. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +1493 -0
  141. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -0
  142. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +49 -0
  143. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -0
  144. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +123 -0
  145. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -0
  146. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +70 -0
  147. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -0
  148. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +92 -0
  149. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -0
  150. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +147 -0
  151. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -0
  152. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +117 -0
  153. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -0
  154. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +1636 -0
  155. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -0
  156. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +350 -0
  157. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -0
  158. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +122 -0
  159. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -0
  160. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +85 -0
  161. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -0
  162. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +73 -0
  163. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -0
  164. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +222 -0
  165. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -0
  166. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +39 -0
  167. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -0
  168. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +338 -0
  169. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -0
  170. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +132 -0
  171. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -0
  172. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +162 -0
  173. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -0
  174. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +135 -0
  175. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -0
  176. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +214 -0
  177. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -0
  178. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +64 -0
  179. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -0
  180. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +263 -0
  181. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -0
  182. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +296 -0
  183. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -0
  184. package/fesm2022/rt-tools-ui-kit-v2.mjs +94 -23819
  185. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  186. package/package.json +361 -1
  187. package/rt-tools-ui-kit-v2-0.19.0.tgz +0 -0
  188. package/src/assets/icons/sparkle.svg +9 -0
  189. package/src/assets/icons/thumb-down.svg +10 -0
  190. package/src/assets/icons/thumb-up.svg +9 -0
  191. package/src/assets/icons/trash-x.svg +7 -0
  192. package/src/assets/icons-material/sparkle.fill.svg +5 -0
  193. package/src/assets/icons-material/sparkle.svg +5 -0
  194. package/src/assets/icons-material/thumb-down.fill.svg +5 -0
  195. package/src/assets/icons-material/thumb-down.svg +5 -0
  196. package/src/assets/icons-material/thumb-up.fill.svg +5 -0
  197. package/src/assets/icons-material/thumb-up.svg +5 -0
  198. package/src/assets/icons-material/trash-x.fill.svg +5 -0
  199. package/src/assets/icons-material/trash-x.svg +5 -0
  200. package/src/lib/components/action-bar/CONTEXT.md +8 -2
  201. package/src/lib/components/action-bar/rt-action-bar-holder.component.scss +10 -7
  202. package/src/lib/components/action-bar/rt-action-bar.component.scss +82 -34
  203. package/src/lib/components/ai-run-status/CONTEXT.md +36 -0
  204. package/src/lib/components/ai-run-status/rt-ai-run-status.component.scss +119 -0
  205. package/src/lib/components/aside/CONTEXT.md +1 -0
  206. package/src/lib/components/aside/header/rt-aside-header.component.scss +27 -11
  207. package/src/lib/components/copy-value/CONTEXT.md +31 -0
  208. package/src/lib/components/copy-value/rt-copy-value.component.scss +39 -0
  209. package/src/lib/components/data-list/settings/rt-data-list-settings-aside.component.scss +5 -5
  210. package/src/lib/components/dot-field/CONTEXT.md +31 -0
  211. package/src/lib/components/dot-field/rt-dot-field.component.scss +20 -0
  212. package/src/lib/components/dot-field/stories/component/CONTEXT.md +14 -0
  213. package/src/lib/components/dot-field/stories/component/test-dot-field.component.scss +31 -0
  214. package/src/lib/components/dynamic-selector/CONTEXT.md +18 -0
  215. package/src/lib/components/dynamic-selector/list/rt-dynamic-selector-list.component.scss +29 -1
  216. package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup.component.scss +84 -25
  217. package/src/lib/components/empty-state/CONTEXT.md +2 -1
  218. package/src/lib/components/empty-state/rt-empty-state.component.scss +4 -2
  219. package/src/lib/components/field/CONTEXT.md +18 -2
  220. package/src/lib/components/icon/CONTEXT.md +16 -12
  221. package/src/lib/components/icon/rt-icon.component.scss +13 -3
  222. package/src/lib/components/prompt-suggestion/CONTEXT.md +29 -0
  223. package/src/lib/components/prompt-suggestion/rt-prompt-suggestion.component.scss +58 -0
  224. package/src/lib/components/select/rt-select.component.scss +4 -0
  225. package/src/lib/components/thread-list/CONTEXT.md +4 -0
  226. package/src/lib/components/thread-list/rt-thread-list.component.scss +29 -0
  227. package/src/lib/components/toolbar/CONTEXT.md +4 -0
  228. package/src/lib/components/toolbar/rt-toolbar.component.scss +7 -0
  229. package/src/rich-editor/lib/components/ai-chat/CONTEXT.md +58 -0
  230. package/src/rich-editor/lib/components/ai-chat/answer/rt-ai-chat-answer.component.scss +12 -0
  231. package/src/rich-editor/lib/components/ai-chat/rt-ai-chat.component.scss +222 -0
  232. package/src/rich-editor/lib/components/rich-editor/rt-rich-editor.component.scss +3 -0
  233. package/src/styles/_scrollbar.scss +9 -0
  234. package/src/styles/_semantic.scss +1 -1
  235. package/styles/tokens.css +11 -8
  236. package/types/rt-tools-ui-kit-v2-accordion.d.ts +30 -0
  237. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +149 -0
  238. package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +49 -0
  239. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +25 -0
  240. package/types/rt-tools-ui-kit-v2-aside.d.ts +444 -0
  241. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +78 -0
  242. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +41 -0
  243. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +20 -0
  244. package/types/rt-tools-ui-kit-v2-button.d.ts +76 -0
  245. package/types/rt-tools-ui-kit-v2-calendar.d.ts +96 -0
  246. package/types/rt-tools-ui-kit-v2-card.d.ts +38 -0
  247. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +46 -0
  248. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +20 -0
  249. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +85 -0
  250. package/types/rt-tools-ui-kit-v2-container.d.ts +425 -0
  251. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +29 -0
  252. package/types/rt-tools-ui-kit-v2-core.d.ts +1262 -0
  253. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +22 -0
  254. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -0
  255. package/types/rt-tools-ui-kit-v2-data-list.d.ts +334 -0
  256. package/types/rt-tools-ui-kit-v2-data-table.d.ts +494 -0
  257. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +181 -0
  258. package/types/rt-tools-ui-kit-v2-date-range.d.ts +98 -0
  259. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +20 -0
  260. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +33 -0
  261. package/types/rt-tools-ui-kit-v2-dialog.d.ts +287 -0
  262. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +17 -0
  263. package/types/rt-tools-ui-kit-v2-download-link.d.ts +17 -0
  264. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +139 -0
  265. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +423 -0
  266. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +29 -0
  267. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +57 -0
  268. package/types/rt-tools-ui-kit-v2-field.d.ts +82 -0
  269. package/types/rt-tools-ui-kit-v2-file-card.d.ts +114 -0
  270. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -0
  271. package/types/rt-tools-ui-kit-v2-file-input.d.ts +48 -0
  272. package/types/rt-tools-ui-kit-v2-file-list.d.ts +13 -0
  273. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +72 -0
  274. package/types/rt-tools-ui-kit-v2-form-control.d.ts +74 -0
  275. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -0
  276. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +113 -0
  277. package/types/rt-tools-ui-kit-v2-icon.d.ts +246 -0
  278. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +168 -0
  279. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +102 -0
  280. package/types/rt-tools-ui-kit-v2-info-item.d.ts +13 -0
  281. package/types/rt-tools-ui-kit-v2-input-number.d.ts +67 -0
  282. package/types/rt-tools-ui-kit-v2-input.d.ts +54 -0
  283. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +23 -0
  284. package/types/rt-tools-ui-kit-v2-logo.d.ts +58 -0
  285. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +30 -0
  286. package/types/rt-tools-ui-kit-v2-menu.d.ts +217 -0
  287. package/types/rt-tools-ui-kit-v2-message.d.ts +56 -0
  288. package/types/rt-tools-ui-kit-v2-money-list.d.ts +34 -0
  289. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +93 -0
  290. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +39 -0
  291. package/types/rt-tools-ui-kit-v2-note.d.ts +21 -0
  292. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +23 -0
  293. package/types/rt-tools-ui-kit-v2-page-header.d.ts +173 -0
  294. package/types/rt-tools-ui-kit-v2-pagination.d.ts +64 -0
  295. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +98 -0
  296. package/types/rt-tools-ui-kit-v2-popover.d.ts +79 -0
  297. package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +21 -0
  298. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +61 -0
  299. package/types/rt-tools-ui-kit-v2-radius.d.ts +37 -0
  300. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +186 -2
  301. package/types/rt-tools-ui-kit-v2-ripple.d.ts +39 -0
  302. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +91 -0
  303. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +23 -0
  304. package/types/rt-tools-ui-kit-v2-select.d.ts +215 -0
  305. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +483 -0
  306. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +32 -0
  307. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +41 -0
  308. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -0
  309. package/types/rt-tools-ui-kit-v2-split-button.d.ts +72 -0
  310. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +81 -0
  311. package/types/rt-tools-ui-kit-v2-stepper.d.ts +51 -0
  312. package/types/rt-tools-ui-kit-v2-table.d.ts +739 -0
  313. package/types/rt-tools-ui-kit-v2-tabs.d.ts +153 -0
  314. package/types/rt-tools-ui-kit-v2-tag.d.ts +70 -0
  315. package/types/rt-tools-ui-kit-v2-textarea.d.ts +36 -0
  316. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +43 -0
  317. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +124 -0
  318. package/types/rt-tools-ui-kit-v2-timeline.d.ts +35 -0
  319. package/types/rt-tools-ui-kit-v2-toast.d.ts +103 -0
  320. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +109 -0
  321. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +85 -0
  322. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +66 -0
  323. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +74 -0
  324. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +33 -0
  325. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +128 -0
  326. package/types/rt-tools-ui-kit-v2-workspace.d.ts +84 -0
  327. package/types/rt-tools-ui-kit-v2.d.ts +90 -9599
  328. package/rt-tools-ui-kit-v2-0.17.0.tgz +0 -0
@@ -0,0 +1,58 @@
1
+ # `rt-ai-chat`
2
+
3
+ ```html
4
+ <rt-ai-chat
5
+ title="Ava"
6
+ placeholder="Ask Ava…"
7
+ fullScreenable
8
+ [messages]="messages()"
9
+ [suggestions]="suggestions"
10
+ [sending]="running()"
11
+ [error]="runError()"
12
+ [threads]="threads()"
13
+ [activeThreadId]="threadId()"
14
+ [(fullScreen)]="fullScreen"
15
+ (send)="ask($event)"
16
+ (stop)="stop()"
17
+ (retry)="retry()"
18
+ (newThread)="newThread()"
19
+ (selectThread)="open($event)"
20
+ (deleteThread)="confirmDelete($event)"
21
+ (feedbackChange)="rate($event)"
22
+ (closed)="close()">
23
+ <ng-template let-message rtAiChatMessageExtra>…графики ответа…</ng-template>
24
+ </rt-ai-chat>
25
+ ```
26
+
27
+ Спек — `docs/specs/ui-kit-v2/ai-chat/`; здесь только устройство папки.
28
+
29
+ ## Главное, что нужно знать
30
+
31
+ **Организм презентационный.** Сообщения с ходом работы, беседы и ошибка приходят входами, действия
32
+ уходят выходами. Поток событий модели разбирает приложение и отдаёт готовый `IRtAiChat.Message[]`.
33
+
34
+ **Живёт во входе `rich-editor`**: держит `rt-message-composer`, а тот тянет quill.
35
+
36
+ **Высоту задаёт родитель.** Хост — колонка на `block-size: 100%`; без высоты у родителя лента
37
+ меряется по содержимому и не прокручивается.
38
+
39
+ ## Края
40
+
41
+ - `fullScreen`, `threadsOpen`, `draft` — `model()`: атрибут без значения даёт пустую строку, то
42
+ есть ложь. Пишется `[fullScreen]="true"`.
43
+ - Фокус переводит сам организм: на «назад» при открытии бесед, в поле сообщения после выбора
44
+ беседы, новой беседы, «Стоп» и возврата к ленте. Приложению — `focusComposer()`.
45
+ - Открытые шаги хода работы — внутреннее состояние (`openRuns`), по id ответа.
46
+ - Лента держится у низа, пока человек внизу: `nextAtBottom` и `RT_CHAT_PIN_RETRY_DELAYS_MS` из
47
+ логики `rt-chat`. Отправка вопроса и выбор беседы прижимают ленту к низу всегда.
48
+ - Удаление беседы — действие строки `rt-thread-list` (`rtThreadListRowActions`), подтверждение —
49
+ на приложении.
50
+ - Подсветка совпадений поиска по беседам — `splitSideMenuTitle`.
51
+ - Ответ рисует внутренний `rt-ai-chat-answer` (папка `answer/`): без него шаблон организма
52
+ превышает предел цикломатической сложности.
53
+
54
+ ## Рядом
55
+
56
+ - [`rt-chat`](../chat/CONTEXT.md) — переписка людей.
57
+ - [`rt-ai-run-status`](../../../../lib/components/ai-run-status/CONTEXT.md) — строка хода работы.
58
+ - [`rt-thread-list`](../../../../lib/components/thread-list/CONTEXT.md) — список бесед.
@@ -0,0 +1,12 @@
1
+ @layer rt-kit.components {
2
+ .rt-ai-chat-answer {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: var(--rt-space-sm);
6
+
7
+ &__feedback {
8
+ display: flex;
9
+ gap: var(--rt-space-xs);
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,222 @@
1
+ @layer rt-kit.components {
2
+ /* rt-ai-chat — панель ИИ-ассистента. ViewEncapsulation.None.
3
+ Корень шаблона — ng-container: класс блока висит на хосте. Высоту задаёт родитель. */
4
+
5
+ .rt-ai-chat {
6
+ --rt-ai-chat-bubble-radius: var(--rt-radius-xl);
7
+ --rt-ai-chat-column-border-width: var(--rt-border-width-thin);
8
+ --rt-ai-chat-column-width: 280px;
9
+ --rt-ai-chat-match-bg: var(--rt-yellow-400);
10
+ --rt-ai-chat-match-color: var(--rt-neutral-950);
11
+ --rt-ai-chat-match-radius: var(--rt-radius-xs);
12
+ --rt-ai-chat-unread-radius: var(--rt-radius-full);
13
+
14
+ display: flex;
15
+ overflow: hidden;
16
+ background: var(--rt-color-bg-surface);
17
+ block-size: 100%;
18
+ color: var(--rt-color-text-primary);
19
+ min-block-size: 0;
20
+
21
+ &__thread-column {
22
+ display: flex;
23
+ flex: none;
24
+ flex-direction: column;
25
+ border-inline-end: var(--rt-ai-chat-column-border-width) solid var(--rt-color-border-default);
26
+ inline-size: var(--rt-ai-chat-column-width);
27
+ }
28
+
29
+ &__column-head {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: space-between;
33
+ padding: var(--rt-space-sm) var(--rt-space-md);
34
+ gap: var(--rt-space-xs);
35
+ }
36
+
37
+ &__column-title {
38
+ font-size: var(--rt-text-md);
39
+ font-weight: var(--rt-font-weight-semibold);
40
+ }
41
+
42
+ &__conversation {
43
+ display: flex;
44
+ flex: 1 1 auto;
45
+ flex-direction: column;
46
+ min-block-size: 0;
47
+ min-inline-size: 0;
48
+ }
49
+
50
+ &__header {
51
+ display: flex;
52
+ flex: none;
53
+ align-items: center;
54
+ padding: var(--rt-space-sm) var(--rt-space-md);
55
+ gap: var(--rt-space-xs);
56
+ }
57
+
58
+ &__heading {
59
+ display: flex;
60
+ flex: 1 1 auto;
61
+ flex-direction: column;
62
+ min-inline-size: 0;
63
+ }
64
+
65
+ &__title {
66
+ display: inline-flex;
67
+ align-items: center;
68
+ font-size: var(--rt-text-md);
69
+ font-weight: var(--rt-font-weight-semibold);
70
+ gap: var(--rt-space-xs);
71
+ line-height: var(--rt-leading-snug);
72
+ }
73
+
74
+ &__subtitle {
75
+ overflow: hidden;
76
+ color: var(--rt-color-text-muted);
77
+ font-size: var(--rt-text-xs);
78
+ line-height: var(--rt-leading-snug);
79
+ text-overflow: ellipsis;
80
+ white-space: nowrap;
81
+ }
82
+
83
+ &__actions {
84
+ display: flex;
85
+ flex: none;
86
+ align-items: center;
87
+ gap: var(--rt-space-xs);
88
+ }
89
+
90
+ &__feed {
91
+ display: flex;
92
+ flex: 1 1 auto;
93
+ flex-direction: column;
94
+ padding: var(--rt-space-md);
95
+ font-size: var(--rt-text-sm);
96
+ gap: var(--rt-space-md);
97
+ min-block-size: 0;
98
+ overflow-y: auto;
99
+ }
100
+
101
+ &__spinner {
102
+ align-self: center;
103
+ margin: auto;
104
+ }
105
+
106
+ &__empty {
107
+ display: flex;
108
+ flex-direction: column;
109
+ justify-content: center;
110
+ gap: var(--rt-space-lg);
111
+ margin-block: auto;
112
+ }
113
+
114
+ &__suggestions {
115
+ display: flex;
116
+ flex-direction: column;
117
+ gap: var(--rt-space-sm);
118
+ }
119
+
120
+ &__question {
121
+ display: flex;
122
+ justify-content: flex-end;
123
+ }
124
+
125
+ &__bubble {
126
+ display: flex;
127
+ flex-direction: column;
128
+ padding: var(--rt-space-sm) var(--rt-space-md);
129
+ border-radius: var(--rt-ai-chat-bubble-radius);
130
+ background: var(--rt-color-bg-subtle);
131
+ gap: var(--rt-space-2xs);
132
+ max-inline-size: 80%;
133
+ }
134
+
135
+ &__author,
136
+ &__time {
137
+ color: var(--rt-color-text-muted);
138
+ font-size: var(--rt-text-xs);
139
+ line-height: var(--rt-leading-snug);
140
+ }
141
+
142
+ &__author {
143
+ font-weight: var(--rt-font-weight-semibold);
144
+ }
145
+
146
+ &__bubble-text {
147
+ margin: 0;
148
+ line-height: var(--rt-leading-normal);
149
+ overflow-wrap: anywhere;
150
+ white-space: pre-wrap;
151
+ }
152
+
153
+ &__error {
154
+ display: flex;
155
+ flex-direction: column;
156
+ align-items: flex-start;
157
+ gap: var(--rt-space-sm);
158
+
159
+ rt-message {
160
+ align-self: stretch;
161
+ }
162
+ }
163
+
164
+ &__composer {
165
+ box-sizing: border-box;
166
+ flex: none;
167
+ padding: var(--rt-space-sm) var(--rt-space-md) 0;
168
+ }
169
+
170
+ &__disclaimer {
171
+ flex: none;
172
+ padding: var(--rt-space-xs) var(--rt-space-md) var(--rt-space-sm);
173
+ margin: 0;
174
+ color: var(--rt-color-text-muted);
175
+ font-size: var(--rt-text-xs);
176
+ line-height: var(--rt-leading-snug);
177
+ text-align: center;
178
+ }
179
+
180
+ &__threads {
181
+ flex: 1 1 auto;
182
+ min-block-size: 0;
183
+ }
184
+
185
+ &__thread-title {
186
+ overflow: hidden;
187
+ min-inline-size: 0;
188
+ text-overflow: ellipsis;
189
+ white-space: nowrap;
190
+ }
191
+
192
+ &__thread-part {
193
+ &--match {
194
+ border-radius: var(--rt-ai-chat-match-radius);
195
+ background: var(--rt-ai-chat-match-bg);
196
+ color: var(--rt-ai-chat-match-color);
197
+ }
198
+ }
199
+
200
+ &__thread-meta {
201
+ display: flex;
202
+ flex: none;
203
+ align-items: center;
204
+ gap: var(--rt-space-xs);
205
+ }
206
+
207
+ &__thread-unread {
208
+ border-radius: var(--rt-ai-chat-unread-radius);
209
+ background: var(--rt-color-action-primary);
210
+ color: var(--rt-color-text-inverse);
211
+ font-size: var(--rt-text-xs);
212
+ font-weight: var(--rt-font-weight-semibold);
213
+ line-height: 18px;
214
+ padding-inline: 6px;
215
+ }
216
+
217
+ &__thread-time {
218
+ color: var(--rt-color-text-muted);
219
+ font-size: var(--rt-text-xs);
220
+ }
221
+ }
222
+ }
@@ -37,10 +37,13 @@
37
37
  overflow-y: auto;
38
38
  }
39
39
 
40
+ // Зону ввода рисует Quill, и класса кита у неё нет: сброс полосы для узлов приложения под
41
+ // узлом кита вернул бы ей полосу браузера. Она наследует тихую полосу редактора, как раньше.
40
42
  .ql-editor {
41
43
  background-color: var(--rt-color-bg-surface-subtle);
42
44
  color: var(--rt-color-text-primary);
43
45
  min-block-size: 96px;
46
+ scrollbar-color: inherit;
44
47
  }
45
48
 
46
49
  .ql-editor.ql-blank:before {
@@ -14,6 +14,15 @@
14
14
  scrollbar-width: thin;
15
15
  }
16
16
 
17
+ // `scrollbar-color` наследуется, и без этого правила прокручиваемый узел приложения внутри узла
18
+ // кита получал прозрачную полосу кита, а Chrome при заданном свойстве не читал его
19
+ // `::-webkit-scrollbar`. Первый узел без класса кита под узлом кита возвращает умолчание
20
+ // браузера, и всё под ним наследует уже его. Вес селектора нулевой: правило приложения на том же
21
+ // узле перебивает и его.
22
+ :where([class^='rt-'], [class*=' rt-']) > :where(:not([class^='rt-'], [class*=' rt-'])) {
23
+ scrollbar-color: auto;
24
+ }
25
+
17
26
  // Проявляется ползунок наведением на саму зону, а не на себя: навести на невидимое нечем.
18
27
  // Фокус внутри зоны показывает его наравне — прокрутка с клавиатуры идёт без указателя, и
19
28
  // человек иначе не видит ни того, где он в списке, ни того, что список прокручивается.
@@ -311,7 +311,7 @@
311
311
 
312
312
  /* Typography */
313
313
  --rt-input-font-size: var(--rt-text-sm);
314
- --rt-input-line-height: var(--rt-leading-none);
314
+ --rt-input-line-height: var(--rt-leading-snug);
315
315
 
316
316
  /* State / motion */
317
317
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
package/styles/tokens.css CHANGED
@@ -715,7 +715,7 @@
715
715
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
716
716
  /* Typography */
717
717
  --rt-input-font-size: var(--rt-text-sm);
718
- --rt-input-line-height: var(--rt-leading-none);
718
+ --rt-input-line-height: var(--rt-leading-snug);
719
719
  /* State / motion */
720
720
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
721
721
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -1624,7 +1624,7 @@ html.rt-theme-dark {
1624
1624
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
1625
1625
  /* Typography */
1626
1626
  --rt-input-font-size: var(--rt-text-sm);
1627
- --rt-input-line-height: var(--rt-leading-none);
1627
+ --rt-input-line-height: var(--rt-leading-snug);
1628
1628
  /* State / motion */
1629
1629
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
1630
1630
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -2116,7 +2116,7 @@ html.rt-theme-dark {
2116
2116
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
2117
2117
  /* Typography */
2118
2118
  --rt-input-font-size: var(--rt-text-sm);
2119
- --rt-input-line-height: var(--rt-leading-none);
2119
+ --rt-input-line-height: var(--rt-leading-snug);
2120
2120
  /* State / motion */
2121
2121
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
2122
2122
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -2749,7 +2749,7 @@ html.rt-theme-dark {
2749
2749
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
2750
2750
  /* Typography */
2751
2751
  --rt-input-font-size: var(--rt-text-sm);
2752
- --rt-input-line-height: var(--rt-leading-none);
2752
+ --rt-input-line-height: var(--rt-leading-snug);
2753
2753
  /* State / motion */
2754
2754
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
2755
2755
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -3444,7 +3444,7 @@ html.rt-theme-dark .rt-preset-material {
3444
3444
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
3445
3445
  /* Typography */
3446
3446
  --rt-input-font-size: var(--rt-text-sm);
3447
- --rt-input-line-height: var(--rt-leading-none);
3447
+ --rt-input-line-height: var(--rt-leading-snug);
3448
3448
  /* State / motion */
3449
3449
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
3450
3450
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -4309,7 +4309,7 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
4309
4309
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
4310
4310
  /* Typography */
4311
4311
  --rt-input-font-size: var(--rt-text-sm);
4312
- --rt-input-line-height: var(--rt-leading-none);
4312
+ --rt-input-line-height: var(--rt-leading-snug);
4313
4313
  /* State / motion */
4314
4314
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
4315
4315
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -5003,7 +5003,7 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
5003
5003
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
5004
5004
  /* Typography */
5005
5005
  --rt-input-font-size: var(--rt-text-sm);
5006
- --rt-input-line-height: var(--rt-leading-none);
5006
+ --rt-input-line-height: var(--rt-leading-snug);
5007
5007
  /* State / motion */
5008
5008
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
5009
5009
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -5694,7 +5694,7 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
5694
5694
  --rt-input-focus-outline-offset: var(--rt-border-width-thin);
5695
5695
  /* Typography */
5696
5696
  --rt-input-font-size: var(--rt-text-sm);
5697
- --rt-input-line-height: var(--rt-leading-none);
5697
+ --rt-input-line-height: var(--rt-leading-snug);
5698
5698
  /* State / motion */
5699
5699
  --rt-input-disabled-opacity: var(--rt-opacity-disabled);
5700
5700
  --rt-input-focus-shadow: var(--rt-shadow-focus-ring);
@@ -6342,6 +6342,9 @@ html.rt-theme-dark.rt-preset-material {
6342
6342
  scrollbar-color: transparent transparent;
6343
6343
  scrollbar-width: thin;
6344
6344
  }
6345
+ :where([class^=rt-], [class*=" rt-"]) > :where(:not([class^=rt-], [class*=" rt-"])) {
6346
+ scrollbar-color: auto;
6347
+ }
6345
6348
  :where([class^=rt-], [class*=" rt-"]):hover,
6346
6349
  :where([class^=rt-], [class*=" rt-"]):focus-within {
6347
6350
  scrollbar-color: var(--rt-color-border-default) transparent;
@@ -0,0 +1,30 @@
1
+ import * as i0 from '@angular/core';
2
+ import { WritableSignal, InputSignal } from '@angular/core';
3
+
4
+ declare namespace IRtAccordion {
5
+ /** Пункт аккордеона: заголовок раскрывает текст под собой. Строки приходят уже переведёнными. */
6
+ interface Item {
7
+ readonly title: string;
8
+ readonly text: string;
9
+ }
10
+ }
11
+
12
+ /**
13
+ * Список пунктов, у каждого заголовок-кнопка и текст под ней. Нажатие раскрывает или сворачивает
14
+ * пункт, соседи остаются как были. Предмета показа аккордеон не знает: пункты приходят входом уже
15
+ * переведёнными.
16
+ */
17
+ declare class RtAccordionComponent {
18
+ /** Основа id кнопок и панелей: два аккордеона на одной странице не ссылаются на чужие панели. */
19
+ protected readonly idBase: string;
20
+ /** Пришёл новый список — раскрытие начинается заново с пункта из входа. */
21
+ protected readonly open: WritableSignal<ReadonlySet<number>>;
22
+ readonly items: InputSignal<readonly IRtAccordion.Item[]>;
23
+ /** Пункт, раскрытый при входе. `null` оставляет все свёрнутыми. */
24
+ readonly openIndex: InputSignal<number | null>;
25
+ protected toggle(index: number): void;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtAccordionComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtAccordionComponent, "rt-accordion", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "openIndex": { "alias": "openIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
28
+ }
29
+
30
+ export { IRtAccordion, RtAccordionComponent };
@@ -0,0 +1,149 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Signal, InputSignal, OutputEmitterRef } from '@angular/core';
3
+ import { IRtIcon } from '@rt-tools/ui-kit-v2/core';
4
+ import * as i1 from '@rt-tools/ui-kit-v2/radius';
5
+
6
+ /**
7
+ * Контракты полосы массовых действий. Один корневой неймспейс с префиксом `I`.
8
+ *
9
+ * Отличие от договора первого кита одно и оно намеренное: произвольного объекта
10
+ * стилей на действии здесь нет. Вид кнопки называется именем из набора кита —
11
+ * значение цвета в разметку не приходит вовсе.
12
+ */
13
+ declare namespace IRtActionBar {
14
+ /** Вид действия: тем же именем, каким его зовёт кнопка кита. */
15
+ type Look = 'plain' | 'danger';
16
+ /**
17
+ * Одно нажатие в полосе. Либо `run` — то, что действие делает, — либо `menu`:
18
+ * вложенный список. Действие с вложенным списком само не срабатывает: оно
19
+ * заголовок группы, и запуск его наравне с раскрытием запустил бы то, чего
20
+ * человек не выбирал.
21
+ */
22
+ interface Action {
23
+ readonly label: string;
24
+ readonly icon?: IRtIcon.Name;
25
+ /**
26
+ * Имя Material вместо значка кита: рисуется так же, как вход `glyph` у `rt-icon` — парой из
27
+ * перечня кита или лигатурой шрифта. Значок кита, заданный рядом, сильнее.
28
+ */
29
+ readonly glyph?: string;
30
+ readonly look?: IRtActionBar.Look;
31
+ readonly run?: () => void;
32
+ readonly menu?: readonly IRtActionBar.Action[];
33
+ }
34
+ /**
35
+ * Настройка полосы целиком. Счёт приходит парой: сколько выбрано и сколько
36
+ * всего. Полоса ничего из этого не считает — ей дают числа.
37
+ */
38
+ interface Config {
39
+ readonly selected: number;
40
+ readonly total: number;
41
+ readonly actions: readonly IRtActionBar.Action[];
42
+ }
43
+ }
44
+ /**
45
+ * Сколько полоса держится в разметке после закрытия — ровно длительность ухода
46
+ * из стилей.
47
+ *
48
+ * Число живёт здесь, а не только в правиле стиля: разметку снимает держатель, и,
49
+ * разойдясь с правилом, он обрывает уход на полпути. Держателю и стилям нужно
50
+ * одно и то же число, поэтому оно объявлено рядом с договором, а не в одном из них.
51
+ */
52
+ declare const RT_ACTION_BAR_LEAVE_MS: number;
53
+
54
+ /** Действие вместе с готовой записью модификаторов: шаблон методов не зовёт. */
55
+ interface IActionView {
56
+ readonly action: IRtActionBar.Action;
57
+ readonly modifiers: Readonly<Record<string, boolean>>;
58
+ /**
59
+ * Имя кнопки для вспомогательных средств — у действия со значком. На грубом указателе подпись
60
+ * снята правилом стиля, а значок немой: без имени кнопка осталась бы безымянной.
61
+ */
62
+ readonly ariaLabel: string | null;
63
+ }
64
+ /**
65
+ * Полоса массовых действий: счёт слева, действия рядом, крестик справа.
66
+ *
67
+ * Своего состояния не держит вовсе — ни выбранного, ни открытости. Ей дают
68
+ * настройку входом, а наружу она сообщает две вещи: что нажали действие и что
69
+ * нажали крестик. Держатель `rt-action-bar-holder` решает, стоит ли она в
70
+ * разметке и где над страницей приколота.
71
+ *
72
+ * Действие с вложенным списком само не срабатывает: оно заголовок группы, и
73
+ * список раскрывается всплывающим слоем кита. Нажатие пункта списка закрывает
74
+ * полосу так же, как нажатие обычного действия: где человек нажал — в полосе
75
+ * или на шаг глубже — о трате выбранного не говорит ничего.
76
+ */
77
+ declare class RtActionBarComponent {
78
+ #private;
79
+ protected readonly countText: Signal<string>;
80
+ protected readonly closeLabel: Signal<string>;
81
+ /**
82
+ * Действия с готовыми модификаторами. Признак значка стоит модификатором, а не
83
+ * условием в шаблоне: подпись у действия со значком снимает правило стиля по
84
+ * грубому указателю, и решать это условием значило бы увезти оформление в код.
85
+ */
86
+ protected readonly actions: Signal<readonly IActionView[]>;
87
+ readonly config: InputSignal<IRtActionBar.Config>;
88
+ /** Значок кнопки, закрывающей полосу. */
89
+ readonly closeIcon: InputSignal<IRtIcon.Name>;
90
+ readonly actionRun: OutputEmitterRef<IRtActionBar.Action>;
91
+ readonly closed: OutputEmitterRef<void>;
92
+ protected onAction(action: IRtActionBar.Action): void;
93
+ protected onClose(): void;
94
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtActionBarComponent, never>;
95
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtActionBarComponent, "rt-action-bar", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "closeIcon": { "alias": "closeIcon"; "required": false; "isSignal": true; }; }, { "actionRun": "actionRun"; "closed": "closed"; }, never, never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
96
+ }
97
+
98
+ /**
99
+ * Держатель полосы массовых действий: решает, стоит ли она в разметке, и прикалывает
100
+ * её над страницей. Настройку читает у службы, которую потребитель объявил на своём
101
+ * уровне — там, где у него живёт список.
102
+ *
103
+ * Полоса открывается счётом выбранного, а не своим признаком: два источника одного
104
+ * признака расходятся молча, и признак, оставшийся поднятым над опустевшим выбором,
105
+ * держал бы полосу над страницей, где ничего не выбрано.
106
+ *
107
+ * После закрытия полоса остаётся в разметке ровно на длительность ухода — число одно
108
+ * и лежит в договоре рядом. Разойдясь с правилом стиля, держатель обрывал бы уход на
109
+ * полпути.
110
+ */
111
+ declare class RtActionBarHolderComponent {
112
+ #private;
113
+ protected readonly config: Signal<IRtActionBar.Config>;
114
+ /** Выбрано ли что-нибудь: этим полоса и открывается. */
115
+ protected readonly opened: Signal<boolean>;
116
+ /** Стоит ли полоса в разметке: она остаётся в ней и на время ухода. */
117
+ protected readonly shown: Signal<boolean>;
118
+ protected readonly leaving: Signal<boolean>;
119
+ /** Значок кнопки, закрывающей полосу, — уходит в саму полосу. */
120
+ readonly closeIcon: InputSignal<IRtIcon.Name>;
121
+ constructor();
122
+ /** Крестик сообщает наружу; выбранное отпускает служба, которой список и владеет. */
123
+ protected onClosed(): void;
124
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtActionBarHolderComponent, never>;
125
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtActionBarHolderComponent, "rt-action-bar-holder", never, { "closeIcon": { "alias": "closeIcon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
126
+ }
127
+
128
+ /**
129
+ * Настройка полосы массовых действий: держатель её читает, список — пишет.
130
+ *
131
+ * Служба без корня намеренно. Тот, кто отмечает строки, и тот, кто рисует полосу,
132
+ * стоят на разной глубине одного экрана, и передавать настройку вниз через всё,
133
+ * что между ними, значит рассказать о полосе каждому из них. Потребитель
134
+ * объявляет службу на своём уровне — там, где у него живёт список.
135
+ */
136
+ declare class RtActionBarService {
137
+ #private;
138
+ readonly config: Signal<IRtActionBar.Config>;
139
+ /** Список действий. Счёт не трогается: он приходит своим вызовом. */
140
+ setActions(actions: readonly IRtActionBar.Action[]): void;
141
+ /** Счёт выбранного. Полоса открывается именно им. */
142
+ setCounts(selected: number, total: number): void;
143
+ /** Отпустить выбранное: счёт обнуляется, список действий остаётся. */
144
+ clearSelection(): void;
145
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtActionBarService, never>;
146
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
147
+ }
148
+
149
+ export { IRtActionBar, RT_ACTION_BAR_LEAVE_MS, RtActionBarComponent, RtActionBarHolderComponent, RtActionBarService };
@@ -0,0 +1,49 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Signal, InputSignal, ModelSignal } from '@angular/core';
3
+ import { IRtIcon } from '@rt-tools/ui-kit-v2/core';
4
+ import { IRtTimeline } from '@rt-tools/ui-kit-v2/timeline';
5
+
6
+ declare namespace IRtAiRunStatus {
7
+ /**
8
+ * Состояние хода работы ассистента:
9
+ * - `running` — модель работает: крутилка и бегущий блик по подписи;
10
+ * - `done` — ответ готов;
11
+ * - `stopped` — человек остановил ответ;
12
+ * - `failed` — ответ оборвался ошибкой.
13
+ */
14
+ type State = 'running' | 'done' | 'stopped' | 'failed';
15
+ }
16
+
17
+ /**
18
+ * Строка хода работы ИИ-ассистента: значок состояния, подпись текущего шага или итога, мета
19
+ * (время, число шагов) и раскрытие списка пройденных шагов. Пока модель работает, по подписи
20
+ * бежит блик; при `prefers-reduced-motion` подпись стоит ровным цветом.
21
+ *
22
+ * Компонент презентационный: состояние, подпись и шаги приходят готовыми, разбор потока
23
+ * событий модели остаётся в приложении.
24
+ */
25
+ declare class RtAiRunStatusComponent {
26
+ #private;
27
+ protected readonly stepsId: string;
28
+ protected readonly hasSteps: Signal<boolean>;
29
+ protected readonly isOpen: Signal<boolean>;
30
+ protected readonly mark: Signal<{
31
+ name: IRtIcon.Name;
32
+ color: IRtIcon.Color;
33
+ } | null>;
34
+ protected readonly toggleLabel: Signal<string>;
35
+ readonly state: InputSignal<IRtAiRunStatus.State>;
36
+ /** Подпись: текущий шаг, пока модель работает, или итог — «Worked for 31s». */
37
+ readonly label: InputSignal<string>;
38
+ /** Вторичная строка справа от подписи: время шага или число шагов. Пусто — не рисуется. */
39
+ readonly meta: InputSignal<string>;
40
+ /** Пройденные шаги. Пустой список — строку нельзя раскрыть. */
41
+ readonly steps: InputSignal<readonly IRtTimeline.Step[]>;
42
+ /** Раскрыт ли список шагов. */
43
+ readonly expanded: ModelSignal<boolean>;
44
+ protected onToggle(): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtAiRunStatusComponent, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtAiRunStatusComponent, "rt-ai-run-status", never, { "state": { "alias": "state"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, never, true, never>;
47
+ }
48
+
49
+ export { IRtAiRunStatus, RtAiRunStatusComponent };