@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,113 @@
1
+ import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
+ import * as i0 from '@angular/core';
3
+ import { Signal, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
4
+ import { IRtIcon } from '@rt-tools/ui-kit-v2/core';
5
+ import * as i1 from '@rt-tools/ui-kit-v2/radius';
6
+
7
+ /**
8
+ * Модель `<rt-icon-button>`: один корневой неймспейс с префиксом `I`.
9
+ * Внутри — литеральные union-типы для variant / size / type, чтобы:
10
+ * - использовать как контракт `input()` сигналов компонента;
11
+ * - переиспользовать в `argTypes` Storybook.
12
+ */
13
+ declare namespace IRtIconButton {
14
+ /** Семантическая палитра кнопки. */
15
+ type Variant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success' | 'warning';
16
+ /**
17
+ * Размер квадрата кнопки. Шаги — в SCSS; `xs` — 22px и `2xs` — 20px, оба со значком 16px.
18
+ * Свой размер задаёт `--rt-icon-button-size` на теге или выше.
19
+ */
20
+ type Size = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
21
+ /** HTML-тип нативного `<button>`. */
22
+ type Type = 'button' | 'submit';
23
+ }
24
+
25
+ /**
26
+ * Универсальная icon-only кнопка кита.
27
+ *
28
+ * Рендерит свой собственный `<button type="...">` внутри template (НЕ host-button).
29
+ * Все цвета и размеры — через семантические `--rt-*` токены; геометрия квадрата
30
+ * берётся из `--rt-icon-button-size`, а без него — из шага `size`. Свойство, заданное на теге
31
+ * `<rt-icon-button>` или выше, доходит до кнопки; так же и `--rt-icon-button-bg`.
32
+ *
33
+ * Loading state — заменяет иконку на `<rt-icon name="spinner">` и блокирует
34
+ * клики (`button[disabled]`). Active state управляет `aria-pressed` (для toggle-кнопок).
35
+ * Indicator — небольшой dot top-right через BEM-элемент `__indicator`.
36
+ *
37
+ * BEM-разметка — через `rtBlock="rt-icon-button"` + `[rtMod]` объект; камелкейс
38
+ * модификаторов автоматически конвертируется директивой в kebab-case
39
+ * (`hasIndicator` → `rt-icon-button--has-indicator`).
40
+ */
41
+ declare class RtIconButtonComponent {
42
+ /**
43
+ * Размер дочерней `<rt-icon>`. По умолчанию маппится 1-к-1 от размера кнопки,
44
+ * но потребитель может задать свой: у крупной кнопки-действия (плавающая
45
+ * кнопка чата) иконка во весь диаметр выглядит тяжеловесно, а сама кнопка
46
+ * должна остаться большой — в неё целятся пальцем.
47
+ */
48
+ protected readonly resolvedIconSize: Signal<IRtIcon.Size>;
49
+ /** Кнопка отключена, если установлен disabled ИЛИ loading. */
50
+ protected readonly isDisabled: Signal<boolean>;
51
+ /**
52
+ * BEM-модификаторы для `[rtMod]`. Собираем в .ts (а не в шаблоне), потому что
53
+ * Angular template-parser не поддерживает computed property keys в inline-объектах.
54
+ * camelCase ключи `hasIndicator` директива автоматически конвертирует в `has-indicator`.
55
+ */
56
+ protected readonly bemMods: Signal<Record<string, boolean>>;
57
+ /**
58
+ * Имя иконки в наборе кита. Нужно оно или `glyph`; когда переданы оба, побеждает имя. Нет ни
59
+ * того ни другого — значок кит не рисует, и кнопка показывает вложенное содержимое: свой
60
+ * рисунок приложения встаёт в кнопку с её размером, формой и состояниями.
61
+ */
62
+ readonly icon: InputSignal<IRtIcon.Name | null>;
63
+ /** Имя Material вместо имени кита — рисуется так же, как вход `glyph` у `rt-icon`. */
64
+ readonly glyph: InputSignal<string | null>;
65
+ /** Доступное имя для screen-reader'ов — обязательно (icon-only кнопка). */
66
+ readonly ariaLabel: InputSignal<string>;
67
+ /** Семантическая палитра. */
68
+ readonly variant: InputSignal<IRtIconButton.Variant>;
69
+ /**
70
+ * Цвет самой иконки. Default `current` — иконка наследует цвет текста кнопки
71
+ * (поведение по умолчанию). Явное значение нужно, когда иконка должна
72
+ * отличаться от текста кнопки — например крестик-очистка внутри поля,
73
+ * который должен совпадать по цвету с иконками-аффордансами самого поля.
74
+ */
75
+ readonly iconColor: InputSignal<IRtIcon.Color>;
76
+ /**
77
+ * Залитый рисунок значка вместо контурного — как `fill` у `rt-icon`. Рисует его материальный
78
+ * набор; значок своего набора один и от признака не меняется.
79
+ */
80
+ readonly iconFill: InputSignalWithTransform<boolean, BooleanInput>;
81
+ /** Размер квадрата. */
82
+ readonly size: InputSignal<IRtIconButton.Size>;
83
+ /** Размер иконки; пусто — берётся от размера кнопки. */
84
+ readonly iconSize: InputSignal<IRtIcon.Size | null>;
85
+ /** HTML-type для нативного `<button>`. */
86
+ readonly type: InputSignal<IRtIconButton.Type>;
87
+ /**
88
+ * Текст styled-tooltip'а (`rtTooltip`), показывается на hover/focus. Пустая
89
+ * строка → tooltip выключен. Для icon-only кнопок обычно дублирует `ariaLabel`.
90
+ */
91
+ readonly tooltip: InputSignal<string>;
92
+ /**
93
+ * Tabindex внутренней `<button>`. Default `0` (в обычном таб-порядке).
94
+ * Значение `-1` исключает кнопку из таб-навигации, оставляя клик мышью —
95
+ * нужно для вспомогательных аффордансов вроде крестика-очистки внутри поля.
96
+ */
97
+ readonly tabIndex: InputSignalWithTransform<number, NumberInput>;
98
+ /** Состояние загрузки: показывает spinner вместо иконки + disabled. */
99
+ readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
100
+ /** Нативное отключение кнопки. */
101
+ readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
102
+ /** Toggle-состояние — превращается в `aria-pressed="true"`. */
103
+ readonly active: InputSignalWithTransform<boolean, BooleanInput>;
104
+ /** Бейдж-индикатор (dot top-right через BEM-модификатор). */
105
+ readonly indicator: InputSignalWithTransform<boolean, BooleanInput>;
106
+ /** Эмиттит MouseEvent при клике (только когда не disabled и не loading). */
107
+ readonly clicked: OutputEmitterRef<MouseEvent>;
108
+ protected onClick(event: MouseEvent): void;
109
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtIconButtonComponent, never>;
110
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtIconButtonComponent, "rt-icon-button", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "iconFill": { "alias": "iconFill"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
111
+ }
112
+
113
+ export { IRtIconButton, RtIconButtonComponent };
@@ -0,0 +1,238 @@
1
+ import { IRtIcon } from '@rt-tools/ui-kit-v2/core';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, Signal, InputSignal, InputSignalWithTransform, EnvironmentProviders } from '@angular/core';
4
+ import { BooleanInput } from '@angular/cdk/coercion';
5
+
6
+ /**
7
+ * Категории иконок rt-icon. 11 buckets: 8 prefix-based + Social (префикс `social-`) + Custom
8
+ * (префикс `ico-`) + Misc (fallback).
9
+ * Порядок фиксирован — соответствует порядку отображения в Catalog story (rt-icon.stories.ts).
10
+ *
11
+ * Аннотация типа намеренно не указывается: явный `readonly string[]` потерял бы узкий
12
+ * литеральный тип, нужный для {@link TIconCategory}. `as const` сохраняет литеральные ключи.
13
+ */
14
+ declare const CATEGORY_ORDER: readonly ["Navigation", "Alignment & Sorting", "Status", "Time & Calendar", "Communication", "Documents", "People", "Commerce", "Social", "Custom", "Misc"];
15
+ /** Литеральный union из {@link CATEGORY_ORDER}. */
16
+ type TIconCategory = (typeof CATEGORY_ORDER)[number];
17
+ /**
18
+ * Правило маппинга имени иконки в категорию.
19
+ * Порядок правил в {@link ICON_CATEGORY_RULES} важен: первое совпавшее правило выигрывает.
20
+ */
21
+ interface IIconCategoryRule {
22
+ readonly category: TIconCategory;
23
+ readonly match: (name: string) => boolean;
24
+ }
25
+ /**
26
+ * Упорядоченный список правил категоризации.
27
+ * `Custom` — единственная категория по строгому префиксу `ico-` и проверяется первой,
28
+ * чтобы исключить конфликты с другими prefix-based категориями.
29
+ * `Misc` — fallback в {@link categoryOf}, отдельным правилом не описывается.
30
+ */
31
+ declare const ICON_CATEGORY_RULES: readonly IIconCategoryRule[];
32
+ /**
33
+ * Возвращает категорию для имени иконки.
34
+ * Первое совпавшее правило в {@link ICON_CATEGORY_RULES} выигрывает; иначе — `Misc`.
35
+ */
36
+ declare function categoryOf(name: IRtIcon.Name): TIconCategory;
37
+
38
+ /**
39
+ * Как значки приложения рисуют имя Material. Задаётся третьим аргументом `provideRtIcons()`;
40
+ * по умолчанию `map-first` — пара из перечня кита, а без пары шрифт.
41
+ */
42
+ declare const RT_ICON_GLYPH_STRATEGY: InjectionToken<IRtIcon.GlyphStrategy>;
43
+ /**
44
+ * Готовность шрифтов страницы — одна на все значки.
45
+ *
46
+ * Лигатура до готовности шрифта рисуется словом в запасном шрифте: значок прячет её, пока страница
47
+ * не сказала, что шрифты готовы. Кит шрифт не везёт и семью не знает, поэтому ждёт общую готовность,
48
+ * а не загрузку одной семьи. На сервере шрифтов нет — лигатура там скрыта. Браузер без интерфейса
49
+ * шрифтов ждать нечем, и лигатура показывается сразу.
50
+ */
51
+ declare class RtIconFontService {
52
+ #private;
53
+ readonly ready: Signal<boolean>;
54
+ constructor();
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtIconFontService, never>;
56
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
57
+ }
58
+
59
+ /** Имя значка кита — то, что рисует спрайт; остальное кит своим рисунком не закрывает. */
60
+ declare function isKitIconName(name: string): name is IRtIcon.Name;
61
+ /** Пара имени Material из перечня кита; `null` — пары нет или имени нет. */
62
+ declare function materialPairOf(glyph: string | null | undefined): IRtIcon.Name | null;
63
+ /**
64
+ * Чем рисуется значок: своим рисунком кита или лигатурой шрифта Material.
65
+ *
66
+ * Имя кита выигрывает у имени Material, если названы оба. Имя Material по способу `map-first`
67
+ * берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу. Материальный рисунок
68
+ * для пары выбирает уже сам значок по признаку набора над собой: это не дело разбора.
69
+ *
70
+ * `null` — значку нечего рисовать.
71
+ */
72
+ declare function resolveIconGlyph(name: IRtIcon.Name | null | undefined, glyph: string | null | undefined, strategy: IRtIcon.GlyphStrategy): IRtIcon.Resolved | null;
73
+
74
+ declare class RtIconComponent {
75
+ #private;
76
+ /** Чем рисуется значок: именем кита или лигатурой шрифта. Ни имени, ни глифа — пустое место. */
77
+ protected readonly resolved: Signal<IRtIcon.Resolved | null>;
78
+ protected readonly kitName: Signal<IRtIcon.Name | null>;
79
+ protected readonly fontGlyph: Signal<string | null>;
80
+ /** Лигатура прячется, пока шрифты страницы не готовы: до того она рисуется словом. */
81
+ protected readonly glyphMods: Signal<Record<string, boolean>>;
82
+ protected readonly href: Signal<string | null>;
83
+ /**
84
+ * Набор, которым рисуется этот значок. Материальный закрывает не все имена кита — он слой
85
+ * переопределений, как набор оформления: имя без материального рисунка рисуется своим, и это
86
+ * не пробел.
87
+ */
88
+ protected readonly preset: Signal<IRtIcon.Preset>;
89
+ /** Рисунок значка: залитый бывает только у материального набора, свой набор заливки не знает. */
90
+ protected readonly drawing: Signal<IRtIcon.Drawing>;
91
+ protected readonly sizePx: Signal<number>;
92
+ protected readonly colorValue: Signal<string | null>;
93
+ protected readonly rotateStyle: Signal<string | null>;
94
+ /** Имя кита. Стоит рядом с глифом и побеждает его, когда переданы оба. */
95
+ readonly name: InputSignal<IRtIcon.Name | null>;
96
+ /**
97
+ * Имя Material вместо имени кита. Как оно рисуется — парой из перечня кита или лигатурой
98
+ * шрифта Material Symbols — решает настройка `glyphStrategy` у `provideRtIcons()`. Шрифт
99
+ * приложение подключает само; семья берётся из свойства `--rt-icon-glyph-font`.
100
+ */
101
+ readonly glyph: InputSignal<string | null>;
102
+ /**
103
+ * Ступень размера или число пикселей — для размеров между ступенями и крупнее последней.
104
+ * Числовая строка из статического атрибута читается числом, прочая строка вне ступеней — `md`.
105
+ * Внутри вход хранит пиксели: ступень переводится в них при записи.
106
+ */
107
+ readonly size: InputSignalWithTransform<number, IRtIcon.SizeInput | string>;
108
+ readonly color: InputSignal<IRtIcon.Color>;
109
+ /**
110
+ * Залитый рисунок вместо контурного — как `FILL 1` у значка первого кита. Действует в
111
+ * материальном наборе; свой набор рисует значок одним рисунком. Дефолт `false`.
112
+ */
113
+ readonly fill: InputSignalWithTransform<boolean, BooleanInput>;
114
+ /**
115
+ * Значок вращается — как индикатор занятости внутри кнопки или строки. Когда система просит
116
+ * меньше движения, вращение медленнее. Поворот на время вращения уступает ему. Дефолт `false`.
117
+ */
118
+ readonly spin: InputSignalWithTransform<boolean, BooleanInput>;
119
+ readonly rotate: InputSignalWithTransform<number | null, TRotateInput>;
120
+ constructor();
121
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtIconComponent, never>;
122
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtIconComponent, "rt-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "spin": { "alias": "spin"; "required": false; "isSignal": true; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
123
+ }
124
+ type TRotateInput = number | string | null;
125
+
126
+ /**
127
+ * Имена, которыми набор значков виден со стороны страницы.
128
+ *
129
+ * Отдельный файл, а не константы реестра: те же имена читает обвязка снимков витрины, а она идёт
130
+ * под Playwright и ни одного объявления Angular поднять не может. Своя копия там уже стояла —
131
+ * второе объявление того же значения расходится с первым молча: ожидание набора ищет один узел,
132
+ * а реестр создаёт другой, и кадр выходит без значков.
133
+ */
134
+ /** Селектор inline-sprite, создаваемого один раз при первом обращении. */
135
+ declare const RT_ICON_SPRITE_ID: string;
136
+ /** Префикс `id` для inline-sprite символов. Изолирует от внешних `id` на странице. */
137
+ declare const RT_ICON_SYMBOL_ID_PREFIX: string;
138
+ /**
139
+ * Префикс `id` символов материального набора. Свой, а не общий: наборов на странице бывает два —
140
+ * признак набора стоит и на корне, и на контейнере, — а один `id` держит один рисунок. С общим
141
+ * префиксом второй набор молча забирал бы символ первого.
142
+ */
143
+ declare const RT_ICON_MATERIAL_SYMBOL_ID_PREFIX: string;
144
+ /** Префикс `id` залитых рисунков материального набора: у имени их два, и `id` у каждого свой. */
145
+ declare const RT_ICON_MATERIAL_FILL_SYMBOL_ID_PREFIX: string;
146
+ /** Селекторы, которыми страница объявляет материальный набор. */
147
+ declare const RT_ICON_MATERIAL_PRESET_SELECTOR: string;
148
+
149
+ /**
150
+ * Называет адрес, по которому приложение опубликовало набор значков `rt-icon`.
151
+ *
152
+ * ```typescript
153
+ * export function withCoreProviders(): EnvironmentProviders {
154
+ * return makeEnvironmentProviders([
155
+ * provideHttpClient(...),
156
+ * provideRtStorage(),
157
+ * provideRtIcons(),
158
+ * ]);
159
+ * }
160
+ * ```
161
+ *
162
+ * Вперёд отсюда не грузится ничего: значок едет тогда, когда его попросила разметка, и платит
163
+ * за него та страница, которая его нарисовала. Сборка спрайта и загрузка — дело `RtIconRegistry`.
164
+ *
165
+ * Сами файлы приложение публикует само — набор лежит в `assets/icons` пакета, и сборка копирует
166
+ * его в свою статику.
167
+ *
168
+ * Наборов значков два: свой и материальный. Второй нужен только приложению, которое объявляет
169
+ * материальный набор оформления, и адрес у него свой — набор лежит в `assets/icons-material`.
170
+ *
171
+ * Третий аргумент — настройки значков. `glyphStrategy` говорит, как рисуется имя Material на входе
172
+ * `glyph`: `map-first` (по умолчанию) — пара из перечня кита, а без пары шрифт Material Symbols;
173
+ * `font` — шрифт для любого имени. Шрифт приложение подключает само.
174
+ *
175
+ * @param baseUrl Адрес опубликованного набора. По умолчанию `/icons`.
176
+ * @param materialBaseUrl Адрес материального набора. По умолчанию `/icons-material`.
177
+ * @param options Настройки значков.
178
+ */
179
+ declare function provideRtIcons(baseUrl?: string, materialBaseUrl?: string, options?: IRtIconsOptions): EnvironmentProviders;
180
+ /** Настройки значков приложения — третий аргумент `provideRtIcons()`. */
181
+ interface IRtIconsOptions {
182
+ readonly glyphStrategy?: IRtIcon.GlyphStrategy;
183
+ }
184
+
185
+ /**
186
+ * Адрес, по которому приложение публикует набор из `assets/icons` пакета.
187
+ * Умолчание годится, когда сборка кладёт набор в корень статики; свой адрес
188
+ * задаётся аргументом `provideRtIcons()`.
189
+ */
190
+ declare const RT_ICONS_BASE_URL: InjectionToken<string>;
191
+ /**
192
+ * Адрес материального набора значков. Отдельный от своего: два набора стоят рядом, и приложение
193
+ * кладёт их двумя папками.
194
+ */
195
+ declare const RT_ICONS_MATERIAL_BASE_URL: InjectionToken<string>;
196
+ declare class RtIconRegistry {
197
+ #private;
198
+ constructor();
199
+ /**
200
+ * Имя symbol для `<use href="#X">`. Возвращает строку с ведущим `#`.
201
+ *
202
+ * Набор назван явно, а не выведен из страницы: одна и та же страница держит оба набора
203
+ * рядом — признак стоит и на корне, и на контейнере, — и вывод по странице дал бы обоим
204
+ * один ответ.
205
+ */
206
+ symbolHref(name: IRtIcon.Name, drawing?: IRtIcon.Drawing): string;
207
+ /**
208
+ * Просит значок по имени: грузит файл и дописывает `<symbol>` в спрайт страницы.
209
+ *
210
+ * Ответа зовущий не ждёт и потока не получает: разметка рисует ссылку на символ сразу, а
211
+ * браузер дорисовывает её, когда символ приезжает. Подписка живёт здесь и только здесь —
212
+ * иначе каждая разметка гасила бы её сама, а таких мест у значка два.
213
+ */
214
+ request(name: IRtIcon.Name, drawing?: IRtIcon.Drawing): void;
215
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtIconRegistry, never>;
216
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
217
+ }
218
+
219
+ /** Одна запись перечня: имя первого кита и то, чем оно закрывается здесь. */
220
+ interface IRtIconMaterialEntry {
221
+ /** Имя значка первого кита — так, как оно стоит в его шаблоне. */
222
+ readonly from: string;
223
+ /** Имя этого набора либо `null`, если рисунка в наборе нет. */
224
+ readonly to: IRtIcon.Name | null;
225
+ /** Довод к паре либо причина, по которой пары нет. Пустым не бывает. */
226
+ readonly why: string;
227
+ }
228
+ declare const iconMaterialMap: readonly IRtIconMaterialEntry[];
229
+ /**
230
+ * Имена кита, у которых в материальном наборе лежит свой рисунок.
231
+ *
232
+ * Считается из перечня, а не пишется списком: свой список разошёлся бы с перечнем молча — реестр
233
+ * ходил бы за файлом, которого нет, или не ходил бы за лежащим.
234
+ */
235
+ declare const iconMaterialDrawn: ReadonlySet<IRtIcon.Name>;
236
+
237
+ export { CATEGORY_ORDER, ICON_CATEGORY_RULES, RT_ICONS_BASE_URL, RT_ICONS_MATERIAL_BASE_URL, RT_ICON_GLYPH_STRATEGY, RT_ICON_MATERIAL_FILL_SYMBOL_ID_PREFIX, RT_ICON_MATERIAL_PRESET_SELECTOR, RT_ICON_MATERIAL_SYMBOL_ID_PREFIX, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RtIconComponent, RtIconFontService, RtIconRegistry, categoryOf, iconMaterialDrawn, iconMaterialMap, isKitIconName, materialPairOf, provideRtIcons, resolveIconGlyph };
238
+ export type { IRtIconMaterialEntry, IRtIconsOptions, TIconCategory };
@@ -0,0 +1,168 @@
1
+ import { NumberInput, BooleanInput } from '@angular/cdk/coercion';
2
+ import * as i0 from '@angular/core';
3
+ import { Signal, ElementRef, WritableSignal, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
4
+ import { TRtKitLabelMap, TRtKitLabelKey } from '@rt-tools/ui-kit-v2/core';
5
+
6
+ /**
7
+ * Контракты обрезки изображения. Один корневой неймспейс с префиксом `I`.
8
+ */
9
+ declare namespace IRtImageCropper {
10
+ /** Прямоугольник в пикселях исходника: рамка, границы картинки */
11
+ interface Rect {
12
+ readonly x: number;
13
+ readonly y: number;
14
+ readonly width: number;
15
+ readonly height: number;
16
+ }
17
+ /** Размер исходника или поля */
18
+ interface Size {
19
+ readonly width: number;
20
+ readonly height: number;
21
+ }
22
+ /**
23
+ * Как исходник вписан в поле: масштаб — сколько пикселей поля приходится на
24
+ * пиксель исходника, отступы — где картинка начинается внутри поля.
25
+ */
26
+ interface Fit {
27
+ readonly scale: number;
28
+ readonly offsetX: number;
29
+ readonly offsetY: number;
30
+ readonly width: number;
31
+ readonly height: number;
32
+ }
33
+ /** Сдвиг в пикселях исходника */
34
+ interface Delta {
35
+ readonly dx: number;
36
+ readonly dy: number;
37
+ }
38
+ /** Направление ручки по осям: −1 — к началу оси, 1 — к концу, 0 — ось ручкой не тянется */
39
+ interface Direction {
40
+ readonly x: number;
41
+ readonly y: number;
42
+ }
43
+ /** Ручка рамки: четыре угла и четыре стороны, по сторонам света */
44
+ type Handle = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';
45
+ /** Форматы результата */
46
+ type Format = 'png' | 'jpeg' | 'webp';
47
+ /** Результат обрезки: файл и рамка, которой он вырезан */
48
+ interface Result {
49
+ readonly file: File;
50
+ readonly frame: Rect;
51
+ }
52
+ }
53
+
54
+ /** Состояние поля: пусто, читается, не прочиталось, готово */
55
+ type TCropperState = 'empty' | 'loading' | 'refusal' | 'ready';
56
+ /**
57
+ * Обрезка изображения: исходник вписан в поле целиком, поверх — рамка с восемью
58
+ * ручками. Рамка живёт в пикселях исходника и двигается указателем, пальцем и
59
+ * стрелками; после прочтения исходника и после каждого законченного изменения
60
+ * компонент отдаёт файл, вырезанный рамкой, в выбранном формате и качестве.
61
+ *
62
+ * Поворот снимка по EXIF делает сам браузер: картинка и холст читают исходник с
63
+ * `image-orientation: from-image`, и размеры, которые видит логика, уже
64
+ * повёрнутые.
65
+ */
66
+ declare class RtImageCropperComponent {
67
+ #private;
68
+ protected readonly field: Signal<ElementRef<HTMLElement>>;
69
+ protected readonly t: Signal<TRtKitLabelMap>;
70
+ protected readonly handles: readonly IRtImageCropper.Handle[];
71
+ protected readonly handleLabels: Readonly<Record<IRtImageCropper.Handle, TRtKitLabelKey>>;
72
+ protected readonly state: WritableSignal<TCropperState>;
73
+ /** Текст пустого поля: свой, если задан, иначе подпись кита */
74
+ protected readonly placeholderText: Signal<string>;
75
+ /** Адрес исходника для картинки в поле */
76
+ protected readonly url: WritableSignal<string | null>;
77
+ /** Где картинка лежит в поле, в пикселях поля */
78
+ protected readonly image: Signal<IRtImageCropper.Rect>;
79
+ /** Рамка в пикселях поля */
80
+ protected readonly frameBox: Signal<IRtImageCropper.Rect>;
81
+ /** Подсказка пустого поля; пусто — подпись кита `uiImageCropperPlaceholder` */
82
+ readonly placeholder: InputSignal<string>;
83
+ /** Исходник: файл, который надо обрезать; пусто — поле с подсказкой */
84
+ readonly file: InputSignal<Blob | null>;
85
+ /** Пропорция рамки, ширина к высоте; пусто — рамка свободная */
86
+ readonly ratio: InputSignalWithTransform<number | null, NumberInput>;
87
+ /** Круглый вид: маска на экране и пропорция один к одному; результат — квадрат */
88
+ readonly round: InputSignalWithTransform<boolean, BooleanInput>;
89
+ /** Наименьший размер рамки в пикселях исходника */
90
+ readonly minSize: InputSignalWithTransform<number, NumberInput>;
91
+ /** Формат результата; пусто — формат исходника, png, когда он не из трёх */
92
+ readonly format: InputSignal<IRtImageCropper.Format | null>;
93
+ /** Качество результата в процентах — для jpeg и webp */
94
+ readonly quality: InputSignalWithTransform<number, NumberInput>;
95
+ /** Недоступна: рамка видна, но не меняется ни указателем, ни клавишами */
96
+ readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
97
+ /** Файл, вырезанный рамкой: после прочтения исходника и после каждого законченного изменения */
98
+ readonly cropped: OutputEmitterRef<IRtImageCropper.Result>;
99
+ /** Исходник не прочитался */
100
+ readonly loadFailed: OutputEmitterRef<void>;
101
+ constructor();
102
+ protected onPointerDown(event: PointerEvent, handle: IRtImageCropper.Handle | null): void;
103
+ protected onPointerMove(event: PointerEvent): void;
104
+ protected onPointerUp(event: PointerEvent): void;
105
+ protected onKeyDown(event: KeyboardEvent, handle: IRtImageCropper.Handle | null): void;
106
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtImageCropperComponent, never>;
107
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtImageCropperComponent, "rt-image-cropper", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "file": { "alias": "file"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "round": { "alias": "round"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "cropped": "cropped"; "loadFailed": "loadFailed"; }, never, never, true, never>;
108
+ }
109
+
110
+ /**
111
+ * Чистая логика обрезки: вписывание исходника в поле, рамка в пикселях
112
+ * исходника, её движение и растяжение, перевод клавиш и выбор формата.
113
+ * Компонент только переводит указатель в сдвиги и рисует то, что вернулось.
114
+ */
115
+ /** Все восемь ручек по часовой стрелке от левого верхнего угла */
116
+ declare const RT_IMAGE_CROPPER_HANDLES: readonly IRtImageCropper.Handle[];
117
+ /** Шаг клавиш в пикселях поля: стрелка и стрелка с Shift */
118
+ declare const RT_IMAGE_CROPPER_KEY_STEP: number;
119
+ declare const RT_IMAGE_CROPPER_KEY_STEP_LARGE: number;
120
+ /** Качество по умолчанию — то же, что у загрузчика первого кита */
121
+ declare const RT_IMAGE_CROPPER_QUALITY: number;
122
+ /**
123
+ * Вписывает исходник в поле целиком, с его пропорциями, по центру. Ни одна часть
124
+ * картинки не срезается полем, и ни одна не растянута.
125
+ */
126
+ declare function fitSource(source: IRtImageCropper.Size, field: IRtImageCropper.Size): IRtImageCropper.Fit;
127
+ /**
128
+ * Пропорция, которую держит рамка. Круглый вид держит один к одному при любой
129
+ * заданной; заданная не числом или не больше нуля значит свободную рамку.
130
+ */
131
+ declare function frameRatio(ratio: number | null | undefined, round: boolean): number | null;
132
+ /**
133
+ * Начальная рамка — наибольшая, какую позволяет пропорция, по центру исходника.
134
+ * Свободная начинается как весь исходник.
135
+ */
136
+ declare function initialFrame(source: IRtImageCropper.Size, ratio: number | null): IRtImageCropper.Rect;
137
+ /** Сдвиг рамки целиком: размер тот же, у края исходника рамка останавливается */
138
+ declare function moveFrame(frame: IRtImageCropper.Rect, delta: IRtImageCropper.Delta, source: IRtImageCropper.Size): IRtImageCropper.Rect;
139
+ /** По каким осям и в какую сторону тянет ручка */
140
+ declare function handleDirection(handle: IRtImageCropper.Handle): IRtImageCropper.Direction;
141
+ /**
142
+ * Растяжение рамки за ручку. Сторона или угол напротив ручки стоит на месте;
143
+ * рамка не выходит за исходник и не становится меньше наименьшего размера; рамка
144
+ * с пропорцией держит её, а боковая ручка тянет её вокруг центра второй оси.
145
+ */
146
+ declare function resizeFrame(frame: IRtImageCropper.Rect, handle: IRtImageCropper.Handle, delta: IRtImageCropper.Delta, source: IRtImageCropper.Size, ratio: number | null, minSize: number): IRtImageCropper.Rect;
147
+ /**
148
+ * Сдвиг от стрелки клавиатуры в пикселях исходника. Одно нажатие — пиксель поля,
149
+ * с Shift десять; не стрелка даёт `null`.
150
+ */
151
+ declare function keyDelta(key: string, isLarge: boolean, scale: number): IRtImageCropper.Delta | null;
152
+ /** Сдвиг указателя в пикселях поля переводится в пиксели исходника */
153
+ declare function fieldDelta(dx: number, dy: number, scale: number): IRtImageCropper.Delta;
154
+ /** Рамка в пикселях поля — для рисования поверх вписанной картинки */
155
+ declare function frameInField(frame: IRtImageCropper.Rect, fit: IRtImageCropper.Fit): IRtImageCropper.Rect;
156
+ /** Рамка в целых пикселях исходника — то, что вырезает холст; не меньше пикселя */
157
+ declare function cropArea(frame: IRtImageCropper.Rect, source: IRtImageCropper.Size): IRtImageCropper.Rect;
158
+ /**
159
+ * Тип результата. Без выбранного формата берётся формат исходника, и png, когда
160
+ * он не из трёх.
161
+ */
162
+ declare function resultType(format: IRtImageCropper.Format | null | undefined, sourceType: string): string;
163
+ /** Качество холста — доля единицы; вход берёт проценты */
164
+ declare function resultQuality(quality: number): number;
165
+ /** Имя файла результата: основа имени исходника и расширение по типу результата */
166
+ declare function resultFileName(sourceName: string, type: string): string;
167
+
168
+ export { IRtImageCropper, RT_IMAGE_CROPPER_HANDLES, RT_IMAGE_CROPPER_KEY_STEP, RT_IMAGE_CROPPER_KEY_STEP_LARGE, RT_IMAGE_CROPPER_QUALITY, RtImageCropperComponent, cropArea, fieldDelta, fitSource, frameInField, frameRatio, handleDirection, initialFrame, keyDelta, moveFrame, resizeFrame, resultFileName, resultQuality, resultType };
@@ -0,0 +1,102 @@
1
+ import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
+ import * as i0 from '@angular/core';
3
+ import { Signal, ElementRef, WritableSignal, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
4
+ import { TRtKitLabelMap, TRtRadius, IRtIcon, IButton } from '@rt-tools/ui-kit-v2/core';
5
+ import { IRtImageCropper } from '@rt-tools/ui-kit-v2/image-cropper';
6
+
7
+ declare namespace IRtImageUpload {
8
+ /** Что стоит в месте загрузчика: одно состояние за раз */
9
+ type State = 'loading' | 'cropping' | 'image' | 'empty';
10
+ /** Форма кнопки скачивания: круглая, как у первого кита, или квадратная */
11
+ type DownloadShape = 'circle' | 'square';
12
+ }
13
+
14
+ /**
15
+ * Загрузчик одного изображения: одно место, в котором по очереди стоят зона загрузки, обрезка и
16
+ * сама картинка. Файл выбирают кнопкой зоны или бросают на неё; выбранный открывает обрезку, а
17
+ * «Применить» ставит результат на место картинки и отдаёт файл приложению. Нажатие на картинку
18
+ * выбирает другой файл.
19
+ *
20
+ * Картинка — адрес: приложение даёт свой, а адрес применённого файла загрузчик делает сам и
21
+ * отпускает его, когда картинку сменили или компонент ушёл. Файл приложение получает в
22
+ * `imageChanged`.
23
+ */
24
+ declare class RtImageUploadComponent {
25
+ #private;
26
+ protected readonly picker: Signal<ElementRef<HTMLInputElement>>;
27
+ protected readonly t: Signal<TRtKitLabelMap>;
28
+ /** Выбранный файл, который сейчас режет обрезка */
29
+ protected readonly source: WritableSignal<File | null>;
30
+ /** Последний результат обрезки — его берёт «Применить» */
31
+ protected readonly result: WritableSignal<IRtImageCropper.Result | null>;
32
+ /** Что сейчас стоит в месте загрузчика */
33
+ protected readonly state: Signal<IRtImageUpload.State>;
34
+ /** Подсказка над картинкой: своя приложения или подпись кита */
35
+ protected readonly hint: Signal<string>;
36
+ /** Круглая ли кнопка скачивания: подложка под размытием повторяет её скругление */
37
+ protected readonly downloadRound: Signal<boolean>;
38
+ /** Шаг скругления кнопки скачивания: круг — полный шаг, квадрат — скругление кнопки по умолчанию */
39
+ protected readonly downloadRadius: Signal<TRtRadius | null>;
40
+ /**
41
+ * Адрес текущей картинки: данный приложением или сделанный под применённый файл. Новый адрес от
42
+ * приложения снова берёт верх над применённым.
43
+ */
44
+ protected readonly image: WritableSignal<string | null>;
45
+ /** Адрес картинки от приложения */
46
+ readonly imageUrl: InputSignal<string | null>;
47
+ /** Имя файла, под которым картинку скачивают и отдают приложению */
48
+ readonly fileName: InputSignal<string>;
49
+ /** Подсказка над картинкой; пустая — подпись кита */
50
+ readonly tooltip: InputSignal<string>;
51
+ /** Кнопка скачивания рядом с картинкой */
52
+ readonly downloadable: InputSignalWithTransform<boolean, BooleanInput>;
53
+ /** Форма кнопки скачивания; она заходит за правый верхний угол картинки при любой форме */
54
+ readonly downloadShape: InputSignal<IRtImageUpload.DownloadShape>;
55
+ /** Размер значка кнопки скачивания; пусто — от размера кнопки */
56
+ readonly downloadIconSize: InputSignal<IRtIcon.Size | null>;
57
+ /** Вид кнопки выбора файла в пустом загрузчике */
58
+ readonly chooseAppearance: InputSignal<IButton.Appearance>;
59
+ /** Значок кнопки выбора файла; пусто — кнопка без значка */
60
+ readonly chooseIcon: InputSignal<string | null>;
61
+ /** Без кнопок «Отмена» и «Применить»: каждый результат обрезки применяется сразу */
62
+ readonly autoApply: InputSignalWithTransform<boolean, BooleanInput>;
63
+ /** Приложение загружает картинку: на месте стоит индикатор */
64
+ readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
65
+ /** Недоступный загрузчик не берёт файлов и не отзывается на нажатие картинки */
66
+ readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
67
+ /** Соотношение рамки обрезки; пусто — свободная рамка */
68
+ readonly ratio: InputSignalWithTransform<number | null, NumberInput>;
69
+ /** Круглая маска обрезки для аватара */
70
+ readonly round: InputSignalWithTransform<boolean, BooleanInput>;
71
+ /** Формат результата; пусто — формат исходника */
72
+ readonly format: InputSignal<IRtImageCropper.Format | null>;
73
+ /** Качество результата, от 0 до 100 */
74
+ readonly quality: InputSignalWithTransform<number, NumberInput>;
75
+ /** Применённый файл — его приложение отправляет, куда ему надо */
76
+ readonly imageChanged: OutputEmitterRef<File>;
77
+ /** Картинку скачали */
78
+ readonly downloaded: OutputEmitterRef<void>;
79
+ constructor();
80
+ /** Открывает выбор файла, если загрузчик доступен */
81
+ pick(): void;
82
+ /** Файл выбран кнопкой или брошен: изображение открывает обрезку, остальное пропускается */
83
+ choose(file: File | null | undefined): void;
84
+ protected onPicked(event: Event): void;
85
+ protected onSpace(event: Event): void;
86
+ protected onCropped(result: IRtImageCropper.Result): void;
87
+ protected apply(): void;
88
+ protected cancel(): void;
89
+ protected download(): void;
90
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtImageUploadComponent, never>;
91
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtImageUploadComponent, "rt-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "downloadShape": { "alias": "downloadShape"; "required": false; "isSignal": true; }; "downloadIconSize": { "alias": "downloadIconSize"; "required": false; "isSignal": true; }; "chooseAppearance": { "alias": "chooseAppearance"; "required": false; "isSignal": true; }; "chooseIcon": { "alias": "chooseIcon"; "required": false; "isSignal": true; }; "autoApply": { "alias": "autoApply"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "round": { "alias": "round"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; }, { "imageChanged": "imageChanged"; "downloaded": "downloaded"; }, never, never, true, never>;
92
+ }
93
+
94
+ /**
95
+ * Какое состояние занимает место. Загрузка приложения важнее всего, выбранный исходник важнее
96
+ * картинки, картинка важнее зоны загрузки.
97
+ */
98
+ declare function uploadState(loading: boolean, hasSource: boolean, image: string | null): IRtImageUpload.State;
99
+ /** Берётся только файл изображения: брошенный файл другого типа загрузчик пропускает */
100
+ declare function isImageFile(file: File | null | undefined): file is File;
101
+
102
+ export { IRtImageUpload, RtImageUploadComponent, isImageFile, uploadState };