@rt-tools/ui-kit-v2 0.16.0 → 0.18.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 (321) hide show
  1. package/README.md +25 -0
  2. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +79 -0
  3. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -0
  4. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +227 -0
  5. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -0
  6. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +47 -0
  7. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -0
  8. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +702 -0
  9. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -0
  10. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +214 -0
  11. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -0
  12. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +53 -0
  13. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -0
  14. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +88 -0
  15. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -0
  16. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +365 -0
  17. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +152 -0
  19. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -0
  20. package/fesm2022/rt-tools-ui-kit-v2-card.mjs +72 -0
  21. package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -0
  22. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +111 -0
  23. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -0
  24. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +76 -0
  25. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +255 -0
  27. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -0
  28. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1326 -0
  29. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -0
  30. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2590 -0
  31. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +45 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -0
  34. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +158 -0
  35. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -0
  36. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +894 -0
  37. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -0
  38. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +1217 -0
  39. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -0
  40. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +779 -0
  41. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -0
  42. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +573 -0
  43. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -0
  44. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +141 -0
  45. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -0
  46. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +68 -0
  47. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -0
  48. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +478 -0
  49. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -0
  50. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +183 -0
  51. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -0
  52. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +44 -0
  53. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -0
  54. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +260 -0
  55. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -0
  56. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +937 -0
  57. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -0
  58. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +56 -0
  59. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -0
  60. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +107 -0
  61. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -0
  62. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +183 -0
  63. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +219 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -0
  66. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +214 -0
  67. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -0
  68. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +117 -0
  69. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -0
  70. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +32 -0
  71. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -0
  72. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +91 -0
  73. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -0
  74. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +220 -0
  75. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -0
  76. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +72 -0
  77. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -0
  78. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +163 -0
  79. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -0
  80. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +674 -0
  81. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -0
  82. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +540 -0
  83. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -0
  84. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +227 -0
  85. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -0
  86. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +37 -0
  87. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -0
  88. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +361 -0
  89. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -0
  90. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +143 -0
  91. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -0
  92. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +49 -0
  93. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -0
  94. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +97 -0
  95. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -0
  96. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +57 -0
  97. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -0
  98. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +537 -0
  99. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -0
  100. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +105 -0
  101. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -0
  102. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +71 -0
  103. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -0
  104. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +315 -0
  105. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -0
  106. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +51 -0
  107. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -0
  108. package/fesm2022/rt-tools-ui-kit-v2-note.mjs +44 -0
  109. package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -0
  110. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +54 -0
  111. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -0
  112. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +339 -0
  113. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -0
  114. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +187 -0
  115. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -0
  116. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +170 -0
  117. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -0
  118. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +312 -0
  119. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -0
  120. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +174 -0
  121. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -0
  122. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +56 -0
  123. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -0
  124. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +96 -41
  125. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  126. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +118 -0
  127. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -0
  128. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +290 -0
  129. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -0
  130. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +37 -0
  131. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -0
  132. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +495 -0
  133. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -0
  134. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +1493 -0
  135. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -0
  136. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +49 -0
  137. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -0
  138. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +123 -0
  139. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -0
  140. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +70 -0
  141. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -0
  142. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +92 -0
  143. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -0
  144. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +147 -0
  145. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -0
  146. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +117 -0
  147. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -0
  148. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +1636 -0
  149. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -0
  150. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +350 -0
  151. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -0
  152. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +122 -0
  153. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -0
  154. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +85 -0
  155. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -0
  156. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +73 -0
  157. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -0
  158. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +196 -0
  159. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -0
  160. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +39 -0
  161. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -0
  162. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +338 -0
  163. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -0
  164. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +132 -0
  165. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -0
  166. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +162 -0
  167. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -0
  168. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +135 -0
  169. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -0
  170. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +214 -0
  171. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -0
  172. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +64 -0
  173. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -0
  174. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +263 -0
  175. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -0
  176. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +296 -0
  177. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -0
  178. package/fesm2022/rt-tools-ui-kit-v2.mjs +91 -23164
  179. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  180. package/package.json +349 -1
  181. package/rt-tools-ui-kit-v2-0.18.0.tgz +0 -0
  182. package/src/lib/components/action-bar/CONTEXT.md +5 -0
  183. package/src/lib/components/action-bar/rt-action-bar.component.scss +30 -16
  184. package/src/lib/components/aside/CONTEXT.md +9 -1
  185. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +7 -8
  186. package/src/lib/components/aside/header/rt-aside-header.component.scss +16 -1
  187. package/src/lib/components/aside/rt-aside.component.scss +17 -1
  188. package/src/lib/components/button/CONTEXT.md +12 -11
  189. package/src/lib/components/button/rt-button.directive.scss +36 -0
  190. package/src/lib/components/data-list/settings/rt-data-list-settings-aside.component.scss +2 -2
  191. package/src/lib/components/data-table/cell/rt-data-table-cell.component.scss +1 -1
  192. package/src/lib/components/data-table/filter-cell/rt-data-table-filter-cell.component.scss +1 -1
  193. package/src/lib/components/data-table/rt-data-table.component.scss +1 -1
  194. package/src/lib/components/dialog/CONTEXT.md +9 -0
  195. package/src/lib/components/dialog/content/rt-dialog-content.component.scss +20 -0
  196. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +18 -2
  197. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +21 -3
  198. package/src/lib/components/dialog/rt-dialog.component.scss +9 -3
  199. package/src/lib/components/dot-field/CONTEXT.md +31 -0
  200. package/src/lib/components/dot-field/rt-dot-field.component.scss +20 -0
  201. package/src/lib/components/dot-field/stories/component/CONTEXT.md +14 -0
  202. package/src/lib/components/dot-field/stories/component/test-dot-field.component.scss +31 -0
  203. package/src/lib/components/dynamic-selector/CONTEXT.md +6 -0
  204. package/src/lib/components/field/CONTEXT.md +18 -2
  205. package/src/lib/components/header/CONTEXT.md +2 -2
  206. package/src/lib/components/icon/CONTEXT.md +11 -7
  207. package/src/lib/components/icon/rt-icon.component.scss +47 -0
  208. package/src/lib/components/icon-button/CONTEXT.md +27 -20
  209. package/src/lib/components/icon-button/rt-icon-button.component.scss +51 -25
  210. package/src/lib/components/image-upload/CONTEXT.md +20 -15
  211. package/src/lib/components/image-upload/rt-image-upload.component.scss +14 -2
  212. package/src/lib/components/pagination/rt-pagination.component.scss +1 -1
  213. package/src/lib/components/scroll-area/CONTEXT.md +2 -0
  214. package/src/lib/components/scroll-area/rt-scroll-area.component.scss +20 -3
  215. package/src/lib/components/select/rt-select.component.scss +4 -0
  216. package/src/lib/components/side-menu/CONTEXT.md +7 -2
  217. package/src/lib/components/spinner/CONTEXT.md +15 -8
  218. package/src/lib/components/spinner/rt-spinner.component.scss +108 -9
  219. package/src/lib/components/tag/rt-tag.component.scss +43 -23
  220. package/src/lib/components/toast/CONTEXT.md +8 -0
  221. package/src/lib/components/toast/rt-toast.component.scss +74 -15
  222. package/src/lib/components/toast/rt-toaster.component.scss +5 -1
  223. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -37
  224. package/src/lib/components/toggle-switch/CONTEXT.md +11 -3
  225. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +53 -14
  226. package/src/lib/components/toolbar/rt-toolbar.component.scss +15 -4
  227. package/src/lib/components/tooltip/CONTEXT.md +5 -5
  228. package/src/rich-editor/lib/components/chat/CONTEXT.md +7 -2
  229. package/src/rich-editor/lib/components/chat/rt-chat.component.scss +25 -0
  230. package/src/styles/_semantic.scss +1 -1
  231. package/styles/tokens.css +43 -8
  232. package/types/rt-tools-ui-kit-v2-accordion.d.ts +30 -0
  233. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +140 -0
  234. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +25 -0
  235. package/types/rt-tools-ui-kit-v2-aside.d.ts +436 -0
  236. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +78 -0
  237. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +41 -0
  238. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +20 -0
  239. package/types/rt-tools-ui-kit-v2-button.d.ts +76 -0
  240. package/types/rt-tools-ui-kit-v2-calendar.d.ts +96 -0
  241. package/types/rt-tools-ui-kit-v2-card.d.ts +38 -0
  242. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +46 -0
  243. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +20 -0
  244. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +85 -0
  245. package/types/rt-tools-ui-kit-v2-container.d.ts +425 -0
  246. package/types/rt-tools-ui-kit-v2-core.d.ts +1222 -0
  247. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +22 -0
  248. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -0
  249. package/types/rt-tools-ui-kit-v2-data-list.d.ts +334 -0
  250. package/types/rt-tools-ui-kit-v2-data-table.d.ts +494 -0
  251. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +181 -0
  252. package/types/rt-tools-ui-kit-v2-date-range.d.ts +98 -0
  253. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +20 -0
  254. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +33 -0
  255. package/types/rt-tools-ui-kit-v2-dialog.d.ts +287 -0
  256. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +17 -0
  257. package/types/rt-tools-ui-kit-v2-download-link.d.ts +17 -0
  258. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +139 -0
  259. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +384 -0
  260. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +29 -0
  261. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +57 -0
  262. package/types/rt-tools-ui-kit-v2-field.d.ts +82 -0
  263. package/types/rt-tools-ui-kit-v2-file-card.d.ts +114 -0
  264. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -0
  265. package/types/rt-tools-ui-kit-v2-file-input.d.ts +48 -0
  266. package/types/rt-tools-ui-kit-v2-file-list.d.ts +13 -0
  267. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +72 -0
  268. package/types/rt-tools-ui-kit-v2-form-control.d.ts +74 -0
  269. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -0
  270. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +113 -0
  271. package/types/rt-tools-ui-kit-v2-icon.d.ts +238 -0
  272. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +168 -0
  273. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +102 -0
  274. package/types/rt-tools-ui-kit-v2-info-item.d.ts +13 -0
  275. package/types/rt-tools-ui-kit-v2-input-number.d.ts +67 -0
  276. package/types/rt-tools-ui-kit-v2-input.d.ts +54 -0
  277. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +23 -0
  278. package/types/rt-tools-ui-kit-v2-logo.d.ts +58 -0
  279. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +30 -0
  280. package/types/rt-tools-ui-kit-v2-menu.d.ts +217 -0
  281. package/types/rt-tools-ui-kit-v2-message.d.ts +56 -0
  282. package/types/rt-tools-ui-kit-v2-money-list.d.ts +34 -0
  283. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +93 -0
  284. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +39 -0
  285. package/types/rt-tools-ui-kit-v2-note.d.ts +21 -0
  286. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +23 -0
  287. package/types/rt-tools-ui-kit-v2-page-header.d.ts +173 -0
  288. package/types/rt-tools-ui-kit-v2-pagination.d.ts +64 -0
  289. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +98 -0
  290. package/types/rt-tools-ui-kit-v2-popover.d.ts +79 -0
  291. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +61 -0
  292. package/types/rt-tools-ui-kit-v2-radius.d.ts +37 -0
  293. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +16 -20
  294. package/types/rt-tools-ui-kit-v2-ripple.d.ts +39 -0
  295. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +91 -0
  296. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +23 -0
  297. package/types/rt-tools-ui-kit-v2-select.d.ts +215 -0
  298. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +483 -0
  299. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +32 -0
  300. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +41 -0
  301. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -0
  302. package/types/rt-tools-ui-kit-v2-split-button.d.ts +72 -0
  303. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +81 -0
  304. package/types/rt-tools-ui-kit-v2-stepper.d.ts +51 -0
  305. package/types/rt-tools-ui-kit-v2-table.d.ts +739 -0
  306. package/types/rt-tools-ui-kit-v2-tabs.d.ts +153 -0
  307. package/types/rt-tools-ui-kit-v2-tag.d.ts +70 -0
  308. package/types/rt-tools-ui-kit-v2-textarea.d.ts +36 -0
  309. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +43 -0
  310. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +111 -0
  311. package/types/rt-tools-ui-kit-v2-timeline.d.ts +35 -0
  312. package/types/rt-tools-ui-kit-v2-toast.d.ts +103 -0
  313. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +109 -0
  314. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +85 -0
  315. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +66 -0
  316. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +74 -0
  317. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +33 -0
  318. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +128 -0
  319. package/types/rt-tools-ui-kit-v2-workspace.d.ts +84 -0
  320. package/types/rt-tools-ui-kit-v2.d.ts +87 -9290
  321. package/rt-tools-ui-kit-v2-0.16.0.tgz +0 -0
@@ -0,0 +1,61 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import * as i0 from '@angular/core';
3
+ import { Signal, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
4
+ import { ControlValueAccessor } from '@angular/forms';
5
+ import * as i1 from '@rt-tools/ui-kit-v2/radius';
6
+
7
+ /**
8
+ * Радиокнопка: `role="radio"` с `aria-checked` и `aria-disabled`, выбор нажатием, пробелом и Enter.
9
+ *
10
+ * Выбор приходит двумя путями. Форма пишет модель через `ControlValueAccessor`, и радиокнопка
11
+ * выбрана, когда её значение — сама модель, а не равное ей. Без формы выбранность ставится входом
12
+ * `checked`, а выбор сообщается выходом `checkedChange`: так строку отмечает таблица. Заданный вход
13
+ * решает раньше модели формы.
14
+ *
15
+ * Нажатие на выбранную выбор не снимает — радиокнопку покидают только выбором другой. Каждое
16
+ * нажатие сообщается наружу `clickAction` и дальше обёртки не идёт: строка таблицы под кружком не
17
+ * открывается. Выбор клавишей наружу нажатием не сообщается.
18
+ *
19
+ * Отключение складывается из входа `disabled` и слова формы: форма зовёт `setDisabledState`
20
+ * раньше первого обновления вида, и один общий signal затёр бы её слово.
21
+ *
22
+ * Каждая радиокнопка — свой `ControlValueAccessor`, и значение, отданное одной, форма соседям на
23
+ * том же контроле не пишет: поэтому модель берётся и у самого контрола.
24
+ */
25
+ declare class RtRadioButtonComponent implements ControlValueAccessor {
26
+ #private;
27
+ protected readonly isChecked: Signal<boolean>;
28
+ protected readonly isDisabled: Signal<boolean>;
29
+ /** Значение радиокнопки: выбрана та, чьё значение — модель формы. */
30
+ readonly value: InputSignal<unknown>;
31
+ /** Выбранность без формы; не заданный вход оставляет решение форме. */
32
+ readonly checked: InputSignalWithTransform<boolean | null, BooleanInput | null | undefined>;
33
+ readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
34
+ /** Вид «карточка»: рамка, содержимое слева, кружок справа. */
35
+ readonly card: InputSignalWithTransform<boolean, BooleanInput>;
36
+ readonly label: InputSignal<string>;
37
+ readonly description: InputSignal<string>;
38
+ /** Имя для вспомогательных средств, когда видимой подписи нет — кружок в строке таблицы. */
39
+ readonly ariaLabel: InputSignal<string | null>;
40
+ /** Каждое нажатие указателем, сменило оно выбор или нет. */
41
+ readonly clickAction: OutputEmitterRef<MouseEvent>;
42
+ /** Радиокнопка стала выбранной. */
43
+ readonly checkedChange: OutputEmitterRef<boolean>;
44
+ constructor();
45
+ writeValue(value: unknown): void;
46
+ /**
47
+ * Директива формы зовёт это при каждой привязке к контролу — и первой, и после смены контрола,
48
+ * — уже поставив новый контрол себе. Здесь радиокнопка и узнаёт, кого слушать. Спросить
49
+ * директиву в конструкторе нельзя: она берёт радиокнопку своим accessor, и это круговая
50
+ * зависимость.
51
+ */
52
+ registerOnChange(fn: (value: unknown) => void): void;
53
+ registerOnTouched(fn: () => void): void;
54
+ setDisabledState(disabled: boolean): void;
55
+ protected onClick(event: MouseEvent): void;
56
+ protected onKeydown(event: KeyboardEvent): void;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtRadioButtonComponent, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtRadioButtonComponent, "rt-radio-button", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "card": { "alias": "card"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "clickAction": "clickAction"; "checkedChange": "checkedChange"; }, never, never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
59
+ }
60
+
61
+ export { RtRadioButtonComponent };
@@ -0,0 +1,37 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InputSignal, Signal } from '@angular/core';
3
+ import { TRtRadius } from '@rt-tools/ui-kit-v2/core';
4
+
5
+ /**
6
+ * Вход скругления, один на весь кит. Компонент с поверхностью берёт его
7
+ * хост-директивой, и у всех он называется одинаково — `radius`.
8
+ *
9
+ * Шаг ложится на хост атрибутом `data-rt-radius`, а не наследуемым свойством:
10
+ * свойство протекло бы в каждый вложенный компонент, и скруглённая карточка
11
+ * скруглила бы все кнопки в себе. Атрибут читают только правила своего хоста.
12
+ *
13
+ * Пустой вход атрибута не пишет: компонент остаётся со своим скруглением по
14
+ * умолчанию из собственных стилей.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * @Component({
19
+ * selector: 'rt-card',
20
+ * hostDirectives: [{ directive: RtRadiusDirective, inputs: ['radius'] }],
21
+ * })
22
+ * ```
23
+ * ```html
24
+ * <rt-card radius="none">…</rt-card>
25
+ * ```
26
+ */
27
+ declare class RtRadiusDirective {
28
+ #private;
29
+ /** Шаг шкалы. Пусто — скругление компонента по умолчанию. */
30
+ readonly radius: InputSignal<TRtRadius | null | undefined>;
31
+ /** Шаг на хосте: названный входом, иначе умолчание хоста, если оно задано. */
32
+ readonly step: Signal<TRtRadius | null>;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtRadiusDirective, never>;
34
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtRadiusDirective, "[rtRadius]", never, { "radius": { "alias": "radius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
+ }
36
+
37
+ export { RtRadiusDirective };
@@ -278,27 +278,18 @@ declare class RtChatMessageActionsDirective {
278
278
  }
279
279
 
280
280
  /**
281
- * Общий презентационный чат: тред сообщений + композер. Никакого data-access/api — история
282
- * приходит готовым массивом `IRtChat.Message[]`, отправка/обновление/скачивание уходят наружу
283
- * через outputs, а стор и blob-загрузка остаются в feature-компоненте каждого домена.
284
- *
285
- * Композер держит свой `FormGroup` — наружу торчит только `send`. Полноэкранный
286
- * режим (expand) — overlay внутри самого компонента (`--expanded`), потребителю
287
- * лишь опционально сообщается через `expandedChange`.
288
- *
289
- * Шапка (тулбар «Чат» + refresh/expand) рендерится только когда включена хотя бы
290
- * одна из иконок (`showRefresh`/`showExpand`): в диалогах своя header-обёртка,
291
- * туда тулбар не нужен.
281
+ * Общий презентационный чат: тред сообщений + композер. История приходит готовым массивом
282
+ * `IRtChat.Message[]`, отправка, обновление, скачивание и набор текста уходят наружу выходами;
283
+ * стор и blob-загрузка остаются у потребителя. Композер держит свой `FormGroup`. Полноэкранный
284
+ * режим — overlay внутри компонента (`--expanded`). Шапка рисуется, только когда включена хотя бы
285
+ * одна из иконок `showRefresh`/`showExpand`: в диалогах своя header-обёртка.
292
286
  */
293
287
  declare class RtChatComponent {
294
288
  #private;
295
289
  /**
296
- * Дата сообщения форматируется по активной локали приложения, а не по
297
- * `LOCALE_ID`: тот вычисляется на подъёме приложения и там, где язык
298
- * переключают на ходу, оставил бы часы в прежнем формате до перезагрузки.
299
- *
300
- * Данные локали для `DatePipe` регистрирует приложение: без них пайп падает
301
- * `Missing locale data`, и кит за это не отвечает.
290
+ * Дата форматируется по активной локали приложения, а не по `LOCALE_ID`: тот вычисляется на
291
+ * подъёме и при смене языка на ходу оставил бы прежний формат. Данные локали для `DatePipe`
292
+ * регистрирует приложение: без них пайп падает `Missing locale data`.
302
293
  */
303
294
  protected readonly t: Signal<TRtKitLabelMap>;
304
295
  protected readonly locale: Signal<string>;
@@ -409,11 +400,14 @@ declare class RtChatComponent {
409
400
  readonly send: OutputEmitterRef<IRtChat.SendPayload>;
410
401
  /** Клик refresh — consumer перетягивает тред. */
411
402
  readonly refresh: OutputEmitterRef<void>;
412
- /** Клик по вложению — consumer качает blob своим api. Шаблон зовёт выход прямо: релей-метод,
413
- * который только повторял `emit`, ничего не добавлял, а файл при этом рос. */
403
+ /** Клик по вложению — consumer качает blob своим api; шаблон зовёт выход прямо, без релея. */
414
404
  readonly downloadFile: OutputEmitterRef<IRtChat.Message>;
415
405
  /** Клик по карточке вложения из `attachments[]` — консюмер качает по `publicId`. */
416
406
  readonly downloadAttachment: OutputEmitterRef<IRtChat.Attachment>;
407
+ /** Набор текста в поле ответа: `true` — отрезок начался, `false` — кончился. */
408
+ readonly typing: OutputEmitterRef<boolean>;
409
+ /** Строка о том, что печатает вторая сторона, поверх низа ленты; пустая прячет плашку. */
410
+ readonly typingText: InputSignal<string>;
417
411
  /** Смена fullscreen-состояния. */
418
412
  readonly expandedChange: OutputEmitterRef<boolean>;
419
413
  readonly deleteMessage: OutputEmitterRef<IRtChat.Message>;
@@ -431,6 +425,8 @@ declare class RtChatComponent {
431
425
  protected onComposerKeydown(event: KeyboardEvent): void;
432
426
  /** Релей submit'а от `rt-message-composer` (rich-режим) наружу как `send`. */
433
427
  protected onComposerSubmit(payload: IRtMessageComposer.SubmitPayload): void;
428
+ /** Ввод в поле ответа любого из двух режимов; выбор файла набором не считается. */
429
+ protected onReplyInput(event: Event): void;
434
430
  /**
435
431
  * Файлы выброшены в обёртку чата: в rich-режиме отдаём массив композеру через
436
432
  * input, в классическом — добавляем к уже выбранным в собственном `replyForm`.
@@ -443,7 +439,7 @@ declare class RtChatComponent {
443
439
  protected onThreadScroll(): void;
444
440
  protected toggleExpand(): void;
445
441
  static ɵfac: i0.ɵɵFactoryDeclaration<RtChatComponent, never>;
446
- static ɵcmp: i0.ɵɵComponentDeclaration<RtChatComponent, "rt-chat", never, { "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "canReply": { "alias": "canReply"; "required": false; "isSignal": true; }; "replyBlockReason": { "alias": "replyBlockReason"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "hasThread": { "alias": "hasThread"; "required": false; "isSignal": true; }; "attachments": { "alias": "attachments"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "richComposer": { "alias": "richComposer"; "required": false; "isSignal": true; }; "formatting": { "alias": "formatting"; "required": false; "isSignal": true; }; "formattingToolbar": { "alias": "formattingToolbar"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; "messageHasActions": { "alias": "messageHasActions"; "required": false; "isSignal": true; }; }, { "send": "send"; "refresh": "refresh"; "downloadFile": "downloadFile"; "downloadAttachment": "downloadAttachment"; "expandedChange": "expandedChange"; "deleteMessage": "deleteMessage"; "retryMessage": "retryMessage"; }, ["messageActions"], ["[rtChatHeaderActions]", "[rtChatFooter]"], true, never>;
442
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtChatComponent, "rt-chat", never, { "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "canReply": { "alias": "canReply"; "required": false; "isSignal": true; }; "replyBlockReason": { "alias": "replyBlockReason"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "hasThread": { "alias": "hasThread"; "required": false; "isSignal": true; }; "attachments": { "alias": "attachments"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "richComposer": { "alias": "richComposer"; "required": false; "isSignal": true; }; "formatting": { "alias": "formatting"; "required": false; "isSignal": true; }; "formattingToolbar": { "alias": "formattingToolbar"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; "typingText": { "alias": "typingText"; "required": false; "isSignal": true; }; "messageHasActions": { "alias": "messageHasActions"; "required": false; "isSignal": true; }; }, { "send": "send"; "refresh": "refresh"; "downloadFile": "downloadFile"; "downloadAttachment": "downloadAttachment"; "typing": "typing"; "expandedChange": "expandedChange"; "deleteMessage": "deleteMessage"; "retryMessage": "retryMessage"; }, ["messageActions"], ["[rtChatHeaderActions]", "[rtChatFooter]"], true, never>;
447
443
  }
448
444
 
449
445
  /**
@@ -0,0 +1,39 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import * as i0 from '@angular/core';
3
+ import { InputSignalWithTransform } from '@angular/core';
4
+
5
+ /**
6
+ * Волна нажатия. Ставится на элемент, который нажимают, и рисует расходящийся
7
+ * от точки касания круг.
8
+ *
9
+ * Волна живёт в своём обрезающем слое внутри элемента, а не прямо в нём:
10
+ * `overflow: hidden` на самой кнопке срезал бы всё, что торчит за её край, —
11
+ * у кнопки-значка так стоит метка, вынесенная на два пикселя наружу.
12
+ *
13
+ * @example
14
+ * ```html
15
+ * <button rtRipple>Сохранить</button>
16
+ * <button rtRipple [rippleDisabled]="loading()">Сохранить</button>
17
+ * ```
18
+ */
19
+ declare class RtRippleDirective {
20
+ #private;
21
+ /**
22
+ * Отключает волну, не трогая остальное поведение элемента.
23
+ * Отключённая и загружающаяся кнопка волны не даёт.
24
+ */
25
+ readonly rippleDisabled: InputSignalWithTransform<boolean, BooleanInput>;
26
+ /** Гасит незакончившиеся волны: иначе таймер трогает снятый из дерева узел. */
27
+ constructor();
28
+ /**
29
+ * Ставит один слой волны от точки нажатия и снимает его, когда тот отгорит.
30
+ *
31
+ * Радиус считается по дальнему углу элемента: волна из угла должна накрыть
32
+ * противоположный, иначе на широкой кнопке она обрывается на полпути.
33
+ */
34
+ launch(event: PointerEvent): void;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtRippleDirective, never>;
36
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtRippleDirective, "[rtRipple]", never, { "rippleDisabled": { "alias": "rippleDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
37
+ }
38
+
39
+ export { RtRippleDirective };
@@ -0,0 +1,91 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import * as i0 from '@angular/core';
3
+ import { TemplateRef, Signal, ElementRef, WritableSignal, InputSignalWithTransform } from '@angular/core';
4
+ import { TNullable } from '@rt-tools/utils';
5
+ import { TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';
6
+
7
+ /**
8
+ * Маркеры частей области прокрутки — своим файлом, как у соседних семей.
9
+ *
10
+ * Каждый маркер держит свой шаблон и не знает об области ничего: область читает маркеры среди
11
+ * своего содержимого и берёт у них шаблон. Часть, которую потребитель не объявил, для области
12
+ * просто отсутствует — рисовать нечего.
13
+ */
14
+ /**
15
+ * Шапка области: стоит сверху и не прокручивается.
16
+ *
17
+ * @example
18
+ * ```html
19
+ * <rt-scroll-area>
20
+ * <ng-container *rtScrollAreaHeader>
21
+ * <h3>Заголовок</h3>
22
+ * </ng-container>
23
+ * </rt-scroll-area>
24
+ * ```
25
+ */
26
+ declare class RtScrollAreaHeaderDirective {
27
+ readonly templateRef: TemplateRef<void>;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtScrollAreaHeaderDirective, never>;
29
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtScrollAreaHeaderDirective, "[rtScrollAreaHeader]", never, {}, {}, never, never, true, never>;
30
+ }
31
+ /** Тело области: единственная часть, которая прокручивается. */
32
+ declare class RtScrollAreaContentDirective {
33
+ readonly templateRef: TemplateRef<void>;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtScrollAreaContentDirective, never>;
35
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtScrollAreaContentDirective, "[rtScrollAreaContent]", never, {}, {}, never, never, true, never>;
36
+ }
37
+ /** Подвал области: стоит снизу и не прокручивается. */
38
+ declare class RtScrollAreaFooterDirective {
39
+ readonly templateRef: TemplateRef<void>;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtScrollAreaFooterDirective, never>;
41
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtScrollAreaFooterDirective, "[rtScrollAreaFooter]", never, {}, {}, never, never, true, never>;
42
+ }
43
+
44
+ /**
45
+ * Область прокрутки: шапка и подвал стоят, тело прокручивается.
46
+ *
47
+ * Части объявляет потребитель — по директиве на каждую. Необъявленная часть не рисуется вовсе:
48
+ * пустая шапка это полоса отступа над списком, а высоту она забирает у тела, ради которого
49
+ * область и открыли.
50
+ *
51
+ * Договорённость — `docs/specs/ui-kit-v2/scroll-area/`.
52
+ */
53
+ declare class RtScrollAreaComponent {
54
+ #private;
55
+ protected readonly t: Signal<TRtKitLabelMap>;
56
+ protected readonly bodyRef: Signal<TNullable<ElementRef<HTMLElement>>>;
57
+ protected readonly footerRef: Signal<TNullable<ElementRef<HTMLElement>>>;
58
+ /**
59
+ * Ниже окна области ещё есть содержимое. Считается по трём числам самого узла, а не по числу
60
+ * пунктов: область не знает, что ей подали, и высота строки у каждого потребителя своя.
61
+ */
62
+ protected readonly hasMoreBelow: WritableSignal<boolean>;
63
+ /**
64
+ * На сколько полоса растушёвки поднята над низом области. Она обязана кончиться там, где
65
+ * начинается содержимое подвала: разделитель потребитель рисует первой его строкой, и полоса,
66
+ * оборвавшаяся выше, оставляет до него чистый фон. Считается замером — верхний отступ подвала
67
+ * потребитель пишет как хочет, и вычесть его в стилях не из чего. Без подвала полоса стоит у
68
+ * самого низа.
69
+ */
70
+ protected readonly hintBottom: WritableSignal<number>;
71
+ readonly headerTpl: Signal<TNullable<RtScrollAreaHeaderDirective>>;
72
+ readonly contentTpl: Signal<TNullable<RtScrollAreaContentDirective>>;
73
+ readonly footerTpl: Signal<TNullable<RtScrollAreaFooterDirective>>;
74
+ /**
75
+ * Признак того, что снизу осталось непоказанное. Выключен по умолчанию: область рисуют
76
+ * десятки экранов, и признак, поставленный безусловно, сдвинул бы вид каждому из них.
77
+ */
78
+ readonly isScrollHintShown: InputSignalWithTransform<boolean, BooleanInput>;
79
+ constructor();
80
+ /**
81
+ * Нажатие на значок уводит тело к самому низу. Нажатие останавливается здесь и в содержимое
82
+ * под значком не уходит: под ним живой пункт, и человек, целившийся в подсказку, уехал бы на
83
+ * чужой экран.
84
+ */
85
+ onScrollHintClick(event: Event): void;
86
+ onBodyScroll(): void;
87
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtScrollAreaComponent, never>;
88
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtScrollAreaComponent, "rt-scroll-area", never, { "isScrollHintShown": { "alias": "isScrollHintShown"; "required": false; "isSignal": true; }; }, {}, ["headerTpl", "contentTpl", "footerTpl"], never, true, never>;
89
+ }
90
+
91
+ export { RtScrollAreaComponent, RtScrollAreaContentDirective, RtScrollAreaFooterDirective, RtScrollAreaHeaderDirective };
@@ -0,0 +1,23 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InputSignal, OutputEmitterRef } from '@angular/core';
3
+ import { IRtIcon } from '@rt-tools/ui-kit-v2/core';
4
+ import * as i1 from '@rt-tools/ui-kit-v2/radius';
5
+
6
+ declare namespace IRtSectionNav {
7
+ interface Item {
8
+ id: string;
9
+ icon: IRtIcon.Name;
10
+ label: string;
11
+ active: boolean;
12
+ }
13
+ }
14
+
15
+ declare class RtSectionNavComponent {
16
+ readonly items: InputSignal<readonly IRtSectionNav.Item[]>;
17
+ readonly itemSelect: OutputEmitterRef<string>;
18
+ protected onSelect(item: IRtSectionNav.Item): void;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtSectionNavComponent, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtSectionNavComponent, "rt-section-nav", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
21
+ }
22
+
23
+ export { IRtSectionNav, RtSectionNavComponent };
@@ -0,0 +1,215 @@
1
+ import * as i0 from '@angular/core';
2
+ import { TemplateRef, Signal, ElementRef, WritableSignal, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
3
+ import { TRtKitLabelMap, IRtInput, IRtIcon } from '@rt-tools/ui-kit-v2/core';
4
+ import { RtFormControlBase } from '@rt-tools/ui-kit-v2/form-control';
5
+ import { RtPopoverDirective, IRtPopover } from '@rt-tools/ui-kit-v2/popover';
6
+ import * as i1 from '@rt-tools/ui-kit-v2/radius';
7
+
8
+ /**
9
+ * Модель `<rt-select>`: один корневой неймспейс с префиксом `I`.
10
+ * Generic-параметр `TValue` повторяет тип значения, который сидит в опциях.
11
+ */
12
+ declare namespace IRtSelect {
13
+ /** Одна опция dropdown'а. */
14
+ interface Option<TValue> {
15
+ label: string;
16
+ value: TValue;
17
+ disabled?: boolean;
18
+ /** Дети опции того же вида. Хотя бы одна опция с детьми делает список деревом. */
19
+ children?: ReadonlyArray<Option<TValue>>;
20
+ }
21
+ /** Видимая строка дерева: опция, её уровень и то, ветка ли она и раскрыта ли. */
22
+ interface Row<TValue> {
23
+ readonly option: Option<TValue>;
24
+ readonly level: number;
25
+ readonly branch: boolean;
26
+ readonly open: boolean;
27
+ readonly parent: TValue | null;
28
+ }
29
+ /** Сколько включённых листьев ветки выбрано: все, часть или ни одного. */
30
+ type TBranchState = 'all' | 'some' | 'none';
31
+ /** Что делать по боковой стрелке: какую ветку переключить и куда увести подсветку. */
32
+ interface SideKeyAnswer<TValue> {
33
+ readonly toggle: TValue | null;
34
+ readonly index: number;
35
+ }
36
+ /**
37
+ * Что кит отдаёт своей разметке указателя. Три значения и не больше: большее привязало бы
38
+ * разметку потребителя к устройству семьи, и семью стало бы не поправить, не сломав её.
39
+ */
40
+ interface TriggerState<TValue> {
41
+ /** Открыт ли список: по нему потребитель крутит шеврон. */
42
+ readonly isOpen: boolean;
43
+ /** Что выбрано. У выбора нескольких это все выбранные значения. */
44
+ readonly value: TValue | null;
45
+ /** Подпись выбранного — та же, что кит рисует в своём указателе. */
46
+ readonly label: string;
47
+ /** Отключён ли выбор. */
48
+ readonly isDisabled: boolean;
49
+ }
50
+ /** Обстановка шаблона указателя: состояние приходит как `$implicit`. */
51
+ interface TriggerContext<TValue> {
52
+ readonly $implicit: TriggerState<TValue>;
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Маркер своей разметки указателя — того, что человек нажимает, чтобы открыть список.
58
+ *
59
+ * Поведение указателя остаётся киту: открытие панели, её ширина, приметы доступности,
60
+ * отключённость, клавиши и закрытие висят на кнопке. Потребитель даёт только то, что рисуется
61
+ * внутри неё, и получает три значения обстановки: открыт ли список, что выбрано, отключён ли выбор.
62
+ *
63
+ * Один маркер на обе семьи выбора: они отличаются только разметкой внутри кнопки, и два маркера
64
+ * разошлись бы на первой же правке.
65
+ *
66
+ * @example
67
+ * ```html
68
+ * <rt-select [options]="options">
69
+ * <ng-template rtSelectTrigger let-state>
70
+ * <rt-tag [value]="state.label" [icon]="state.isOpen ? 'chevron-up' : 'chevron-down'" />
71
+ * </ng-template>
72
+ * </rt-select>
73
+ * ```
74
+ */
75
+ declare class RtSelectTriggerDirective<TValue = unknown> {
76
+ readonly templateRef: TemplateRef<IRtSelect.TriggerContext<TValue>>;
77
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtSelectTriggerDirective<any>, never>;
78
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtSelectTriggerDirective<any>, "[rtSelectTrigger]", never, {}, {}, never, never, true, never>;
79
+ }
80
+
81
+ type TBooleanInput = boolean | string;
82
+ /**
83
+ * Single-select dropdown с опциональным filter input.
84
+ *
85
+ * Panel рендерится через CDK Overlay (директива `[rtPopover]` на trigger'е) —
86
+ * не обрезается `overflow: hidden` предками (таблицы, aside, карточки) и
87
+ * авто-flip'ается у края viewport. CVA через общий `RtFormControlBase`. Крестик
88
+ * (`clearable`) слева от шеврона — виден при наличии значения, очищает выбор.
89
+ *
90
+ * Keyboard-nav (activedescendant): фокус на trigger'е, ArrowUp/Down двигают
91
+ * виртуальный highlight (`aria-activedescendant`), Enter выбирает, Escape
92
+ * закрывает. Home/End/typeahead — deferred.
93
+ */
94
+ declare class RtSelectComponent<TValue> extends RtFormControlBase<TValue | null> {
95
+ #private;
96
+ protected readonly t: Signal<TRtKitLabelMap>;
97
+ protected readonly panelId: string;
98
+ protected readonly filterPlaceholderText: Signal<string>;
99
+ protected readonly popover: Signal<RtPopoverDirective>;
100
+ protected readonly triggerEl: Signal<ElementRef<HTMLButtonElement> | undefined>;
101
+ protected readonly filterTerm: WritableSignal<string>;
102
+ protected readonly activeIndex: WritableSignal<number>;
103
+ /** Раскрытые ветки дерева. Живут, пока открыта панель: при открытии раскрыты ветки над выбранным. */
104
+ protected readonly openBranches: WritableSignal<ReadonlySet<TValue>>;
105
+ protected readonly isOpen: Signal<boolean>;
106
+ /** Идентификатор подсвеченной опции — тот же, что уходит в `aria-activedescendant`. */
107
+ protected readonly activeOptionId: Signal<string | null>;
108
+ /**
109
+ * Своя разметка указателя, если потребитель её объявил. Не объявил — кит рисует свою, и ни один
110
+ * нынешний потребитель не двигается.
111
+ */
112
+ protected readonly triggerTpl: Signal<RtSelectTriggerDirective<TValue> | undefined>;
113
+ protected readonly hasValue: Signal<boolean>;
114
+ protected readonly selectedLabel: Signal<string>;
115
+ /** Дерево ли список: тогда у строк есть место под стрелку и отступ по уровню. */
116
+ protected readonly isTree: Signal<boolean>;
117
+ /** Видимые строки: плоский список — как прежде, дерево — по раскрытым веткам и поисковому слову. */
118
+ protected readonly rows: Signal<ReadonlyArray<IRtSelect.Row<TValue>>>;
119
+ /** Три значения, которые кит отдаёт своей разметке указателя, и не больше. */
120
+ protected readonly triggerState: Signal<IRtSelect.TriggerState<TValue>>;
121
+ /** Вид рамки: `outline` — рамка со всех сторон, `fill` — залитое поле с чертой снизу. */
122
+ readonly appearance: InputSignal<IRtInput.Appearance>;
123
+ readonly displayText: Signal<string>;
124
+ readonly options: InputSignal<ReadonlyArray<IRtSelect.Option<TValue>>>;
125
+ readonly placeholder: InputSignal<string>;
126
+ readonly iconLeft: InputSignal<IRtIcon.Name | null>;
127
+ readonly filter: InputSignalWithTransform<boolean, TBooleanInput>;
128
+ /** Пусто — берётся переведённая подпись по умолчанию */
129
+ readonly filterPlaceholder: InputSignal<string>;
130
+ /**
131
+ * Чем мерится панель. По умолчанию она не уже кнопки и дальше растёт по содержимому:
132
+ * со своим указателем кнопка бывает узкой, и панель по её ширине давила бы содержимое.
133
+ * `trigger` возвращает прежнее — ровно по кнопке, `auto` пускает панель по содержимому
134
+ * целиком. Предел высоты назначается входом `panelMaxHeight`.
135
+ */
136
+ readonly panelWidth: InputSignal<IRtPopover.Width>;
137
+ /**
138
+ * Предел высоты панели — длина как в стилях, например `20rem`. Пусто — предел кита
139
+ * `--rt-input-panel-max-height`, и длинный список прокручивается внутри панели: без предела
140
+ * он уходил за нижний край экрана, и пункты за краем были недостижимы. `none` снимает предел —
141
+ * для короткого списка, который должен открываться целиком, без прокрутки. Значение ставится
142
+ * на саму панель: она рисуется в наложении, вне поддерева блока.
143
+ */
144
+ readonly panelMaxHeight: InputSignal<string | null>;
145
+ readonly selectionChange: OutputEmitterRef<TValue | null>;
146
+ constructor();
147
+ setDisabledState(disabled: boolean): void;
148
+ protected getEmptyValue(): TValue | null;
149
+ protected focusAfterClear(): void;
150
+ protected clear(event?: Event): void;
151
+ protected onOpened(): void;
152
+ protected toggleBranch(event: Event, value: TValue): void;
153
+ protected onClosed(): void;
154
+ protected select(opt: IRtSelect.Option<TValue>): void;
155
+ protected setFilter(term: string): void;
156
+ protected onTriggerKeydown(event: KeyboardEvent): void;
157
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtSelectComponent<any>, never>;
158
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtSelectComponent<any>, "rt-select", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "panelMaxHeight": { "alias": "panelMaxHeight"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["triggerTpl"], never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
159
+ }
160
+
161
+ /**
162
+ * Держит подсвеченную клавишами опцию в видимой части панели.
163
+ *
164
+ * Панель списка ограничена по высоте, и длинный список прокручивается внутри неё. Клавиши двигают
165
+ * подсветку, но фокус остаётся на поле: браузер сам панель не прокручивает, и подсветка уходила
166
+ * за нижний край — человек выбирал Enter'ом то, чего не видел. После каждой отрисовки, в которой
167
+ * сменилась подсвеченная опция, она прокручивается ровно настолько, чтобы встать в панель.
168
+ *
169
+ * Панель рисуется в наложении, вне поддерева семьи, поэтому опция ищется в документе по своему
170
+ * идентификатору — тому же, что стоит в `aria-activedescendant`. На сервере отрисовки нет, и
171
+ * эффект не выполняется; среда без `scrollIntoView` пропускается.
172
+ *
173
+ * Зовётся в контексте внедрения — полем или конструктором семьи.
174
+ *
175
+ * @param activeOptionId идентификатор подсвеченной опции; `null` — подсветки нет или панель закрыта
176
+ */
177
+ declare function rtScrollActiveOptionIntoView(activeOptionId: () => string | null): void;
178
+
179
+ /**
180
+ * Дерево опций выбора из списка — общее для `rt-select` и `rt-multiselect`.
181
+ *
182
+ * Обе семьи раскладывают, ищут и считают дерево одинаково, поэтому это чистые функции в одном
183
+ * месте: две копии разошлись бы на первой правке. Состояние — какие ветки раскрыты — живёт в семье,
184
+ * здесь только расчёт по нему.
185
+ */
186
+ type TOption<TValue> = IRtSelect.Option<TValue>;
187
+ type TRow<TValue> = IRtSelect.Row<TValue>;
188
+ /** Список — дерево, если хоть у одной опции есть дети. Плоский список рисуется как прежде. */
189
+ declare function rtTreeIsTree<TValue>(options: ReadonlyArray<TOption<TValue>>): boolean;
190
+ /** Опция по значению на любой глубине. */
191
+ declare function rtTreeFind<TValue>(options: ReadonlyArray<TOption<TValue>>, value: TValue): TOption<TValue> | undefined;
192
+ /**
193
+ * Включённые листья под опцией; у самого листа — он сам. Отключённая ветка не отдаёт никого: её
194
+ * листья выбрать нельзя, как и её саму.
195
+ */
196
+ declare function rtTreeLeaves<TValue>(option: TOption<TValue>): ReadonlyArray<TValue>;
197
+ /** Сколько включённых листьев ветки выбрано. Флажок ветки выводится из этого, а не хранится. */
198
+ declare function rtTreeBranchState<TValue>(option: TOption<TValue>, chosen: ReadonlyArray<TValue>): IRtSelect.TBranchState;
199
+ /** Ветки, под которыми лежит выбранное значение: они раскрыты, когда список открывается. */
200
+ declare function rtTreeOpenFor<TValue>(options: ReadonlyArray<TOption<TValue>>, chosen: ReadonlyArray<TValue>): ReadonlySet<TValue>;
201
+ /**
202
+ * Видимые строки по уровням. Без поискового слова раскрыты ветки из `open`. Со словом строка
203
+ * остаётся, если совпала она сама или кто-то под ней, и путь к совпадению показан раскрытым.
204
+ * Ветка, совпавшая сама, держит детей такими, какими они были.
205
+ */
206
+ declare function rtTreeRows<TValue>(options: ReadonlyArray<TOption<TValue>>, open: ReadonlySet<TValue>, rawTerm?: string): ReadonlyArray<TRow<TValue>>;
207
+ /**
208
+ * Ответ на боковую стрелку. Вправо: свёрнутая ветка раскрывается, раскрытая уводит подсветку на
209
+ * первого ребёнка. Влево: раскрытая ветка сворачивается, иначе подсветка уходит на родителя.
210
+ */
211
+ declare function rtTreeSideKey<TValue>(rows: ReadonlyArray<TRow<TValue>>, index: number, key: string): IRtSelect.SideKeyAnswer<TValue>;
212
+ /** Набор раскрытых веток с переключённой одной. */
213
+ declare function rtTreeToggle<TValue>(open: ReadonlySet<TValue>, value: TValue): ReadonlySet<TValue>;
214
+
215
+ export { IRtSelect, RtSelectComponent, RtSelectTriggerDirective, rtScrollActiveOptionIntoView, rtTreeBranchState, rtTreeFind, rtTreeIsTree, rtTreeLeaves, rtTreeOpenFor, rtTreeRows, rtTreeSideKey, rtTreeToggle };