@rt-tools/ui-kit-v2 0.23.3 → 0.24.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 (354) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +142 -71
  2. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +467 -231
  4. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +260 -91
  6. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +80 -46
  8. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +984 -697
  10. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +452 -210
  12. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +143 -52
  14. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +158 -83
  16. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +335 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -0
  19. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +437 -363
  20. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
  21. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +430 -149
  22. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  23. package/fesm2022/rt-tools-ui-kit-v2-card.mjs +155 -71
  24. package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -1
  25. package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs +155 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs.map +1 -0
  27. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +215 -110
  28. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
  29. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +158 -75
  30. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -1
  31. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +769 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +462 -253
  34. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -1
  35. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1276 -1316
  36. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
  37. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +185 -80
  38. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
  39. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2321 -2619
  40. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  41. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +100 -44
  42. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -1
  43. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +290 -155
  44. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -1
  45. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +2097 -858
  46. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
  47. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +2247 -1176
  48. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  49. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +1043 -705
  50. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  51. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +810 -525
  52. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  53. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +158 -138
  54. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -1
  55. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +177 -67
  56. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -1
  57. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +550 -477
  58. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -1
  59. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +185 -168
  60. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -1
  61. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +116 -43
  62. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -1
  63. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +585 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +755 -259
  66. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
  67. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +3266 -1115
  68. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  69. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +190 -55
  70. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
  71. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +283 -103
  72. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
  73. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +393 -177
  74. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
  75. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +399 -207
  76. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  77. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +288 -212
  78. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -1
  79. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +262 -116
  80. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -1
  81. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +57 -31
  82. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -1
  83. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +258 -90
  84. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
  85. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +249 -215
  86. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
  87. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +199 -71
  88. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -1
  89. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +231 -0
  90. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -0
  91. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +336 -0
  92. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -0
  93. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +451 -162
  94. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  95. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +931 -686
  96. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
  97. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +664 -491
  98. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -1
  99. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +574 -222
  100. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  101. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +150 -36
  102. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -1
  103. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +606 -0
  104. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -0
  105. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +461 -355
  106. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  107. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +338 -143
  108. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  109. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +135 -48
  110. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -1
  111. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +166 -92
  112. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -1
  113. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +118 -56
  114. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -1
  115. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1054 -527
  116. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
  117. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +230 -104
  118. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -1
  119. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +210 -70
  120. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -1
  121. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +532 -311
  122. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
  123. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +125 -50
  124. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -1
  125. package/fesm2022/rt-tools-ui-kit-v2-note.mjs +73 -43
  126. package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -1
  127. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +161 -53
  128. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -1
  129. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +491 -310
  130. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  131. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +374 -174
  132. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
  133. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +202 -159
  134. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -1
  135. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +438 -309
  136. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -1
  137. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +295 -0
  138. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -0
  139. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs +135 -45
  140. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -1
  141. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +293 -171
  142. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  143. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +62 -55
  144. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -1
  145. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +3379 -1466
  146. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  147. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +114 -116
  148. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -1
  149. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +406 -299
  150. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  151. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +137 -36
  152. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -1
  153. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +687 -468
  154. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  155. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +2195 -1569
  156. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  157. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +187 -48
  158. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -1
  159. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +242 -122
  160. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -1
  161. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +439 -0
  162. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -0
  163. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +218 -69
  164. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -1
  165. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +292 -91
  166. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -1
  167. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +225 -138
  168. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
  169. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +150 -116
  170. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  171. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2462 -1583
  172. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  173. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +647 -346
  174. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  175. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +335 -121
  176. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  177. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +217 -84
  178. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  179. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +151 -72
  180. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  181. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +697 -226
  182. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  183. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +92 -38
  184. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -1
  185. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +752 -338
  186. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  187. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +310 -129
  188. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  189. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +286 -158
  190. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -1
  191. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +270 -134
  192. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
  193. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +322 -202
  194. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  195. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +908 -0
  196. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -0
  197. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +785 -0
  198. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -0
  199. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +118 -63
  200. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -1
  201. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +783 -262
  202. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  203. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +633 -294
  204. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  205. package/fesm2022/rt-tools-ui-kit-v2.mjs +100 -103
  206. package/package.json +45 -1
  207. package/src/assets/icons/collapse-all.svg +9 -0
  208. package/src/assets/icons/expand-all.svg +9 -0
  209. package/src/assets/icons-material/collapse-all.fill.svg +5 -0
  210. package/src/assets/icons-material/collapse-all.svg +5 -0
  211. package/src/assets/icons-material/expand-all.fill.svg +5 -0
  212. package/src/assets/icons-material/expand-all.svg +5 -0
  213. package/src/assets/icons-material/undo.fill.svg +5 -0
  214. package/src/assets/icons-material/undo.svg +5 -0
  215. package/src/lib/components/bottom-sheet/CONTEXT.md +20 -2
  216. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +36 -1
  217. package/src/lib/components/breadcrumbs/CONTEXT.md +37 -0
  218. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +205 -0
  219. package/src/lib/components/carousel/CONTEXT.md +42 -0
  220. package/src/lib/components/carousel/rt-carousel.component.scss +117 -0
  221. package/src/lib/components/checkbox/CONTEXT.md +3 -0
  222. package/src/lib/components/checkbox/rt-checkbox.component.scss +9 -3
  223. package/src/lib/components/color-palette/CONTEXT.md +49 -0
  224. package/src/lib/components/color-palette/picker/rt-color-picker.component.scss +161 -0
  225. package/src/lib/components/color-palette/rt-color-palette.component.scss +132 -0
  226. package/src/lib/components/draggable-tree/CONTEXT.md +54 -0
  227. package/src/lib/components/draggable-tree/rt-draggable-tree.component.scss +219 -0
  228. package/src/lib/components/hybrid-tree/CONTEXT.md +31 -0
  229. package/src/lib/components/hybrid-tree-selector/CONTEXT.md +25 -0
  230. package/src/lib/components/icon-button/CONTEXT.md +3 -0
  231. package/src/lib/components/inline-edit/CONTEXT.md +41 -0
  232. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +274 -0
  233. package/src/lib/components/popover/CONTEXT.md +3 -0
  234. package/src/lib/components/profile-menu/CONTEXT.md +32 -0
  235. package/src/lib/components/profile-menu/rt-profile-menu.component.scss +104 -0
  236. package/src/lib/components/speed-menu/CONTEXT.md +34 -0
  237. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +118 -0
  238. package/src/lib/components/tag/rt-tag.component.scss +12 -0
  239. package/src/lib/components/thread-list/CONTEXT.md +1 -0
  240. package/src/lib/components/thread-list/rt-thread-list.component.scss +2 -1
  241. package/src/lib/components/toolbar/CONTEXT.md +9 -4
  242. package/src/lib/components/toolbar/rt-toolbar.component.scss +10 -2
  243. package/src/lib/components/tooltip/CONTEXT.md +8 -1
  244. package/src/lib/components/tree/CONTEXT.md +66 -0
  245. package/src/lib/components/tree/rt-tree.component.scss +313 -0
  246. package/src/lib/components/tree-selector/CONTEXT.md +47 -0
  247. package/src/lib/components/tree-selector/rt-tree-selector.component.scss +121 -0
  248. package/src/styles/_primitives.scss +4 -0
  249. package/src/styles/_semantic.scss +5 -0
  250. package/styles/tokens.css +43 -0
  251. package/types/rt-tools-ui-kit-v2-accordion.d.ts +31 -24
  252. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +112 -91
  253. package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +64 -40
  254. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +13 -10
  255. package/types/rt-tools-ui-kit-v2-aside.d.ts +268 -206
  256. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +102 -61
  257. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +39 -27
  258. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +31 -20
  259. package/types/rt-tools-ui-kit-v2-breadcrumbs.d.ts +89 -0
  260. package/types/rt-tools-ui-kit-v2-button.d.ts +119 -59
  261. package/types/rt-tools-ui-kit-v2-calendar.d.ts +151 -86
  262. package/types/rt-tools-ui-kit-v2-card.d.ts +42 -21
  263. package/types/rt-tools-ui-kit-v2-carousel.d.ts +76 -0
  264. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +48 -24
  265. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +28 -20
  266. package/types/rt-tools-ui-kit-v2-color-palette.d.ts +208 -0
  267. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +104 -47
  268. package/types/rt-tools-ui-kit-v2-container.d.ts +278 -221
  269. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +39 -24
  270. package/types/rt-tools-ui-kit-v2-core.d.ts +862 -865
  271. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +20 -12
  272. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -38
  273. package/types/rt-tools-ui-kit-v2-data-list.d.ts +429 -264
  274. package/types/rt-tools-ui-kit-v2-data-table.d.ts +500 -351
  275. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +164 -138
  276. package/types/rt-tools-ui-kit-v2-date-range.d.ts +102 -84
  277. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +16 -13
  278. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +23 -16
  279. package/types/rt-tools-ui-kit-v2-dialog.d.ts +130 -101
  280. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +10 -13
  281. package/types/rt-tools-ui-kit-v2-download-link.d.ts +22 -17
  282. package/types/rt-tools-ui-kit-v2-draggable-tree.d.ts +132 -0
  283. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +185 -96
  284. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +904 -404
  285. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +48 -19
  286. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +67 -39
  287. package/types/rt-tools-ui-kit-v2-field.d.ts +90 -49
  288. package/types/rt-tools-ui-kit-v2-file-card.d.ts +115 -75
  289. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -48
  290. package/types/rt-tools-ui-kit-v2-file-input.d.ts +53 -36
  291. package/types/rt-tools-ui-kit-v2-file-list.d.ts +5 -8
  292. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +83 -49
  293. package/types/rt-tools-ui-kit-v2-form-control.d.ts +102 -74
  294. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -22
  295. package/types/rt-tools-ui-kit-v2-hybrid-tree-selector.d.ts +14 -0
  296. package/types/rt-tools-ui-kit-v2-hybrid-tree.d.ts +72 -0
  297. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +190 -90
  298. package/types/rt-tools-ui-kit-v2-icon.d.ts +160 -129
  299. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +151 -111
  300. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +159 -85
  301. package/types/rt-tools-ui-kit-v2-info-item.d.ts +26 -13
  302. package/types/rt-tools-ui-kit-v2-inline-edit.d.ts +194 -0
  303. package/types/rt-tools-ui-kit-v2-input-number.d.ts +102 -53
  304. package/types/rt-tools-ui-kit-v2-input.d.ts +82 -43
  305. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +30 -17
  306. package/types/rt-tools-ui-kit-v2-logo.d.ts +49 -32
  307. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +26 -17
  308. package/types/rt-tools-ui-kit-v2-menu.d.ts +272 -155
  309. package/types/rt-tools-ui-kit-v2-message.d.ts +59 -33
  310. package/types/rt-tools-ui-kit-v2-money-list.d.ts +36 -18
  311. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +114 -80
  312. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +34 -25
  313. package/types/rt-tools-ui-kit-v2-note.d.ts +12 -9
  314. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +37 -16
  315. package/types/rt-tools-ui-kit-v2-page-header.d.ts +218 -150
  316. package/types/rt-tools-ui-kit-v2-pagination.d.ts +99 -63
  317. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +61 -66
  318. package/types/rt-tools-ui-kit-v2-popover.d.ts +116 -55
  319. package/types/rt-tools-ui-kit-v2-profile-menu.d.ts +103 -0
  320. package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +26 -16
  321. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +85 -43
  322. package/types/rt-tools-ui-kit-v2-radius.d.ts +18 -15
  323. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +931 -590
  324. package/types/rt-tools-ui-kit-v2-ripple.d.ts +28 -25
  325. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +60 -58
  326. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +32 -22
  327. package/types/rt-tools-ui-kit-v2-select.d.ts +182 -139
  328. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +452 -349
  329. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +53 -20
  330. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +55 -26
  331. package/types/rt-tools-ui-kit-v2-speed-menu.d.ts +131 -0
  332. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -28
  333. package/types/rt-tools-ui-kit-v2-split-button.d.ts +96 -55
  334. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +88 -60
  335. package/types/rt-tools-ui-kit-v2-stepper.d.ts +50 -37
  336. package/types/rt-tools-ui-kit-v2-table.d.ts +631 -480
  337. package/types/rt-tools-ui-kit-v2-tabs.d.ts +198 -113
  338. package/types/rt-tools-ui-kit-v2-tag.d.ts +106 -53
  339. package/types/rt-tools-ui-kit-v2-textarea.d.ts +48 -25
  340. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +28 -26
  341. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +154 -94
  342. package/types/rt-tools-ui-kit-v2-timeline.d.ts +30 -28
  343. package/types/rt-tools-ui-kit-v2-toast.d.ts +174 -98
  344. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +132 -86
  345. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +88 -50
  346. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +30 -27
  347. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +65 -41
  348. package/types/rt-tools-ui-kit-v2-tree-selector.d.ts +257 -0
  349. package/types/rt-tools-ui-kit-v2-tree.d.ts +282 -0
  350. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +21 -24
  351. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +195 -124
  352. package/types/rt-tools-ui-kit-v2-workspace.d.ts +122 -79
  353. package/types/rt-tools-ui-kit-v2.d.ts +100 -90
  354. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +0 -1
@@ -24,10 +24,15 @@
24
24
  **Отступ полосы сверху и снизу — свойства блока** `--rt-toolbar-padding-top` и
25
25
  `--rt-toolbar-padding-bottom`, по умолчанию 8px. Список ставит им свои имена.
26
26
 
27
- **Поле в левой части берёт ширину из свойства блока `--rt-toolbar-field-width`**, по умолчанию
28
- 400px (`--rt-size-100`), и не бывает шире самой части. Своей ширины у `rt-input` и `rt-select` нет,
29
- и без этого поиск списка сжимался до подсказки. В центре поле по-прежнему занимает всю ширину
30
- центра.
27
+ **Поле ввода в левой части берёт ширину из свойства блока `--rt-toolbar-field-width`**, по
28
+ умолчанию 400px (`--rt-size-100`), и не бывает шире самой части. Своей ширины у `rt-input` нет, и
29
+ без этого поиск списка сжимался до подсказки. Выпадающие отборы `rt-select` слева держат ширину по
30
+ содержимому: они стоят рядами, и по 400px каждый растягивали строку и вылезали за узкий экран. В
31
+ центре поле и отбор по-прежнему занимают всю ширину центра. Ширину берёт только поле, стоящее в
32
+ левой части прямо: поле внутри своего компонента приложения остаётся по содержимому, иначе обёртка
33
+ растёт до 400px и не сжимается, и несколько отборов не влезают в строку. На узком экране левая
34
+ часть стекает в колонку и не шире окна: у неё `min-width: 0`, иначе её наименьшая ширина бралась по
35
+ полю в 400px, и оно уходило за правый край.
31
36
 
32
37
  **Плотная полоса остаётся строкой на любой ширине, и её левая часть сжимается.** Длинный
33
38
  заголовок в ней переносится по словам и не выходит за правый край. Кнопки справа держат свою
@@ -35,14 +35,22 @@
35
35
  // прижимает right-бар к краю. Раньше каждый list-page переопределял
36
36
  // эти три флекса через ::ng-deep — теперь поведение зашито здесь.
37
37
  &--left {
38
+ min-width: 0;
38
39
  flex: 0 0 auto;
39
40
  gap: var(--rt-space-2);
40
41
 
41
42
  // Поле слева — поиск списка — берёт ширину из свойства блока, а не по подсказке:
42
43
  // своей ширины у поля нет, и в полосе по содержимому оно сжималось до подсказки.
43
44
  // Шире самой полосы поле не становится — на узком экране оно её не распирает.
44
- rt-input,
45
- rt-select {
45
+ // Для этого у части min-width: 0: иначе её наименьшая ширина берётся по ширине
46
+ // поля, процент max-width в этом счёте не участвует, и в колонке узкого экрана
47
+ // часть уходила за правый край окна.
48
+ // Выпадающие отборы сюда не входят: они стоят здесь рядами и держат ширину по
49
+ // содержимому, а по 400 px каждый растягивали строку и вылезали за узкий экран.
50
+ // Ширина — только у поля, стоящего в части прямо. Поле внутри своего компонента
51
+ // приложения ширину не берёт: обёртка растёт по нему до 400px, её не сжать, и три
52
+ // таких отбора не влезали в строку и вылезали за край узкого экрана.
53
+ > rt-input {
46
54
  width: var(--rt-toolbar-field-width);
47
55
  max-width: 100%;
48
56
  }
@@ -10,6 +10,7 @@
10
10
  | `rtTooltip` | `string \| null \| undefined` | `''` |
11
11
  | `rtTooltipPlacement` | `'top' \| 'bottom' \| 'left' \| 'right' \| null` | `null` — сверху, под материальным набором снизу |
12
12
  | `rtTooltipWhenTruncated` | `boolean` | `false` — подсказка только у обрезанного текста |
13
+ | `rtTooltipHideOnClick` | `boolean` | `true` — клик прячет открытую подсказку |
13
14
 
14
15
  Выходов нет. Панель — `rt-tooltip` в оверлее CDK, `role="tooltip"`.
15
16
 
@@ -27,9 +28,15 @@ no-op, а не пустая панель под курсором. Поэтому
27
28
 
28
29
  - Показывают и наведение, и фокус с клавиатуры; прячут уход курсора, потеря фокуса и **клик**
29
30
  (панель мешала бы смотреть на результат нажатия).
31
+ - У переключателя ставят `rtTooltipHideOnClick="false"`: клик оставляет подсказку, а новый текст
32
+ `[rtTooltip]` («Включить» → «Выключить») появляется в открытой панели на месте. Отложенный показ клик
33
+ снимает при любом значении, поэтому касание на тач-экране подсказку не показывает.
34
+ - Смена текста при открытой подсказке меняет его на месте при любом значении входа; пустой текст её
35
+ прячет.
30
36
  - Фокус, поставленный мышью или кодом, подсказку не показывает: меню возвращает фокус кнопке после
31
37
  выбора пункта, и подсказка кнопки всплывала бы поверх того, что пункт открыл.
32
- - `rt-icon-button` уже несёт эту директиву — там достаточно входа `tooltip`.
38
+ - `rt-icon-button` уже несёт эту директиву — там достаточно входа `tooltip`, а поведение по клику
39
+ задаёт его вход `tooltipHideOnClick`.
33
40
  - Подсказка не заменяет `aria-label`: она вспомогательная, а имя контрола задаётся отдельно.
34
41
 
35
42
  ## Рядом
@@ -0,0 +1,66 @@
1
+ # `rt-tree`
2
+
3
+ ```html
4
+ <rt-tree [nodes]="regions" [searchTerm]="term()" [showSelectAll]="true" [(value)]="chosen" (picked)="open($event)">
5
+ <ng-template rtTreeNodeEnd let-node>
6
+ <rt-tag size="sm" [value]="node.description ?? ''" />
7
+ </ng-template>
8
+ </rt-tree>
9
+ ```
10
+
11
+ | вход | тип | умолчание |
12
+ | --------------- | ------------------------------------- | -------------- |
13
+ | `nodes` | `ReadonlyArray<IRtTree.Node<TValue>>` | **обязателен** |
14
+ | `value` (model) | `ReadonlyArray<TValue>` | `[]` |
15
+ | `mode` | `'multiple' \| 'single' \| 'none'` | `'multiple'` |
16
+ | `cascade` | `boolean` | `true` |
17
+ | `searchTerm` | `string` | `''` |
18
+ | `showSelectAll` | `boolean` | `false` |
19
+ | `ariaLabel` | `string \| null` | `null` |
20
+
21
+ | выход | тип |
22
+ | ------------- | ----------------------- |
23
+ | `valueChange` | `ReadonlyArray<TValue>` |
24
+ | `picked` | `IRtTree.Node<TValue>` |
25
+
26
+ Публичные методы: `handleKeydown(event)`, `expandAll()`, `collapseAll()`, `clearHighlight()`.
27
+
28
+ ## Главное, что нужно знать
29
+
30
+ **Дерево считает тот же модуль, что дерево вариантов у `rt-select` и `rt-multiselect`.** Строки,
31
+ листья, отметки ветвей, отбор по слову и боковые стрелки — функции `rt-select-tree.ts`. Свою копию
32
+ логики дерево не держит: две копии разошлись бы на первой правке.
33
+
34
+ **Узлы не меняются никогда.** Выбор живёт в `value`, каждый клик даёт новый массив. В каскаде
35
+ выбор держит только листья, а отметка ветки выводится из них.
36
+
37
+ ## Края
38
+
39
+ - Без каскада клик меняет только сам узел, и в выборе может лежать значение ветки.
40
+ - В одиночном режиме повторный клик по выбранному узлу его не снимает.
41
+ - В режиме без отметок клик по листу отдаёт `picked`, клик по ветке её раскрывает.
42
+ - Выключенный узел не меняется ни кликом, ни «выбрать всё».
43
+ - Выключенное дерево не меняет выбор ничем и уходит из порядка Tab. Стрелка у ветки раскрывает её
44
+ и в нём: раскрытие — не выбор.
45
+ - `handleKeydown` отвечает, взята ли клавиша: незнакомую дерево не трогает, и приложение может
46
+ отдавать сюда каждую клавишу своего поля поиска.
47
+ - Ветки над выбранным раскрыты, когда дерево появилось. Дальше раскрытие меняют только человек
48
+ и методы: первый же выбор фиксирует его, и отметка ветки её не сворачивает.
49
+ - Отметку рисуют `rt-checkbox` и `rt-radio-button` кита. Они стоят с `inert`: фокус и нажатие
50
+ берёт строка, а контрол только показывает отметку.
51
+ - Подпись и описание строки обрезаются многоточием, и тогда полный текст показывает подсказка кита
52
+ в режиме `rtTooltipWhenTruncated`; у поместившегося текста подсказки нет.
53
+ - Расчёт выбора открыт наследнику четырьмя методами: `rowState`, `selectAllMarkOf`,
54
+ `selectAllChoice` и `nextChoice`. Так `rt-hybrid-tree` берёт эту разметку и стили целиком и меняет
55
+ только правила выбора. Число в конце строки рисуется, когда `rowState` его отдаёт; само дерево
56
+ отдаёт `null`.
57
+ - `emptyIcon` ставит значок кита над подписью пустого дерева; без него пустота — одна подпись.
58
+ - `nodeEndTemplate` и `nodeMetaTemplate` отдают разметку строки входом и сильнее директив
59
+ `rtTreeNodeEnd` и `rtTreeNodeMeta`: так её передаёт `rt-tree-selector`, у которого дерево внутри.
60
+ - Каждое значение вида — свойство `--rt-tree-*` с прежним шагом по умолчанию. Материальный набор
61
+ переназначает их по деревьям приложения: строка 32px со скруглением 6px и зазором 5px, отступ
62
+ 46px с линией, стрелка и плашка числа основного цвета, флажок 16px, совпадение на жёлтом. Высота
63
+ 32px считается вместе с полями: `--rt-tree-row-box-sizing` в наборе — `border-box`. Размер и
64
+ рамку квадрата дерево передаёт через `--rt-checkbox-box-size` и `--rt-checkbox-box-border-color`
65
+ на хосте флажка: 14px внутри, 16px с рамкой, серая рамка приложения. Своего материального вида у
66
+ флажка нет.
@@ -0,0 +1,313 @@
1
+ @layer rt-kit.components {
2
+ /* rt-tree — дерево выбора; его же разметку и стили берёт rt-hybrid-tree. ViewEncapsulation.None.
3
+ Каждое значение вида — свойство блока: приложение перенастраивает строки, отступ уровня, стрелку,
4
+ отметку, совпадение и счётчик, не трогая общих шагов кита. Умолчания — прежние шаги, вид без
5
+ свойств не меняется. */
6
+
7
+ .rt-tree {
8
+ --rt-tree-font-size: var(--rt-input-font-size);
9
+ --rt-tree-color: var(--rt-color-text-primary);
10
+ --rt-tree-indent: var(--rt-space-lg);
11
+ --rt-tree-row-padding-block: var(--rt-space-sm);
12
+ --rt-tree-row-padding-inline: var(--rt-space-md);
13
+ --rt-tree-row-gap: var(--rt-space-sm);
14
+ --rt-tree-row-spacing: var(--rt-space-0);
15
+ --rt-tree-row-min-height: auto;
16
+ --rt-tree-row-box-sizing: content-box;
17
+ --rt-tree-row-radius: var(--rt-radius-none);
18
+ --rt-tree-row-bg-hover: var(--rt-color-bg-hover);
19
+ --rt-tree-row-bg-highlighted: var(--rt-color-bg-hover);
20
+ --rt-tree-row-bg-chosen: var(--rt-color-action-primary-subtle);
21
+ --rt-tree-guide-width: var(--rt-border-width-thin);
22
+ --rt-tree-guide-color: transparent;
23
+ --rt-tree-toggle-size: var(--rt-input-icon-size);
24
+ --rt-tree-toggle-color: var(--rt-neutral-600);
25
+ --rt-tree-leaf-space-display: inline-flex;
26
+ --rt-tree-check-size: calc(var(--rt-size-4) + var(--rt-space-0-5));
27
+ --rt-tree-check-border-color: var(--rt-color-border-strong);
28
+ --rt-tree-match-bg: var(--rt-yellow-400);
29
+ --rt-tree-match-color: var(--rt-neutral-950);
30
+ --rt-tree-match-radius: var(--rt-radius-xs);
31
+ --rt-tree-match-font-weight: var(--rt-font-weight-regular);
32
+ --rt-tree-count-color: var(--rt-color-text-muted);
33
+ --rt-tree-count-bg: transparent;
34
+ --rt-tree-count-font-size: var(--rt-text-sm);
35
+ --rt-tree-count-padding-inline: var(--rt-space-0);
36
+ --rt-tree-count-min-size: auto;
37
+ --rt-tree-count-radius: var(--rt-radius-none);
38
+ --rt-tree-select-all-font-size: var(--rt-tree-font-size);
39
+ --rt-tree-select-all-font-weight: var(--rt-font-weight-regular);
40
+ --rt-tree-empty-color: var(--rt-color-text-muted);
41
+ --rt-tree-empty-gap: var(--rt-space-sm);
42
+ --rt-tree-focus-shadow: var(--rt-shadow-focus-ring);
43
+ --rt-tree-border-width: var(--rt-border-width-thin);
44
+ --rt-tree-bg: var(--rt-color-bg-surface);
45
+ --rt-tree-select-all-bg: var(--rt-tree-bg);
46
+
47
+ /* Ярус липкой строки «выбрать всё» — внутри дерева: `isolation` не пускает её над страницей. */
48
+ --rt-tree-select-all-z: var(--rt-z-sticky);
49
+
50
+ display: block;
51
+ background-color: var(--rt-tree-bg);
52
+ color: var(--rt-tree-color);
53
+ font-size: var(--rt-tree-font-size);
54
+ isolation: isolate;
55
+ outline: none;
56
+
57
+ /* Под пальцем строка не ниже контрола кита: высота переназначается свойством, а не правилом. */
58
+ @media (pointer: coarse) {
59
+ --rt-tree-row-min-height: var(--rt-control-height-lg);
60
+ }
61
+
62
+ /* Материальный набор повторяет деревья приложения: строка 32px со скруглением 6px, 12px по
63
+ бокам и 5px до следующей; между стрелкой или отметкой и подписью 10px; уровень отступает на
64
+ 46px, и под стрелкой предка идёт линия; у листа нет места под стрелку. Стрелка, флажок и
65
+ плашка счётчика — основного цвета темы, флажок 16px, совпадение — полужирное на жёлтом
66
+ первого кита, «выбрать всё» — 14px средней насыщенности. 32px — внешняя высота строки,
67
+ поэтому строка считается с полями; квадрат флажка задан без рамки — 14px внутри, 16px
68
+ снаружи. */
69
+ :is(.rt-preset-material, [data-preset='material']) & {
70
+ --rt-tree-indent: calc(var(--rt-size-12) - var(--rt-space-0-5));
71
+ --rt-tree-row-padding-block: var(--rt-space-1);
72
+ --rt-tree-row-padding-inline: calc(var(--rt-space-2) + var(--rt-space-1));
73
+ --rt-tree-row-gap: calc(var(--rt-space-2) + var(--rt-space-0-5));
74
+ --rt-tree-row-spacing: calc(var(--rt-space-1) + var(--rt-space-0-5) / 2);
75
+ --rt-tree-row-min-height: var(--rt-size-8);
76
+ --rt-tree-row-box-sizing: border-box;
77
+ --rt-tree-row-radius: var(--rt-radius-ms);
78
+ --rt-tree-guide-color: var(--mat-sys-outline-variant, var(--rt-color-border-subtle));
79
+ --rt-tree-toggle-color: var(--rt-color-action-primary);
80
+ --rt-tree-leaf-space-display: none;
81
+ --rt-tree-check-size: calc(var(--rt-size-4) - 2 * var(--rt-input-border-width));
82
+ --rt-tree-check-border-color: var(--rt-mat-neutral-40);
83
+ --rt-tree-match-bg: var(--rt-mat-yellow-100);
84
+ --rt-tree-match-font-weight: var(--rt-font-weight-semibold);
85
+ --rt-tree-count-bg: var(--rt-color-action-primary);
86
+ --rt-tree-count-color: var(--mat-sys-on-primary, var(--rt-color-text-inverse));
87
+ --rt-tree-count-font-size: var(--rt-text-xs);
88
+ --rt-tree-count-padding-inline: calc(var(--rt-space-1) + var(--rt-space-0-5));
89
+ --rt-tree-count-min-size: var(--rt-size-5);
90
+ --rt-tree-count-radius: var(--rt-radius-full);
91
+ --rt-tree-select-all-font-size: var(--rt-text-sm);
92
+ --rt-tree-select-all-font-weight: var(--rt-font-weight-medium);
93
+
94
+ @media (pointer: coarse) {
95
+ --rt-tree-row-min-height: var(--rt-control-height-lg);
96
+ }
97
+ }
98
+
99
+ &:focus-visible {
100
+ box-shadow: var(--rt-tree-focus-shadow);
101
+ }
102
+
103
+ &__select-all,
104
+ &__row {
105
+ /* Уровень строки ставит разметка на саму строку; ноль — верхний уровень. */
106
+ --rt-tree-level: 0;
107
+
108
+ display: flex;
109
+ box-sizing: var(--rt-tree-row-box-sizing);
110
+ align-items: center;
111
+ padding: var(--rt-tree-row-padding-block) var(--rt-tree-row-padding-inline);
112
+ border-radius: var(--rt-tree-row-radius);
113
+ cursor: pointer;
114
+ gap: var(--rt-tree-row-gap);
115
+ min-block-size: var(--rt-tree-row-min-height);
116
+ padding-inline-start: calc(var(--rt-tree-row-padding-inline) + var(--rt-tree-indent) * var(--rt-tree-level));
117
+
118
+ &:hover {
119
+ background-color: var(--rt-tree-row-bg-hover);
120
+ }
121
+ }
122
+
123
+ /* Строка прилипает к верху места, которое прокручивает дерево; фон непрозрачный, иначе под
124
+ ней видны уехавшие строки. Наведение ложится поверх фона, а не вместо него. */
125
+ &__select-all {
126
+ position: sticky;
127
+ z-index: var(--rt-tree-select-all-z);
128
+ top: 0;
129
+ border-bottom: var(--rt-tree-border-width) solid var(--rt-color-border-default);
130
+ background-color: var(--rt-tree-select-all-bg);
131
+
132
+ &:hover {
133
+ background-color: var(--rt-tree-select-all-bg);
134
+ background-image: linear-gradient(var(--rt-tree-row-bg-hover), var(--rt-tree-row-bg-hover));
135
+ }
136
+
137
+ &--disabled {
138
+ cursor: not-allowed;
139
+ opacity: var(--rt-input-disabled-opacity);
140
+ }
141
+ }
142
+
143
+ &__select-all &__label {
144
+ font-size: var(--rt-tree-select-all-font-size);
145
+ font-weight: var(--rt-tree-select-all-font-weight);
146
+ }
147
+
148
+ &__row {
149
+ position: relative;
150
+
151
+ & + & {
152
+ margin-block-start: var(--rt-tree-row-spacing);
153
+ }
154
+
155
+ /* Линии уровней: по одной под стрелкой каждого предка. Полоса тянется и через зазор над
156
+ строкой, чтобы линия шла сплошной; у верхнего уровня её ширина ноль. Без своего цвета
157
+ линия прозрачна, и вид кита её не показывает. */
158
+ &:before {
159
+ position: absolute;
160
+ background: repeating-linear-gradient(
161
+ to right,
162
+ var(--rt-tree-guide-color) 0 var(--rt-tree-guide-width),
163
+ transparent var(--rt-tree-guide-width) var(--rt-tree-indent)
164
+ );
165
+ content: '';
166
+ inline-size: calc(var(--rt-tree-indent) * var(--rt-tree-level));
167
+ inset-block: calc(-1 * var(--rt-tree-row-spacing)) 0;
168
+ inset-inline-start: calc(var(--rt-tree-row-padding-inline) + (var(--rt-tree-toggle-size) - var(--rt-tree-guide-width)) / 2);
169
+ pointer-events: none;
170
+ }
171
+
172
+ &--highlighted {
173
+ background-color: var(--rt-tree-row-bg-highlighted);
174
+ }
175
+
176
+ &--chosen {
177
+ background-color: var(--rt-tree-row-bg-chosen);
178
+ }
179
+
180
+ &--disabled {
181
+ cursor: not-allowed;
182
+ opacity: var(--rt-input-disabled-opacity);
183
+
184
+ &:hover {
185
+ background-color: transparent;
186
+ }
187
+ }
188
+ }
189
+
190
+ /* Стрелка ветки и пустое место под неё у листа: шаг отступа равен их ширине с зазором,
191
+ и стрелка дочерней строки встаёт под подписью родителя. */
192
+ &__toggle,
193
+ &__toggle-space {
194
+ display: inline-flex;
195
+ flex-shrink: 0;
196
+ block-size: var(--rt-tree-toggle-size);
197
+ inline-size: var(--rt-tree-toggle-size);
198
+ }
199
+
200
+ /* Место под стрелку у листа: материальный вид его убирает, и отметка листа встаёт под
201
+ стрелкой соседней группы, как в приложении. Над первой строкой-листом «выбрать всё»
202
+ убирает своё место вместе с ней. */
203
+ &__row > &__toggle-space,
204
+ &__select-all--over-leaf > &__toggle-space {
205
+ display: var(--rt-tree-leaf-space-display);
206
+ }
207
+
208
+ /* Цвет стрелки идёт в значок через его же свойство приглушённого цвета. */
209
+ &__toggle {
210
+ --rt-icon-color-muted: var(--rt-tree-toggle-color);
211
+
212
+ align-items: center;
213
+ justify-content: center;
214
+ padding: 0;
215
+ border: 0;
216
+ background: transparent;
217
+ cursor: pointer;
218
+ }
219
+
220
+ /* Размер квадрата флажка: класс элемента стоит на хосте флажка и перекрывает его свойство,
221
+ объявленное по имени тега. Умолчание дерева равно размеру самого флажка. */
222
+ &__check {
223
+ --rt-checkbox-box-size: var(--rt-tree-check-size);
224
+ --rt-checkbox-box-border-color: var(--rt-tree-check-border-color);
225
+
226
+ flex-shrink: 0;
227
+ margin: 0;
228
+ pointer-events: none;
229
+ }
230
+
231
+ &__text {
232
+ display: flex;
233
+ min-width: 0;
234
+ flex: 1 1 auto;
235
+ flex-direction: column;
236
+ }
237
+
238
+ &__label {
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ white-space: nowrap;
242
+ }
243
+
244
+ &__description {
245
+ overflow: hidden;
246
+ color: var(--rt-color-text-muted);
247
+ font-size: var(--rt-text-sm);
248
+ text-overflow: ellipsis;
249
+ white-space: nowrap;
250
+ }
251
+
252
+ /* Метки узла и разметка приложения под подписью: строка переносится, а не вылезает. */
253
+ &__meta {
254
+ display: flex;
255
+ min-width: 0;
256
+ flex-wrap: wrap;
257
+ align-items: center;
258
+ gap: var(--rt-space-1);
259
+ margin-block-start: var(--rt-space-1);
260
+ }
261
+
262
+ &__part {
263
+ &--match {
264
+ border-radius: var(--rt-tree-match-radius);
265
+ background: var(--rt-tree-match-bg);
266
+ color: var(--rt-tree-match-color);
267
+ font-weight: var(--rt-tree-match-font-weight);
268
+ }
269
+ }
270
+
271
+ /* Число выбранного под группой без отметки — в конце строки, перед разметкой приложения.
272
+ В материальном виде это плашка: фон, скругление и поля приходят свойствами. */
273
+ &__count {
274
+ display: inline-flex;
275
+ flex-shrink: 0;
276
+ align-items: center;
277
+ justify-content: center;
278
+ border-radius: var(--rt-tree-count-radius);
279
+ background: var(--rt-tree-count-bg);
280
+ color: var(--rt-tree-count-color);
281
+ font-size: var(--rt-tree-count-font-size);
282
+ font-variant-numeric: tabular-nums;
283
+ min-block-size: var(--rt-tree-count-min-size);
284
+ min-inline-size: var(--rt-tree-count-min-size);
285
+ padding-inline: var(--rt-tree-count-padding-inline);
286
+ }
287
+
288
+ &__end {
289
+ display: inline-flex;
290
+ flex-shrink: 0;
291
+ align-items: center;
292
+ margin-inline-start: auto;
293
+ }
294
+
295
+ &__empty {
296
+ padding: var(--rt-space-md);
297
+ color: var(--rt-tree-empty-color);
298
+ text-align: center;
299
+
300
+ /* Значок приложения стоит над подписью. */
301
+ &--with-icon {
302
+ display: flex;
303
+ flex-direction: column;
304
+ align-items: center;
305
+ gap: var(--rt-tree-empty-gap);
306
+ }
307
+ }
308
+
309
+ &__empty-icon {
310
+ flex-shrink: 0;
311
+ }
312
+ }
313
+ }
@@ -0,0 +1,47 @@
1
+ # `rt-tree-selector`
2
+
3
+ ```html
4
+ <rt-tree-selector
5
+ confirm
6
+ expandControls
7
+ revertable
8
+ multiToggle
9
+ [emptyAllowed]="false"
10
+ [nodes]="hotels"
11
+ [(value)]="hotelIds"
12
+ (applied)="close()" />
13
+ ```
14
+
15
+ Входы и выходы — на странице обзора `Overview.mdx` рядом. Договорённость —
16
+ `docs/specs/ui-kit-v2/tree-selector/spec.md`.
17
+
18
+ ## Главное, что нужно знать
19
+
20
+ **Строки рисует `rt-tree`, селектор только отбирает узлы и держит выбор.** Отбор по словам — в
21
+ `rt-tree-selector.logic.ts`; дереву уходят отобранные узлы с `filter = false`, а строка поиска — для
22
+ подсветки слов.
23
+
24
+ **Черновик — `linkedSignal` от `value`.** Смена выбора снаружи сбрасывает черновик; в прямой форме
25
+ каждое изменение пишется и в черновик, и в `value`.
26
+
27
+ **Поле поиска передаёт клавиши дереву.** Фокус ставится в поле после первой отрисовки; раскрытие на
28
+ старте и раскрытие под строкой поиска зовут `expandAll` и `collapseAll` дерева после отрисовки.
29
+
30
+ ## Края
31
+
32
+ - Выбор всегда новый массив, узлы не правятся.
33
+ - «Очистить выбор» оставляет выключенные выбранные узлы.
34
+ - Кнопки строки контролов иконочные и все необязательные. Откат стоит только в подтверждаемой форме.
35
+ - Порядок значений при сравнении черновика с выбором не учитывается.
36
+ - Выключенный селектор выключает поле, кнопки, переключатель и дерево, и «Применить» тогда не
37
+ проходит. Фокус на старте он в поле не ставит.
38
+ - Наследник `rt-hybrid-tree-selector` ставит флаг `hybrid`, и разметка рисует `rt-hybrid-tree` вместо
39
+ `rt-tree`. Ссылка `tree` берёт то дерево, какое стоит.
40
+ - `rtTreeSelectorUnderSearch` — разметка приложения между полем поиска и строкой контролов.
41
+ - Шаблоны `rtTreeNodeEnd` и `rtTreeNodeMeta` из содержимого селектора уходят дереву внутри входами
42
+ `nodeEndTemplate` и `nodeMetaTemplate`: своим содержимым дерево их не видит.
43
+ - `matchHighlight` выключает отметку найденных слов: дерево получает пустое слово, а отбор узлов
44
+ идёт по строке поиска как прежде. `emptyIcon` ставит значок над «ничего не найдено» и отдаётся
45
+ дереву внутри.
46
+ - В материальном наборе между головой и деревом 10px (`--rt-tree-selector-gap`); строки дерева
47
+ берут материальный вид `rt-tree`.
@@ -0,0 +1,121 @@
1
+ @layer rt-kit.components {
2
+ /* rt-tree-selector — поиск, контролы и дерево. ViewEncapsulation.None.
3
+ Высоту задаёт место, куда приложение ставит селектор: дерево прокручивается внутри,
4
+ поле поиска и подвал стоят на месте. */
5
+
6
+ .rt-tree-selector {
7
+ --rt-tree-selector-border-width: var(--rt-border-width-thin);
8
+ --rt-tree-selector-bg: var(--rt-color-bg-surface);
9
+ --rt-tree-selector-gap: var(--rt-space-sm);
10
+ --rt-tree-selector-empty-color: var(--rt-color-text-muted);
11
+ --rt-tree-selector-empty-gap: var(--rt-space-sm);
12
+
13
+ display: flex;
14
+ min-height: 0;
15
+ box-sizing: border-box;
16
+ flex-direction: column;
17
+ background-color: var(--rt-tree-selector-bg);
18
+ color: var(--rt-color-text-primary);
19
+ gap: var(--rt-tree-selector-gap);
20
+
21
+ /* Материальный набор повторяет выбор деревом приложения: над списком 10px. Строки дерева
22
+ внутри берут свой материальный вид сами. */
23
+ :is(.rt-preset-material, [data-preset='material']) & {
24
+ --rt-tree-selector-gap: calc(var(--rt-space-2) + var(--rt-space-0-5));
25
+ }
26
+
27
+ &__head {
28
+ display: flex;
29
+ flex-direction: column;
30
+ gap: var(--rt-space-sm);
31
+ }
32
+
33
+ &__label {
34
+ font-size: var(--rt-text-sm);
35
+ font-weight: var(--rt-font-weight-semibold);
36
+ }
37
+
38
+ &__search {
39
+ display: block;
40
+ }
41
+
42
+ &__controls {
43
+ display: flex;
44
+ flex-direction: column;
45
+ gap: var(--rt-space-sm);
46
+ }
47
+
48
+ // Контролы переносятся на вторую строку на узком экране: обрезка спрятала бы кнопку.
49
+ &__row {
50
+ display: flex;
51
+ flex-wrap: wrap;
52
+ align-items: center;
53
+ gap: var(--rt-space-xs);
54
+ }
55
+
56
+ &__control {
57
+ flex: 0 0 auto;
58
+ }
59
+
60
+ // Контролы приложения прижаты к правому краю строки, кнопки дерева — к левому.
61
+ &__own {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: var(--rt-space-xs);
65
+ margin-inline-start: auto;
66
+ }
67
+
68
+ &__multi {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: var(--rt-space-sm);
72
+ }
73
+
74
+ &__multi-label {
75
+ font-size: var(--rt-text-sm);
76
+ }
77
+
78
+ &__multi-hint-icon {
79
+ color: var(--rt-color-text-muted);
80
+ }
81
+
82
+ &__tree {
83
+ min-height: 0;
84
+ flex: 1 1 auto;
85
+ overflow-y: auto;
86
+ }
87
+
88
+ &__empty {
89
+ flex: 1 1 auto;
90
+ padding: var(--rt-space-md);
91
+ color: var(--rt-tree-selector-empty-color);
92
+ text-align: center;
93
+
94
+ /* Значок приложения стоит над подписью. */
95
+ &--with-icon {
96
+ display: flex;
97
+ flex-direction: column;
98
+ align-items: center;
99
+ gap: var(--rt-tree-selector-empty-gap);
100
+ }
101
+ }
102
+
103
+ &__empty-icon {
104
+ flex-shrink: 0;
105
+ }
106
+
107
+ /* Разметка приложения под полем поиска — во всю ширину головы. */
108
+ &__under-search {
109
+ display: block;
110
+ }
111
+
112
+ &__foot {
113
+ display: flex;
114
+ align-items: center;
115
+ justify-content: flex-end;
116
+ border-top: var(--rt-tree-selector-border-width) solid var(--rt-color-border-subtle);
117
+ gap: var(--rt-space-sm);
118
+ padding-block-start: var(--rt-space-sm);
119
+ }
120
+ }
121
+ }
@@ -358,6 +358,10 @@
358
358
  цветность те же): это ближайшая к виду первого кита ступень, что берёт порог текста. */
359
359
  --rt-mat-green-120: #008465;
360
360
 
361
+ /* Материальный набор: жёлтая подсветка найденного — фон совпадения в деревьях первого кита
362
+ и приложения. */
363
+ --rt-mat-yellow-100: #ffeb3b;
364
+
361
365
  /* Материальный набор: марка первого кита и подложка его обвязки */
362
366
  --rt-mat-navy-100: #0d1c2b;
363
367
 
@@ -399,8 +399,12 @@
399
399
  --rt-profile-menu-min-width: var(--rt-size-60);
400
400
  --rt-profile-menu-padding: var(--rt-space-5);
401
401
  --rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
402
+ --rt-profile-menu-border-width: var(--rt-border-width-thin);
403
+ --rt-profile-menu-radius: var(--rt-radius-md);
402
404
  --rt-profile-avatar-size: var(--rt-size-10);
403
405
  --rt-profile-avatar-font-size: var(--rt-text-2xl);
406
+ --rt-profile-avatar-border-width: var(--rt-border-width-medium);
407
+ --rt-profile-avatar-radius: var(--rt-radius-full);
404
408
  --rt-profile-item-padding-y: var(--rt-space-4);
405
409
  --rt-profile-item-content-gap: var(--rt-space-2);
406
410
  --rt-profile-item-font-size: var(--rt-text-md);
@@ -412,6 +416,7 @@
412
416
  вертикали с содержимым. Это же число — горизонтальный отступ строки. */
413
417
  --rt-profile-row-inset: var(--rt-space-2);
414
418
  --rt-profile-theme-icon-padding: var(--rt-space-2);
419
+ --rt-profile-theme-icon-radius: var(--rt-radius-full);
415
420
 
416
421
  /* Габариты панели второго уровня: ширина считается числом колонок, поэтому
417
422
  колонка, промежуток и внутренний отступ — токены, из которых панель