@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
@@ -0,0 +1,41 @@
1
+ # `rt-inline-edit`
2
+
3
+ ```html
4
+ <rt-inline-edit placeholder="Название отчёта" [value]="report.name" (saved)="rename($event)" />
5
+ ```
6
+
7
+ Входы — `value`, `placeholder`, `look`, `size`, `fieldLabel`, `disabled`, `saving`, `allowEmpty`,
8
+ `closeOnSave`, `blurAction`, `fieldIcon`, `truncate` и двусторонний `editing`. Выходы — `saved` и `cancelled`.
9
+
10
+ Описание — `docs/specs/ui-kit-v2/inline-edit/`; здесь только устройство папки.
11
+
12
+ ## Главное, что нужно знать
13
+
14
+ **Значение принадлежит приложению.** Компонент отдаёт новое выходом и сам его не хранит: в покое
15
+ всегда видно то, что пришло во вход `value`.
16
+
17
+ **Черновик — в форме, а не в двусторонней привязке.** Форма пишет значение в поле в том же проходе
18
+ отрисовки; двусторонняя привязка писала его тиком позже, и выделение текста при открытии заставало
19
+ пустое поле.
20
+
21
+ **Что сохранять, решает чистая функция.** `inlineEditOutcome` обрезает черновик, отказывает пустому
22
+ и закрывает поле без события, если черновик равен значению. `inlineEditLeaves` отличает уход фокуса
23
+ от перехода на свои кнопки.
24
+
25
+ ## Края
26
+
27
+ - Открытие входом `editing` ведёт себя как нажатие: черновик берёт значение, фокус встаёт в поле.
28
+ - Escape гасится в поле и не закрывает окно или панель вокруг.
29
+ - Пока `saving`, ни Escape, ни уход фокуса, ни кнопки поле не закрывают.
30
+ - Погашенное на время сохранения поле роняет фокус в никуда. Отметка `#focusInside` помнит, что он
31
+ был внутри, и после отказа или закрытия фокус возвращается; ушедший на другой элемент не трогается.
32
+ - Плашка-поле `look="chip-field"` — отдельная ветка шаблона: тот же черновик в форме, но без покоя,
33
+ кнопок и `editing`. Ширину ей задаёт невидимая копия текста в одной клетке с полем. Enter и Escape
34
+ сохраняют сами и снимают фокус под отметкой `#chipLeaving`, чтобы уход не сохранил второй раз.
35
+ - Корень шаблона — `ng-container`: класс блока висит только на хосте.
36
+ - Цвета, зазоры и плашка — свойства `--rt-inline-edit-*` на корне блока. Материальный набор
37
+ переназначает пять из них в том же файле стилей, вид кита от этого не меняется.
38
+
39
+ ## Рядом
40
+
41
+ - `rt-dynamic-input` с `editable` — правка строк списка выбора, своя внутри списка.
@@ -0,0 +1,274 @@
1
+ @layer rt-kit.components {
2
+ /* rt-inline-edit — правка короткого значения на месте. ViewEncapsulation.None.
3
+ Host несёт класс блока; в покое — кнопка со значением, при правке — поле кита и две кнопки.
4
+ Высота покоя равна высоте поля: строка не прыгает при открытии.
5
+ Цвета, зазоры и плашка — свойства блока: приложение перекрашивает правку своим правилом на
6
+ блок. Умолчания — прежние ступени, вид без свойств не меняется. */
7
+
8
+ .rt-inline-edit {
9
+ --rt-inline-edit-height: var(--rt-input-height-sm);
10
+ --rt-inline-edit-field-width: var(--rt-size-64);
11
+ --rt-inline-edit-radius: var(--rt-radius-sm);
12
+ --rt-inline-edit-border-width: var(--rt-border-width-thin);
13
+ --rt-inline-edit-duration: var(--rt-duration-fast);
14
+ --rt-inline-edit-gap: var(--rt-space-2xs);
15
+ --rt-inline-edit-value-padding-x: var(--rt-space-xs);
16
+ --rt-inline-edit-value-gap: var(--rt-space-xs);
17
+ --rt-inline-edit-value-bg-hover: var(--rt-color-bg-hover);
18
+ --rt-inline-edit-empty-color: var(--rt-color-text-muted);
19
+ --rt-inline-edit-disabled-color: var(--rt-color-text-disabled);
20
+ --rt-inline-edit-pencil-color: var(--rt-color-text-muted);
21
+ --rt-inline-edit-chip-radius: var(--rt-radius-sm);
22
+ --rt-inline-edit-chip-bg: var(--rt-color-bg-subtle);
23
+ --rt-inline-edit-chip-color: var(--rt-color-text-primary);
24
+ --rt-inline-edit-chip-border-color: var(--rt-color-border-default);
25
+ --rt-inline-edit-chip-border-color-hover: var(--rt-color-action-primary-on-surface);
26
+ --rt-inline-edit-chip-font-size: var(--rt-text-xs);
27
+ --rt-inline-edit-chip-font-weight: var(--rt-font-weight-semibold);
28
+ --rt-inline-edit-chip-field-max-width: calc(var(--rt-size-64) + var(--rt-size-64) / 2);
29
+ --rt-inline-edit-chip-field-bg: var(--rt-inline-edit-chip-bg);
30
+ --rt-inline-edit-chip-field-color: var(--rt-inline-edit-chip-color);
31
+ --rt-inline-edit-chip-field-icon-color: var(--rt-inline-edit-pencil-color);
32
+ --rt-inline-edit-chip-field-border-color: var(--rt-inline-edit-chip-border-color);
33
+ --rt-inline-edit-chip-field-border-color-focus: var(--rt-inline-edit-chip-border-color-hover);
34
+
35
+ display: inline-flex;
36
+ min-width: 0;
37
+ max-width: 100%;
38
+ align-items: center;
39
+ gap: var(--rt-inline-edit-gap);
40
+ vertical-align: middle;
41
+
42
+ &--size-md {
43
+ --rt-inline-edit-height: var(--rt-input-height-md);
44
+ }
45
+
46
+ &--size-lg {
47
+ --rt-inline-edit-height: var(--rt-input-height-lg);
48
+ }
49
+
50
+ /* Материальный набор повторяет плашку приложения: скругление 6px, светлая серая подложка
51
+ и тонкая рамка без цвета действия. Цвет подписи остаётся основным — серый на серой
52
+ подложке не набирает 4.5 контраста для мелкого текста. */
53
+ :is(.rt-preset-material, [data-preset='material']) & {
54
+ --rt-inline-edit-chip-radius: var(--rt-radius-ms);
55
+ --rt-inline-edit-chip-bg: var(--rt-color-bg-surface-subtle-2);
56
+ --rt-inline-edit-chip-border-color: var(--rt-color-border-subtle);
57
+ --rt-inline-edit-chip-border-color-hover: var(--rt-color-border-strong);
58
+ --rt-inline-edit-value-padding-x: var(--rt-space-2);
59
+
60
+ /* Плашка-поле приложения: светлая подложка, рамка, текст и значок — основной цвет темы. */
61
+ --rt-inline-edit-chip-field-bg: var(--rt-mat-neutral-5);
62
+ --rt-inline-edit-chip-field-color: var(--mat-sys-primary, var(--rt-color-action-primary));
63
+ --rt-inline-edit-chip-field-icon-color: var(--mat-sys-primary, var(--rt-color-action-primary));
64
+ --rt-inline-edit-chip-field-border-color: var(--mat-sys-primary-fixed-dim, var(--rt-brand-200));
65
+ --rt-inline-edit-chip-field-border-color-focus: var(--mat-sys-primary, var(--rt-color-action-primary));
66
+ }
67
+
68
+ /* Значение в покое: подпись режется многоточием, полный текст — в подсказке. */
69
+ &__value {
70
+ display: inline-flex;
71
+ min-width: 0;
72
+ max-width: 100%;
73
+ min-height: var(--rt-inline-edit-height);
74
+ box-sizing: border-box;
75
+ align-items: center;
76
+ padding: 0 var(--rt-inline-edit-value-padding-x);
77
+ border: var(--rt-inline-edit-border-width) solid transparent;
78
+ border-radius: var(--rt-inline-edit-radius);
79
+ background: transparent;
80
+ color: inherit;
81
+ cursor: pointer;
82
+ font: inherit;
83
+ gap: var(--rt-inline-edit-value-gap);
84
+ text-align: start;
85
+ transition:
86
+ background-color var(--rt-inline-edit-duration) ease,
87
+ border-color var(--rt-inline-edit-duration) ease;
88
+
89
+ &:hover:not(:disabled) {
90
+ background: var(--rt-inline-edit-value-bg-hover);
91
+ }
92
+
93
+ &:focus-visible {
94
+ outline: var(--rt-focus-ring-width) solid var(--rt-focus-ring-color);
95
+ }
96
+
97
+ &--empty {
98
+ color: var(--rt-inline-edit-empty-color);
99
+ }
100
+
101
+ &:disabled {
102
+ color: var(--rt-inline-edit-disabled-color);
103
+ cursor: default;
104
+ }
105
+ }
106
+
107
+ &__text {
108
+ overflow: hidden;
109
+ min-width: 0;
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap;
112
+ }
113
+
114
+ &__pencil {
115
+ flex-shrink: 0;
116
+ color: var(--rt-inline-edit-pencil-color);
117
+ }
118
+
119
+ &__field {
120
+ width: var(--rt-inline-edit-field-width);
121
+ min-width: 0;
122
+ flex: 0 1 auto;
123
+ }
124
+
125
+ &__save,
126
+ &__cancel {
127
+ flex-shrink: 0;
128
+ }
129
+
130
+ /* Плашка: светлая подложка, рамка, мелкий жирный шрифт — цвета нейтральной плашки rt-tag.
131
+ Цвет действия на этой подложке не набирает 4.5 контраста, поэтому он только у рамки при
132
+ наведении. Плашка только в покое — поле при правке читается полем в обоих видах. */
133
+ &--chip &__value {
134
+ border-color: var(--rt-inline-edit-chip-border-color);
135
+ border-radius: var(--rt-inline-edit-chip-radius);
136
+ background: var(--rt-inline-edit-chip-bg);
137
+ color: var(--rt-inline-edit-chip-color);
138
+ font-size: var(--rt-inline-edit-chip-font-size);
139
+ font-weight: var(--rt-inline-edit-chip-font-weight);
140
+
141
+ &:hover:not(:disabled) {
142
+ border-color: var(--rt-inline-edit-chip-border-color-hover);
143
+ background: var(--rt-inline-edit-chip-bg);
144
+ }
145
+ }
146
+
147
+ &--chip &__value--empty {
148
+ color: var(--rt-inline-edit-empty-color);
149
+ }
150
+
151
+ &--chip &__value:disabled {
152
+ color: var(--rt-inline-edit-disabled-color);
153
+ }
154
+
155
+ /* Плашка-поле: сама плашка — поле. Значок слева, рамка темнеет в фокусе; ширина идёт за
156
+ текстом до предела, длинный текст прокручивается в поле и целиком виден в подсказке. */
157
+ &__chip-field {
158
+ display: inline-flex;
159
+ min-width: 0;
160
+ max-width: min(100%, var(--rt-inline-edit-chip-field-max-width));
161
+ min-height: var(--rt-inline-edit-height);
162
+ box-sizing: border-box;
163
+ align-items: center;
164
+ padding: 0 var(--rt-inline-edit-value-padding-x);
165
+ border: var(--rt-inline-edit-border-width) solid var(--rt-inline-edit-chip-field-border-color);
166
+ border-radius: var(--rt-inline-edit-chip-radius);
167
+ background: var(--rt-inline-edit-chip-field-bg);
168
+ color: var(--rt-inline-edit-chip-field-color);
169
+ cursor: text;
170
+ font-size: var(--rt-inline-edit-chip-font-size);
171
+ font-weight: var(--rt-inline-edit-chip-font-weight);
172
+ gap: var(--rt-inline-edit-value-gap);
173
+ transition: border-color var(--rt-inline-edit-duration) ease;
174
+
175
+ &:focus-within {
176
+ border-color: var(--rt-inline-edit-chip-field-border-color-focus);
177
+ }
178
+
179
+ &--disabled {
180
+ color: var(--rt-inline-edit-disabled-color);
181
+ cursor: default;
182
+ }
183
+ }
184
+
185
+ &__chip-icon {
186
+ flex-shrink: 0;
187
+ color: var(--rt-inline-edit-chip-field-icon-color);
188
+ }
189
+
190
+ &__chip-field--disabled &__chip-icon {
191
+ color: var(--rt-inline-edit-disabled-color);
192
+ }
193
+
194
+ /* Копия текста и поле лежат в одной клетке: копия задаёт ширину, поле её занимает. */
195
+ &__sizer {
196
+ display: inline-grid;
197
+ overflow: hidden;
198
+ min-width: 0;
199
+ grid-template-columns: minmax(0, auto);
200
+ }
201
+
202
+ &__mirror,
203
+ &__middle,
204
+ &__chip-input {
205
+ padding: 0;
206
+ font: inherit;
207
+ grid-area: 1 / 1;
208
+ letter-spacing: inherit;
209
+ white-space: pre;
210
+ }
211
+
212
+ &__mirror {
213
+ visibility: hidden;
214
+ }
215
+
216
+ /* Слой обрезки посередине лежит над полем, пока плашка не в фокусе: поле под ним держит
217
+ текст прозрачным. В фокусе слой прячется, и поле показывает текст целиком. */
218
+ &__middle {
219
+ display: flex;
220
+ overflow: hidden;
221
+ min-width: 0;
222
+ pointer-events: none;
223
+ }
224
+
225
+ &__head {
226
+ overflow: hidden;
227
+ min-width: 0;
228
+ text-overflow: ellipsis;
229
+ }
230
+
231
+ &__tail {
232
+ flex-shrink: 0;
233
+ }
234
+
235
+ /* Условие стоит фокусом, а не его отрицанием: витрина переписывает состояния в классы, и
236
+ отрицание там выполнялось бы всегда. */
237
+ &__middle ~ &__chip-input {
238
+ color: transparent;
239
+ }
240
+
241
+ &__chip-field:focus-within &__middle {
242
+ visibility: hidden;
243
+ }
244
+
245
+ &__chip-field:focus-within &__middle ~ &__chip-input {
246
+ color: inherit;
247
+ }
248
+
249
+ &__chip-input {
250
+ width: 100%;
251
+ min-width: var(--rt-space-xs);
252
+ border: 0;
253
+ background: transparent;
254
+ color: inherit;
255
+ outline: none;
256
+
257
+ &::placeholder {
258
+ color: var(--rt-inline-edit-empty-color);
259
+ }
260
+
261
+ &:disabled {
262
+ cursor: default;
263
+ }
264
+ }
265
+ }
266
+
267
+ /* Светлая подложка плашки-поля приложения в тёмной теме светлее страницы: там плашка берёт
268
+ подложку плашки набора, которую тёмная тема отвечает сама. */
269
+ [data-theme='dark'] :is(.rt-preset-material, [data-preset='material']) .rt-inline-edit,
270
+ :is(.rt-preset-material, [data-preset='material']) [data-theme='dark'] .rt-inline-edit,
271
+ html.rt-theme-dark :is(.rt-preset-material, [data-preset='material']) .rt-inline-edit {
272
+ --rt-inline-edit-chip-field-bg: var(--rt-inline-edit-chip-bg);
273
+ }
274
+ }
@@ -46,6 +46,9 @@
46
46
  остаётся недостижимым.
47
47
  - `rtPopoverPanelClass` добавляется **к** базовому `rt-popover-panel`, а не вместо него.
48
48
  - Escape и клик мимо закрывают панель во всех режимах.
49
+ - `rtPopoverPositions` даёт свои места вокруг host'а — первое главное, остальные запасные. Заданные
50
+ читаются при каждом открытии; без входа у панели прежние два места, под host'ом и над ним. Так
51
+ `rt-speed-menu` ставит действия по сторонам кнопки.
49
52
 
50
53
  ## Рядом
51
54
 
@@ -0,0 +1,32 @@
1
+ # `rt-profile-menu`
2
+
3
+ Содержимое попапа профиля в шапке `rt-page-header`: человек, организация, действия, язык и тема.
4
+
5
+ ```html
6
+ <rt-profile-menu organizationChange="allowed" [userName]="name" [organizationName]="org" (signOut)="signOut()" />
7
+ ```
8
+
9
+ | вход | тип | умолчание |
10
+ | -------------------- | -------------------------------------- | ---------- |
11
+ | `userName` | `string` | `''` |
12
+ | `organizationName` | `string` | `''` |
13
+ | `organizationChange` | `'hidden' \| 'denied' \| 'allowed'` | `'hidden'` |
14
+ | `passwordChange` | `boolean` | `false` |
15
+ | `locales` | `ReadonlyArray<IRtProfileMenu.Locale>` | `[]` |
16
+ | `locale` | `string` | `''` |
17
+ | `signOutDisabled` | `boolean` | `false` |
18
+
19
+ Выходы: `changeOrganization`, `changePassword`, `localeChange` (код языка), `signOut`.
20
+
21
+ ## Главное, что нужно знать
22
+
23
+ **Панель рисует само меню.** У поповера кита оформления нет, и голые пункты меню в попапе шапки
24
+ легли бы прямо поверх страницы. Стили без инкапсуляции: попап живёт в перекрытии у конца `<body>`.
25
+
26
+ **Тему переключает `ThemeService`**, как у `rt-theme-toggle`: значок показывает тему, к которой
27
+ переведёт нажатие.
28
+
29
+ ## Края
30
+
31
+ - Пустое название организации убирает её строку, пустой список языков — переключатель языка.
32
+ - Смена организации в режиме `denied` стоит приглушённой и объясняет причину подсказкой.
@@ -0,0 +1,104 @@
1
+ @layer rt-kit.components {
2
+ /* rt-profile-menu — ViewEncapsulation.None: попап рисуется в перекрытии у конца `<body>`, и
3
+ правило по классу блока достаёт до него. Отсюда же красится круг под значком темы: он
4
+ рисуется разметкой `rt-menu-item`, и заскоупленное правило до чужого шаблона не дотянулось бы.
5
+ Подложку блок берёт у панели навигации кита, а тень своя: узкой панели нужен очерченный край. */
6
+
7
+ .rt-profile-menu {
8
+ display: flex;
9
+ min-width: var(--rt-profile-menu-min-width);
10
+ box-sizing: border-box;
11
+ flex-direction: column;
12
+ padding: var(--rt-profile-menu-padding);
13
+ border: var(--rt-profile-menu-border-width) solid var(--rt-nav-panel-color-border);
14
+ border-radius: var(--rt-profile-menu-radius);
15
+ background-color: var(--rt-nav-panel-color-bg);
16
+ box-shadow: var(--rt-profile-menu-shadow);
17
+ gap: var(--rt-space-2);
18
+
19
+ &__user {
20
+ display: flex;
21
+ flex-direction: column;
22
+ padding-bottom: var(--rt-space-2);
23
+ gap: var(--rt-space-2);
24
+ }
25
+
26
+ &__avatar {
27
+ display: inline-flex;
28
+ width: var(--rt-profile-avatar-size);
29
+ height: var(--rt-profile-avatar-size);
30
+ align-items: center;
31
+ justify-content: center;
32
+ border: var(--rt-profile-avatar-border-width) solid var(--rt-nav-header-color-bg);
33
+ border-radius: var(--rt-profile-avatar-radius);
34
+ color: var(--rt-color-text-primary);
35
+ font-size: var(--rt-profile-avatar-font-size);
36
+ font-weight: var(--rt-font-weight-semibold);
37
+ line-height: var(--rt-leading-none);
38
+ }
39
+
40
+ &__name {
41
+ color: var(--rt-color-text-primary);
42
+ font-size: var(--rt-text-md);
43
+ font-weight: var(--rt-font-weight-semibold);
44
+ line-height: var(--rt-leading-tight);
45
+ }
46
+
47
+ // Название заведения и слово-пояснение стоят в одной строке: без него непонятно, что это за
48
+ // вторая строка под именем.
49
+ &__organization {
50
+ color: var(--rt-nav-panel-item-color);
51
+ font-size: var(--rt-text-md);
52
+ font-weight: var(--rt-font-weight-regular);
53
+ line-height: var(--rt-leading-tight);
54
+ }
55
+
56
+ &__organization-label {
57
+ color: var(--rt-nav-panel-group-color);
58
+ }
59
+
60
+ // Строки выступают за содержимое панели на половину её отступа: подсветка на наведении иначе
61
+ // упирается в рамку. Выступ и горизонтальный отступ строки — одно число, поэтому значок
62
+ // стоит на краю содержимого панели.
63
+ &__nav {
64
+ display: flex;
65
+ width: calc(100% + var(--rt-profile-row-inset) + var(--rt-profile-row-inset));
66
+ flex-direction: column;
67
+ margin-left: calc(-1 * var(--rt-profile-row-inset));
68
+ }
69
+
70
+ // Строки просторнее и крупнее пунктов обычного меню кита: их четыре, и они читаются как
71
+ // список действий, а не как выпадающее меню.
72
+ // Правила строк идут потомком блока: свои умолчания кит объявляет одним классом, и без
73
+ // лишнего веса исход решал бы порядок подключения стилей.
74
+ & &__item,
75
+ & &__theme {
76
+ border-radius: var(--rt-profile-item-radius);
77
+ color: var(--rt-nav-panel-item-color);
78
+ font-size: var(--rt-profile-item-font-size);
79
+ font-weight: var(--rt-profile-item-font-weight);
80
+ gap: var(--rt-profile-item-content-gap);
81
+ }
82
+
83
+ & &__item {
84
+ padding: var(--rt-profile-item-padding-y) var(--rt-profile-row-inset);
85
+ }
86
+
87
+ // Переключатель темы выделен из списка акцентом: значок садится в круг на подложке акцента,
88
+ // подпись красится им же. Круг набирается отступом по content-box — размер самого значка
89
+ // приходит инлайном от `rt-icon`.
90
+ & &__theme {
91
+ width: calc(100% + var(--rt-profile-row-inset) + var(--rt-profile-row-inset));
92
+ padding: var(--rt-profile-row-inset);
93
+ margin-left: calc(-1 * var(--rt-profile-row-inset));
94
+ color: var(--rt-color-action-primary);
95
+
96
+ .rt-menu-item__icon {
97
+ box-sizing: content-box;
98
+ padding: var(--rt-profile-theme-icon-padding);
99
+ border-radius: var(--rt-profile-theme-icon-radius);
100
+ background-color: var(--rt-color-action-primary-subtle);
101
+ }
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,34 @@
1
+ # `rt-speed-menu`
2
+
3
+ ```html
4
+ <rt-speed-menu label="Масштаб" icon="zoom_in" [actions]="zoomActions" (actionSelect)="zoom($event)" />
5
+ ```
6
+
7
+ Входы — `actions`, `icon`, `label`, `direction`, `size`, `variant`, `closeOnSelect` и `disabled`.
8
+ Выходы — `actionSelect` и `openChange`.
9
+
10
+ Описание — `docs/specs/ui-kit-v2/speed-menu/`; здесь только устройство папки.
11
+
12
+ ## Главное, что нужно знать
13
+
14
+ **Панель — `rtPopover` на кнопке меню.** Триггер у панели ручной: открывает и закрывает её кнопка.
15
+ Места вокруг кнопки задаёт вход панели `rtPopoverPositions`; без него у панели прежние два места.
16
+
17
+ **Клавиатуру узнают по счёту щелчков.** Нажатие с клавиатуры приходит с `detail` ноль, и тогда фокус
18
+ встаёт на первое доступное действие. Мышиное нажатие оставляет фокус на кнопке.
19
+
20
+ **Ходьбу по действиям решает чистая функция.** `speedMenuNextIndex` знает стрелки, Home и End;
21
+ недоступные кнопки отбираются по нативному `disabled` кнопки кита.
22
+
23
+ ## Края
24
+
25
+ - Escape и Tab в панели ловит сама панель: закрывает меню и ставит фокус на кнопку. Escape на кнопке
26
+ меню закрывает панель её собственным обработчиком.
27
+ - Шаг входа действия задан правилами `nth-child` до восьми действий; девятое и дальше входят вместе
28
+ с восьмым.
29
+ - Порядок входа считается с конца у столбца вверх и у ряда к началу: ближнее к кнопке там последнее.
30
+ - Корень шаблона — `ng-container`: класс блока висит только на хосте.
31
+
32
+ ## Рядом
33
+
34
+ - `rt-icon-button` — его вход `expanded` пишет `aria-expanded` кнопки меню.
@@ -0,0 +1,118 @@
1
+ @layer rt-kit.components {
2
+ /* rt-speed-menu — быстрое меню у круглой кнопки. ViewEncapsulation.None.
3
+ Host несёт класс блока и кнопку меню; действия лежат в плавающей панели кита в конце
4
+ страницы, вне блока, поэтому свои свойства панель объявляет на себе. */
5
+
6
+ .rt-speed-menu {
7
+ --rt-speed-menu-shadow: var(--rt-shadow-md);
8
+
9
+ display: inline-flex;
10
+ vertical-align: middle;
11
+
12
+ /* Тень покоя кнопка-значок объявляет на своём корне, и ручку переписывает правило сильнее. */
13
+ &__trigger .rt-icon-button {
14
+ --rt-icon-button-shadow: var(--rt-speed-menu-shadow);
15
+ }
16
+ }
17
+
18
+ .rt-speed-menu__panel {
19
+ --rt-speed-menu-gap: var(--rt-space-sm);
20
+ --rt-speed-menu-inset: var(--rt-speed-menu-gap);
21
+ --rt-speed-menu-action-shadow: var(--rt-shadow-md);
22
+ --rt-speed-menu-action-shadow-hover: var(--rt-speed-menu-action-shadow);
23
+ --rt-speed-menu-action-bg: var(--rt-color-bg-surface);
24
+ --rt-speed-menu-action-color: var(--rt-color-text-primary);
25
+ --rt-speed-menu-action-radius: var(--rt-radius-full);
26
+ --rt-speed-menu-duration: var(--rt-duration-fast);
27
+ --rt-speed-menu-stagger: var(--rt-duration-fast);
28
+
29
+ display: flex;
30
+ align-items: center;
31
+ padding: var(--rt-speed-menu-inset);
32
+ gap: var(--rt-speed-menu-gap);
33
+
34
+ /* Материальный набор повторяет меню приложения — mat-mini-fab: круг цвета primary-container
35
+ темы со значком on-primary-container 24px, подъём 3 Material (под указателем — 4), действия
36
+ через 16px и в 28px от кнопки, вход 100 мс со сдвигом 50 мс. Без темы Material круг серый.
37
+ Значок действия кнопки меню `lg` — ступень `md`, и набор переписывает её размер.
38
+ Панель живёт в слое поверх страницы, и признак набора несёт сама подложка слоя. */
39
+ :is(.rt-preset-material, [data-preset='material']) & {
40
+ --rt-speed-menu-gap: var(--rt-size-4);
41
+ --rt-speed-menu-inset: calc(var(--rt-size-6) + var(--rt-size-1));
42
+ --rt-speed-menu-action-bg: var(--mat-sys-primary-container, var(--rt-mat-neutral-25));
43
+ --rt-speed-menu-action-color: var(--mat-sys-on-primary-container, var(--rt-color-text-primary));
44
+ --rt-icon-step-md: var(--rt-size-6);
45
+ --rt-speed-menu-action-shadow: var(--mat-sys-level3, var(--rt-mat-shadow-fab));
46
+ --rt-speed-menu-action-shadow-hover: var(--mat-sys-level4, var(--rt-mat-shadow-fab-hover));
47
+ --rt-speed-menu-duration: calc(var(--rt-duration-fast) * 5 / 6);
48
+ --rt-speed-menu-stagger: calc(var(--rt-duration-fast) * 5 / 12);
49
+ }
50
+
51
+ &--up,
52
+ &--down {
53
+ flex-direction: column;
54
+ }
55
+
56
+ &--start,
57
+ &--end {
58
+ flex-direction: row;
59
+ }
60
+ }
61
+
62
+ /* Подложка цвета поверхности: действие висит над картой или таблицей, а заливка второй палитры
63
+ кнопки-значка прозрачна. Наведение и недоступность кнопка рисует поверх подложки сама.
64
+ Действия входят по одному, ближнее к кнопке первым: в столбце вверх и в ряду к началу
65
+ ближнее — последнее, поэтому там шаг считается с конца. Вход — переход от начального стиля, а
66
+ не анимация по кадрам: браузер съёмки оставлял анимацию в первом кадре, и действия выходили
67
+ прозрачными; переход доводится до конца так же, как у раскрывающейся панели. */
68
+ .rt-speed-menu__action {
69
+ --rt-speed-menu-step: 0;
70
+
71
+ border-radius: var(--rt-speed-menu-action-radius);
72
+ background-color: var(--rt-speed-menu-action-bg);
73
+ opacity: 1;
74
+ transform: scale(1);
75
+ transition:
76
+ opacity var(--rt-speed-menu-duration) ease-out,
77
+ transform var(--rt-speed-menu-duration) ease-out;
78
+ transition-delay: calc(var(--rt-speed-menu-step) * var(--rt-speed-menu-stagger));
79
+
80
+ @starting-style {
81
+ opacity: 0;
82
+ transform: scale(0.5);
83
+ }
84
+ }
85
+
86
+ /* Цвет значка — свойство меню; по умолчанию тот же цвет текста, что ставит вид `secondary`. */
87
+ .rt-speed-menu__action .rt-icon-button {
88
+ --rt-icon-button-shadow: var(--rt-speed-menu-action-shadow);
89
+
90
+ color: var(--rt-speed-menu-action-color);
91
+
92
+ &:hover {
93
+ --rt-icon-button-shadow: var(--rt-speed-menu-action-shadow-hover);
94
+ }
95
+ }
96
+
97
+ /* Тёмная заливка материального действия: тема Material отвечает тёмным сама, без неё — тёмная
98
+ ступень первого кита. */
99
+ :root[data-theme='dark'] :is(.rt-preset-material, [data-preset='material']) .rt-speed-menu__panel,
100
+ html.rt-theme-dark :is(.rt-preset-material, [data-preset='material']) .rt-speed-menu__panel {
101
+ --rt-speed-menu-action-bg: var(--mat-sys-primary-container, var(--rt-mat-dark-20));
102
+ }
103
+
104
+ @for $step from 1 through 7 {
105
+ .rt-speed-menu__panel--down .rt-speed-menu__action:nth-child(#{$step + 1}),
106
+ .rt-speed-menu__panel--end .rt-speed-menu__action:nth-child(#{$step + 1}),
107
+ .rt-speed-menu__panel--up .rt-speed-menu__action:nth-last-child(#{$step + 1}),
108
+ .rt-speed-menu__panel--start .rt-speed-menu__action:nth-last-child(#{$step + 1}) {
109
+ --rt-speed-menu-step: #{$step};
110
+ }
111
+ }
112
+
113
+ @media (prefers-reduced-motion: reduce) {
114
+ .rt-speed-menu__action {
115
+ transition: none;
116
+ }
117
+ }
118
+ }
@@ -28,6 +28,9 @@
28
28
  --rt-tag-severity-text: var(--rt-neutral-700);
29
29
  --rt-tag-size-padding-block: var(--rt-space-1);
30
30
  --rt-tag-size-padding-inline: var(--rt-space-2);
31
+ --rt-tag-match-bg: var(--rt-yellow-400);
32
+ --rt-tag-match-color: var(--rt-neutral-950);
33
+ --rt-tag-match-radius: var(--rt-radius-xs);
31
34
 
32
35
  display: inline-flex;
33
36
  max-width: 100%;
@@ -126,6 +129,15 @@
126
129
  white-space: nowrap;
127
130
  }
128
131
 
132
+ /* Найденное слово поиска — тем же цветом, что в подписи дерева и в поиске меню. */
133
+ &__part {
134
+ &--match {
135
+ border-radius: var(--rt-tag-match-radius);
136
+ background: var(--rt-tag-match-bg);
137
+ color: var(--rt-tag-match-color);
138
+ }
139
+ }
140
+
129
141
  &__close {
130
142
  margin-inline-start: var(--rt-space-0-5);
131
143
  }
@@ -52,3 +52,4 @@
52
52
  - Кнопка фильтров рисуется, только если объявлен шаблон `[rtThreadListFilters]`;
53
53
  `filtersActive` рисует на ней точку.
54
54
  - Собственное поле поиска можно заменить шаблоном `[rtThreadListSearch]`.
55
+ - Поле поиска занимает всю шапку до кнопки фильтров, потолка ширины у него нет.
@@ -27,9 +27,10 @@
27
27
  padding-inline: var(--rt-space-4);
28
28
  }
29
29
 
30
+ // Поиск занимает всю шапку до кнопки фильтров: в широкой колонке потолок оставлял
31
+ // пустое место справа, и шапка читалась недорисованной
30
32
  &__search {
31
33
  flex: 1 1 auto;
32
- max-inline-size: 400px;
33
34
  min-inline-size: 0;
34
35
  }
35
36