@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 @@
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-color-palette.mjs","names":["BEM_BLOCK"],"sources":["../../../projects/ui-kit-v2/src/lib/components/color-palette/rt-color-palette.const.ts","../../../projects/ui-kit-v2/src/lib/components/color-palette/rt-color-palette.logic.ts","../../../projects/ui-kit-v2/src/lib/components/color-palette/picker/rt-color-picker.component.ts","../../../projects/ui-kit-v2/src/lib/components/color-palette/picker/rt-color-picker.component.html","../../../projects/ui-kit-v2/src/lib/components/color-palette/rt-color-palette.component.ts","../../../projects/ui-kit-v2/src/lib/components/color-palette/rt-color-palette.component.html"],"sourcesContent":["/**\n * Набор палитры по умолчанию, восемнадцать цветов: шестнадцать оттенков по кругу, затем коричневый и\n * серо-синий. Набор темы приложение передаёт входом `colors` — он свой у каждого продукта.\n */\nexport const RT_COLOR_PALETTE_DEFAULT: readonly string[] = [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722',\n '#795548',\n '#607d8b',\n];\n","import { RT_COLOR_PALETTE_DEFAULT } from './rt-color-palette.const';\nimport { IRtColorPalette } from './rt-color-palette.model';\n\nconst SHORT_HEX: RegExp = /^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i;\nconst FULL_HEX: RegExp = /^#?([0-9a-f]{6})$/i;\nconst CHANNEL: RegExp = /^\\d{1,3}$/;\n\n/** Шаг стрелки: по площади — двадцатая доля насыщенности и яркости, по полосе — шесть градусов оттенка. */\nconst AREA_STEP: number = 0.05;\nconst HUE_STEP: number = 6;\n\n/** Сдвиг оттенка стрелкой по полосе: вправо и вверх — дальше по кругу, влево и вниз — назад. */\nconst HUE_MOVES: Readonly<Partial<Record<string, number>>> = {\n ArrowRight: HUE_STEP,\n ArrowUp: HUE_STEP,\n ArrowLeft: -HUE_STEP,\n ArrowDown: -HUE_STEP,\n};\n\n/** Сдвиг стрелкой по площади: вправо и влево — насыщенность, вверх и вниз — яркость. */\nconst AREA_MOVES: Readonly<Partial<Record<string, readonly ['s' | 'v', number]>>> = {\n ArrowRight: ['s', AREA_STEP],\n ArrowLeft: ['s', -AREA_STEP],\n ArrowUp: ['v', AREA_STEP],\n ArrowDown: ['v', -AREA_STEP],\n};\n\n/** Опорные оттенки полосы: шесть вершин круга и возврат к красному. */\nconst SPECTRUM_HUES: readonly number[] = [0, 60, 120, 180, 240, 300, 0];\n\n/** Доля в пределах от нуля до единицы. */\nfunction clamp(value: number): number {\n return Math.min(1, Math.max(0, value));\n}\n\n/**\n * Цвет поля в его единственном виде: `#rrggbb` строчными. Трёхзначная запись разворачивается, решётка\n * дописывается. Всё остальное — не цвет: поле рисует его как «цвет не выбран».\n */\nexport function colorPaletteHex(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const text: string = value.trim();\n const short: RegExpExecArray | null = SHORT_HEX.exec(text);\n\n if (short) {\n return `#${short[1]}${short[1]}${short[2]}${short[2]}${short[3]}${short[3]}`.toLowerCase();\n }\n\n const full: RegExpExecArray | null = FULL_HEX.exec(text);\n\n return full ? `#${full[1].toLowerCase()}` : null;\n}\n\n/**\n * Образцы палитры: цвета входа по порядку, без них — набор кита. Значение, которого среди них нет,\n * встаёт ещё одним образцом в конце: человек видит, что выбран свой цвет, и может вернуться к нему.\n * Неверные цвета входа и повторы отбрасываются — образцу нужен цвет, а номеру в группе единственность.\n */\nexport function colorPaletteSwatches(colors: readonly string[], value: string | null): IRtColorPalette.Swatch[] {\n const source: readonly string[] = colors.length > 0 ? colors : RT_COLOR_PALETTE_DEFAULT;\n const seen: Set<string> = new Set<string>();\n const swatches: IRtColorPalette.Swatch[] = [];\n\n for (const color of source) {\n const hex: string | null = colorPaletteHex(color);\n\n if (hex !== null && !seen.has(hex)) {\n seen.add(hex);\n swatches.push({ hex, custom: false });\n }\n }\n\n if (value !== null && !seen.has(value)) {\n swatches.push({ hex: value, custom: true });\n }\n\n return swatches;\n}\n\n/**\n * Куда клавиша переводит выбор среди образцов: стрелки идут по кругу, Home и End берут крайние.\n * Строки образцов зависят от ширины поля, поэтому вверх и вниз значат «назад» и «вперёд», как в\n * группе переключателей. `null` — клавиша не про выбор.\n */\nexport function colorPaletteNextIndex(key: string, current: number, count: number): number | null {\n if (count === 0) {\n return null;\n }\n\n switch (key) {\n case 'ArrowDown':\n case 'ArrowRight':\n return current < 0 ? 0 : (current + 1) % count;\n case 'ArrowUp':\n case 'ArrowLeft':\n return current < 0 ? count - 1 : (current - 1 + count) % count;\n case 'Home':\n return 0;\n case 'End':\n return count - 1;\n default:\n return null;\n }\n}\n\n/** Цвет `#rrggbb` в оттенке, насыщенности и яркости. Оттенок серого — ноль. */\nexport function colorPaletteToHsv(hex: string): IRtColorPalette.Hsv {\n const r: number = parseInt(hex.slice(1, 3), 16) / 255;\n const g: number = parseInt(hex.slice(3, 5), 16) / 255;\n const b: number = parseInt(hex.slice(5, 7), 16) / 255;\n const max: number = Math.max(r, g, b);\n const delta: number = max - Math.min(r, g, b);\n\n let h: number = 0;\n\n if (delta > 0) {\n if (max === r) {\n h = 60 * (((g - b) / delta + 6) % 6);\n } else if (max === g) {\n h = 60 * ((b - r) / delta + 2);\n } else {\n h = 60 * ((r - g) / delta + 4);\n }\n }\n\n return { h, s: max === 0 ? 0 : delta / max, v: max };\n}\n\n/** Оттенок, насыщенность и яркость в цвете `#rrggbb`. */\nexport function colorPaletteFromHsv(hsv: IRtColorPalette.Hsv): string {\n const h: number = (((hsv.h % 360) + 360) % 360) / 60;\n const s: number = clamp(hsv.s);\n const v: number = clamp(hsv.v);\n const chroma: number = v * s;\n const x: number = chroma * (1 - Math.abs((h % 2) - 1));\n const m: number = v - chroma;\n const sector: number = Math.floor(h);\n const [r, g, b]: [number, number, number] = (\n [\n [chroma, x, 0],\n [x, chroma, 0],\n [0, chroma, x],\n [0, x, chroma],\n [x, 0, chroma],\n [chroma, 0, x],\n ] as [number, number, number][]\n )[sector % 6];\n\n return `#${[r, g, b]\n .map((channel: number): string =>\n Math.round((channel + m) * 255)\n .toString(16)\n .padStart(2, '0')\n )\n .join('')}`;\n}\n\n/**\n * Сдвиг выбранного стрелкой: по площади — насыщенность вправо и влево, яркость вверх и вниз; по полосе —\n * оттенок по кругу. `null` — клавиша не про сдвиг.\n */\nexport function colorPaletteStep(target: 'area' | 'hue', key: string, hsv: IRtColorPalette.Hsv): IRtColorPalette.Hsv | null {\n if (target === 'hue') {\n const delta: number | undefined = HUE_MOVES[key];\n\n return delta === undefined ? null : { ...hsv, h: (hsv.h + delta + 360) % 360 };\n }\n\n const move: readonly ['s' | 'v', number] | undefined = AREA_MOVES[key];\n\n if (move === undefined) {\n return null;\n }\n\n const [axis, delta]: readonly ['s' | 'v', number] = move;\n\n return { ...hsv, [axis]: clamp(hsv[axis] + delta) };\n}\n\n/** Цвет `#rrggbb` в каналах красного, зелёного и синего. */\nexport function colorPaletteToRgb(hex: string): IRtColorPalette.Rgb {\n return {\n r: parseInt(hex.slice(1, 3), 16),\n g: parseInt(hex.slice(3, 5), 16),\n b: parseInt(hex.slice(5, 7), 16),\n };\n}\n\n/** Каналы красного, зелёного и синего в цвете `#rrggbb`. */\nexport function colorPaletteFromRgb(rgb: IRtColorPalette.Rgb): string {\n return `#${[rgb.r, rgb.g, rgb.b].map((channel: number): string => channel.toString(16).padStart(2, '0')).join('')}`;\n}\n\n/**\n * Значение канала из набранного в поле: целое от 0 до 255 без знаков и дробей. Всё остальное — `null`,\n * и поле не меняет выбранного, пока ввод не окончен.\n */\nexport function colorPaletteChannel(text: string): number | null {\n const trimmed: string = text.trim();\n\n if (!CHANNEL.test(trimmed)) {\n return null;\n }\n\n const value: number = Number(trimmed);\n\n return value <= 255 ? value : null;\n}\n\n/** Полоса оттенков слева направо: градиент по вершинам круга в полной насыщенности и яркости. */\nexport function colorPaletteSpectrum(): string {\n const stops: string[] = SPECTRUM_HUES.map((h: number): string => colorPaletteFromHsv({ h, s: 1, v: 1 }));\n\n return `linear-gradient(to right, ${stops.join(', ')})`;\n}\n\n/**\n * Площадь насыщенности и яркости для оттенка `hue`: внизу чёрный, и вверх цвет ярче; слева белый, и\n * вправо цвет насыщеннее до чистого оттенка. Это математика цвета, а не оформление: слои — края\n * пространства цвета.\n */\nexport function colorPaletteArea(hue: string): string {\n const white: string = colorPaletteFromHsv({ h: 0, s: 0, v: 1 });\n const black: string = colorPaletteFromHsv({ h: 0, s: 0, v: 0 });\n\n return `linear-gradient(to top, ${black}, transparent), linear-gradient(to right, ${white}, ${hue})`;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n linkedSignal,\n output,\n OutputEmitterRef,\n Signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { RtInputComponent } from '@rt-tools/ui-kit-v2/input';\nimport {\n colorPaletteArea,\n colorPaletteChannel,\n colorPaletteFromHsv,\n colorPaletteFromRgb,\n colorPaletteHex,\n colorPaletteSpectrum,\n colorPaletteStep,\n colorPaletteToHsv,\n colorPaletteToRgb,\n} from '../rt-color-palette.logic';\nimport { IRtColorPalette } from '../rt-color-palette.model';\n\nconst BEM_BLOCK: string = 'rt-color-picker';\nconst CHANNELS: readonly IRtColorPalette.Channel[] = ['r', 'g', 'b'];\n\n/** Поле одного канала и канал, который оно правит. */\ninterface IChannelControl {\n channel: IRtColorPalette.Channel;\n /** Буква канала над полем: R, G, B одинаковы во всех языках. */\n name: string;\n control: FormControl<string>;\n}\n\n/**\n * Выбор своего цвета палитры: площадь насыщенности и яркости, полоса оттенка, поле шестнадцатеричной\n * записи, «Отмена» и «Применить». Рисует его кит сам — сторонний выбор цвета в кит не входит.\n *\n * Выбранное живёт здесь до «Применить»: поле палитры меняется только им. Начинается выбор с цвета,\n * который пришёл входом, и «Применить» недоступно, пока выбранное с ним совпадает.\n */\n@Component({\n selector: 'rt-color-picker',\n templateUrl: './rt-color-picker.component.html',\n styleUrls: ['./rt-color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // Angular\n ReactiveFormsModule,\n\n // standalone components / directives\n RtButtonDirective,\n RtInputComponent,\n BlockDirective,\n ElemDirective,\n ],\n host: { class: BEM_BLOCK },\n})\nexport class RtColorPickerComponent {\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n /** Цвет в оттенке, насыщенности и яркости: оттенок серого не теряется, пока человек тянет яркость. */\n protected readonly hsv: WritableSignal<IRtColorPalette.Hsv> = linkedSignal<IRtColorPalette.Hsv>((): IRtColorPalette.Hsv =>\n colorPaletteToHsv(this.value())\n );\n\n protected readonly picked: Signal<string> = computed((): string => colorPaletteFromHsv(this.hsv()));\n protected readonly changed: Signal<boolean> = computed((): boolean => this.picked() !== this.value());\n\n /** Чистый оттенок площади: её правый верхний угол. */\n protected readonly hueColor: Signal<string> = computed((): string => colorPaletteFromHsv({ h: this.hsv().h, s: 1, v: 1 }));\n protected readonly area: Signal<string> = computed((): string => colorPaletteArea(this.hueColor()));\n protected readonly spectrum: string = colorPaletteSpectrum();\n protected readonly hueDegrees: Signal<number> = computed((): number => Math.round(this.hsv().h));\n protected readonly saturation: Signal<number> = computed((): number => Math.round(this.hsv().s * 100));\n protected readonly areaText: Signal<string> = computed((): string => `${this.saturation()}%, ${Math.round(this.hsv().v * 100)}%`);\n\n protected readonly hexControl: FormControl<string> = new FormControl<string>('', { nonNullable: true });\n\n /** Поля каналов по порядку строки: красный, зелёный, синий. */\n protected readonly channelControls: readonly IChannelControl[] = CHANNELS.map((channel: IRtColorPalette.Channel): IChannelControl => ({\n channel,\n name: channel.toUpperCase(),\n control: new FormControl<string>('', { nonNullable: true }),\n }));\n\n /** Доступные имена полей каналов из словаря кита. */\n protected readonly channelLabels: Signal<Readonly<Record<IRtColorPalette.Channel, string>>> = computed(\n (): Readonly<Record<IRtColorPalette.Channel, string>> => ({\n r: this.t().uiColorPickerRed,\n g: this.t().uiColorPickerGreen,\n b: this.t().uiColorPickerBlue,\n })\n );\n\n /** Цвет, с которого начинается выбор, `#rrggbb`. */\n public readonly value: InputSignal<string> = input.required<string>();\n\n /** Строка полей красного, зелёного и синего под записью hex. Без неё — площадь, полоса и hex. */\n public readonly channels: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly applied: OutputEmitterRef<string> = output<string>();\n public readonly cancelled: OutputEmitterRef<void> = output<void>();\n\n #dragging: boolean = false;\n\n constructor() {\n // Поле записи показывает выбранное и молчит в ответ: иначе его же изменение вернулось бы\n // набранной строкой и перебило бы неоконченный ввод.\n effect((): void => {\n const hex: string = this.picked();\n\n if (colorPaletteHex(this.hexControl.value) !== hex) {\n this.hexControl.setValue(hex, { emitEvent: false });\n }\n });\n\n this.hexControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((text: string): void => {\n const hex: string | null = colorPaletteHex(text);\n\n if (hex !== null && hex !== this.picked()) {\n this.hsv.set(colorPaletteToHsv(hex));\n }\n });\n\n // Поля каналов ведут себя так же: показывают выбранное и молчат в ответ, а набранное целое\n // от 0 до 255 меняет один свой канал.\n effect((): void => {\n const rgb: IRtColorPalette.Rgb = colorPaletteToRgb(this.picked());\n\n for (const { channel, control } of this.channelControls) {\n if (colorPaletteChannel(control.value) !== rgb[channel]) {\n control.setValue(String(rgb[channel]), { emitEvent: false });\n }\n }\n });\n\n for (const { channel, control } of this.channelControls) {\n control.valueChanges.pipe(takeUntilDestroyed()).subscribe((text: string): void => {\n const value: number | null = colorPaletteChannel(text);\n const rgb: IRtColorPalette.Rgb = colorPaletteToRgb(this.picked());\n\n if (value !== null && value !== rgb[channel]) {\n this.hsv.set(colorPaletteToHsv(colorPaletteFromRgb({ ...rgb, [channel]: value })));\n }\n });\n }\n }\n\n protected onAreaPointer(event: PointerEvent): void {\n if (event.type === 'pointerdown') {\n this.#dragging = true;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n }\n\n if (!this.#dragging) {\n return;\n }\n\n if (event.type === 'pointerup') {\n this.#dragging = false;\n }\n\n const box: DOMRect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const s: number = box.width > 0 ? (event.clientX - box.left) / box.width : 0;\n const v: number = box.height > 0 ? 1 - (event.clientY - box.top) / box.height : 0;\n\n this.hsv.update((hsv: IRtColorPalette.Hsv): IRtColorPalette.Hsv => ({\n ...hsv,\n s: Math.min(1, Math.max(0, s)),\n v: Math.min(1, Math.max(0, v)),\n }));\n }\n\n protected onHuePointer(event: PointerEvent): void {\n if (event.type === 'pointerdown') {\n this.#dragging = true;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n }\n\n if (!this.#dragging) {\n return;\n }\n\n if (event.type === 'pointerup') {\n this.#dragging = false;\n }\n\n const box: DOMRect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const share: number = box.width > 0 ? Math.min(1, Math.max(0, (event.clientX - box.left) / box.width)) : 0;\n\n this.hsv.update((hsv: IRtColorPalette.Hsv): IRtColorPalette.Hsv => ({ ...hsv, h: Math.min(359, share * 360) }));\n }\n\n protected onKey(target: 'area' | 'hue', event: KeyboardEvent): void {\n const next: IRtColorPalette.Hsv | null = colorPaletteStep(target, event.key, this.hsv());\n\n if (next === null) {\n return;\n }\n\n event.preventDefault();\n this.hsv.set(next);\n }\n\n protected onApply(): void {\n if (this.changed()) {\n this.applied.emit(this.picked());\n }\n }\n}\n","<ng-container rtBlock=\"rt-color-picker\">\n <!-- Площадь: вправо растёт насыщенность, вверх — яркость. Её фон строит логика палитры по оттенку\n полосы. Указатель тянет точку, стрелки двигают её шагом. -->\n <div\n rtElem=\"area\"\n qa-dataid=\"color-picker-area\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"t().uiColorPickerArea\"\n [attr.aria-valuenow]=\"saturation()\"\n [attr.aria-valuetext]=\"areaText()\"\n [style.--rt-color-picker-area]=\"area()\"\n [style.--rt-color-picker-x]=\"hsv().s\"\n [style.--rt-color-picker-y]=\"1 - hsv().v\"\n (pointerdown)=\"onAreaPointer($event)\"\n (pointermove)=\"onAreaPointer($event)\"\n (pointerup)=\"onAreaPointer($event)\"\n (keydown)=\"onKey('area', $event)\">\n <span rtElem=\"area-thumb\" [style.--rt-color-picker-color]=\"picked()\"></span>\n </div>\n\n <div\n rtElem=\"hue\"\n qa-dataid=\"color-picker-hue\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"359\"\n [attr.aria-label]=\"t().uiColorPickerHue\"\n [attr.aria-valuenow]=\"hueDegrees()\"\n [style.--rt-color-picker-x]=\"hsv().h / 360\"\n [style.--rt-color-picker-spectrum]=\"spectrum\"\n (pointerdown)=\"onHuePointer($event)\"\n (pointermove)=\"onHuePointer($event)\"\n (pointerup)=\"onHuePointer($event)\"\n (keydown)=\"onKey('hue', $event)\">\n <span rtElem=\"hue-thumb\" [style.--rt-color-picker-color]=\"hueColor()\"></span>\n </div>\n\n <div rtElem=\"row\">\n <span rtElem=\"preview\" aria-hidden=\"true\" [style.--rt-color-picker-color]=\"picked()\"></span>\n <rt-input\n rtElem=\"hex\"\n qa-dataid=\"color-picker-hex\"\n size=\"sm\"\n [clearable]=\"false\"\n [ariaLabel]=\"t().uiColorPickerHex\"\n [formControl]=\"hexControl\" />\n </div>\n\n @if (channels()) {\n <div rtElem=\"channels\">\n @for (item of channelControls; track item.channel) {\n <div rtElem=\"channel\">\n <span rtElem=\"channel-name\" aria-hidden=\"true\">{{ item.name }}</span>\n <rt-input\n rtElem=\"channel-input\"\n qa-dataid=\"color-picker-channel\"\n size=\"sm\"\n [clearable]=\"false\"\n [ariaLabel]=\"channelLabels()[item.channel]\"\n [formControl]=\"item.control\" />\n </div>\n }\n </div>\n }\n\n <div rtElem=\"actions\">\n <button\n type=\"button\"\n rtButton\n qa-dataid=\"color-picker-cancel\"\n appearance=\"text\"\n theme=\"secondary\"\n size=\"sm\"\n (click)=\"cancelled.emit()\">\n {{ t().uiCancel }}\n </button>\n <button type=\"button\" rtButton qa-dataid=\"color-picker-apply\" size=\"sm\" [disabled]=\"!changed()\" (click)=\"onApply()\">\n {{ t().uiApply }}\n </button>\n </div>\n</ng-container>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n viewChild,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\n\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { RtFormControlBase } from '@rt-tools/ui-kit-v2/form-control';\nimport { RtPopoverDirective } from '@rt-tools/ui-kit-v2/popover';\nimport { RtColorPickerComponent } from './picker/rt-color-picker.component';\nimport { colorPaletteHex, colorPaletteNextIndex, colorPaletteSwatches } from './rt-color-palette.logic';\nimport { IRtColorPalette } from './rt-color-palette.model';\n\nconst BEM_BLOCK: string = 'rt-color-palette';\n\n/** С какого цвета начинается выбор своего, когда поле пусто. */\nconst PICKER_START: string = '#000000';\n\n/**\n * Поле выбора цвета: образцы из набора и свой цвет. Значение — `#rrggbb` строчными или `null`.\n *\n * Образцы — группа переключателей: в порядке Tab стоит один образец, стрелки выбирают соседний.\n * Свой цвет выбирается на панели кита — площадь, полоса оттенка и запись, — и поле меняет только\n * «Применить». Только для чтения рисуется один образец текущего цвета.\n *\n * Договорённость — `docs/specs/ui-kit-v2/color-palette/`.\n */\n@Component({\n selector: 'rt-color-palette',\n templateUrl: './rt-color-palette.component.html',\n styleUrls: ['./rt-color-palette.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // standalone components / directives\n RtButtonDirective,\n RtColorPickerComponent,\n RtPopoverDirective,\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n providers: [\n // Алиас базового токена — чтобы rt-field нашёл контрол через contentChild(RtFormControlBase).\n { provide: RtFormControlBase, useExisting: forwardRef(() => RtColorPaletteComponent) },\n ],\n host: {\n class: BEM_BLOCK,\n '[class.rt-color-palette--disabled]': 'isDisabled()',\n '[class.rt-color-palette--invalid]': 'isInvalid()',\n '[class.rt-color-palette--readonly]': 'isReadonlyView()',\n },\n})\nexport class RtColorPaletteComponent extends RtFormControlBase<string | null> {\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n protected readonly hasValue: Signal<boolean> = computed((): boolean => this.value() !== null);\n protected readonly swatches: Signal<IRtColorPalette.Swatch[]> = computed((): IRtColorPalette.Swatch[] =>\n colorPaletteSwatches(this.colors(), this.value())\n );\n\n /** Номер выбранного образца; без выбора — `-1`. */\n protected readonly checkedIndex: Signal<number> = computed((): number =>\n this.swatches().findIndex((swatch: IRtColorPalette.Swatch): boolean => swatch.hex === this.value())\n );\n\n /** Образец в порядке Tab: выбранный, а без выбора — первый. */\n protected readonly tabbableIndex: Signal<number> = computed((): number => Math.max(this.checkedIndex(), 0));\n\n /** Свой цвет уже выбран: последний образец стоит вне набора. */\n protected readonly hasCustom: Signal<boolean> = computed((): boolean =>\n this.swatches().some((swatch: IRtColorPalette.Swatch): boolean => swatch.custom)\n );\n\n protected readonly isReadonlyView: Signal<boolean> = computed((): boolean => this.readonly() || this.isReadonly());\n protected readonly pickerStart: Signal<string> = computed((): string => this.value() ?? PICKER_START);\n protected readonly groupLabel: Signal<string> = computed((): string => this.ariaLabel() ?? this.t().uiColorPalette);\n\n protected readonly swatchRefs: Signal<readonly ElementRef<HTMLButtonElement>[]> = viewChildren<ElementRef<HTMLButtonElement>>('swatch');\n protected readonly picker: Signal<RtPopoverDirective | undefined> = viewChild(RtPopoverDirective);\n\n /** Цвета образцов по порядку; без них — набор кита. Неверные цвета и повторы не рисуются. */\n public readonly colors: InputSignal<readonly string[]> = input<readonly string[]>([]);\n\n /** Только для чтения: один образец текущего цвета, нажимать нечего. */\n public readonly readonly: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Кнопка своего цвета и панель выбора. Без неё палитра выбирает только из набора. */\n public readonly customAllowed: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n\n /** Поля красного, зелёного и синего в панели своего цвета, под записью hex. */\n public readonly channels: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly displayText: Signal<string> = computed((): string => this.value() ?? '');\n\n public override writeValue(value: string | null): void {\n super.writeValue(colorPaletteHex(value));\n }\n\n protected onSwatch(hex: string): void {\n if (this.isDisabled() || this.isReadonlyView()) {\n return;\n }\n\n this.#choose(hex);\n }\n\n protected onSwatchKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n const next: number | null = colorPaletteNextIndex(event.key, this.checkedIndex(), this.swatches().length);\n\n if (next === null) {\n return;\n }\n\n event.preventDefault();\n this.#choose(this.swatches()[next].hex);\n this.swatchRefs()[next]?.nativeElement.focus();\n }\n\n protected onCustomApply(hex: string): void {\n this.picker()?.close();\n this.#choose(hex);\n }\n\n protected onCustomCancel(): void {\n this.picker()?.close();\n }\n\n protected getEmptyValue(): string | null {\n return null;\n }\n\n protected focusAfterClear(): void {\n this.swatchRefs()[0]?.nativeElement.focus();\n }\n\n #choose(hex: string): void {\n this.value.set(hex);\n this.emitChange(hex);\n this.markTouched();\n }\n}\n","<ng-container rtBlock=\"rt-color-palette\">\n @if (isReadonlyView()) {\n <!-- Только для чтения — один образец текущего цвета; пустой — с одной рамкой. -->\n <span\n rtElem=\"swatch\"\n qa-dataid=\"color-palette-readonly\"\n role=\"img\"\n [rtMod]=\"{ readonly: true, empty: !hasValue() }\"\n [attr.aria-label]=\"value() ?? t().uiColorPaletteEmpty\"\n [style.--rt-color-palette-color]=\"value()\"></span>\n } @else {\n <div\n rtElem=\"swatches\"\n role=\"radiogroup\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"groupLabel()\"\n [attr.aria-disabled]=\"isDisabled() || null\">\n @for (swatch of swatches(); track swatch.hex; let index = $index) {\n <button\n #swatch\n type=\"button\"\n rtElem=\"swatch\"\n qa-dataid=\"color-palette-swatch\"\n role=\"radio\"\n [rtMod]=\"{ checked: index === checkedIndex(), custom: swatch.custom }\"\n [attr.aria-checked]=\"index === checkedIndex()\"\n [attr.aria-label]=\"swatch.hex\"\n [attr.tabindex]=\"index === tabbableIndex() ? 0 : -1\"\n [disabled]=\"isDisabled()\"\n [style.--rt-color-palette-color]=\"swatch.hex\"\n (click)=\"onSwatch(swatch.hex)\"\n (keydown)=\"onSwatchKeydown($event)\"></button>\n }\n </div>\n\n @if (customAllowed()) {\n <!-- Панель своего цвета висит на кнопке: по ней встаёт и её нажатие не считает внешним. -->\n <button\n type=\"button\"\n rtButton\n rtElem=\"custom\"\n qa-dataid=\"color-palette-custom\"\n appearance=\"text\"\n size=\"sm\"\n [rtPopover]=\"pickerTpl\"\n [disabled]=\"isDisabled()\">\n {{ hasCustom() ? t().uiColorPaletteEditCustom : t().uiColorPaletteCustom }}\n </button>\n\n <ng-template #pickerTpl>\n <rt-color-picker\n [value]=\"pickerStart()\"\n [channels]=\"channels()\"\n (applied)=\"onCustomApply($event)\"\n (cancelled)=\"onCustomCancel()\" />\n </ng-template>\n }\n }\n</ng-container>\n"],"mappings":"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"}