@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
@@ -91,6 +91,25 @@
91
91
  font-size: var(--rt-btn-icon-size);
92
92
  }
93
93
 
94
+ /* Лигатура шрифта Material Symbols для имени без пары — размер ей даёт `__icon` рядом.
95
+ Шрифт подключает приложение, семью можно переназначить свойством сверху. До готовности
96
+ шрифтов лигатура скрыта: иначе на её месте видно слово. */
97
+ &__glyph {
98
+ overflow: hidden;
99
+ font-family: var(--rt-icon-glyph-font, 'Material Symbols Outlined'), sans-serif;
100
+ font-feature-settings: 'liga';
101
+ font-style: normal;
102
+ font-weight: var(--rt-font-weight-regular);
103
+ letter-spacing: normal;
104
+ line-height: 1;
105
+ text-transform: none;
106
+ white-space: nowrap;
107
+
108
+ &--pending {
109
+ visibility: hidden;
110
+ }
111
+ }
112
+
94
113
  &__label {
95
114
  display: inline-flex;
96
115
  align-items: center;
@@ -264,6 +283,23 @@
264
283
  pointer-events: none;
265
284
  }
266
285
 
286
+ /* Подпись спрятана на время загрузки: содержимое гаснет прозрачностью, а не
287
+ `visibility` — так оно держит ширину и остаётся именем кнопки для скринридера.
288
+ Загрузчик встаёт поверх по центру. */
289
+ &--loading-label-hidden {
290
+ position: relative;
291
+
292
+ > :not(.rt-button__loader) {
293
+ opacity: 0;
294
+ }
295
+ }
296
+
297
+ &__loader {
298
+ position: absolute;
299
+ margin: auto;
300
+ inset: 0;
301
+ }
302
+
267
303
  /* Состояние стоит ниже всех вариантов оформления и палитры того же блока.
268
304
  Специфичность у них равная, и правила равной силы разбираются порядком в
269
305
  файле: отсюда, снизу, отключённость отменяет и заливку, и цвет подписи.
@@ -145,7 +145,7 @@
145
145
 
146
146
  /* Кнопка «назад» — круглая `mat-icon-button` первого кита, как и кнопки подвала панели. */
147
147
  .rt-aside-header__back .rt-icon-button {
148
- --rt-icon-button-size: var(--rt-data-list-settings-aside-control-size);
148
+ --rt-icon-button-size-step: var(--rt-data-list-settings-aside-control-size);
149
149
  --rt-icon-button-color: var(--rt-list-settings-icon-color);
150
150
  --rt-icon-button-radius: var(--rt-radius-full);
151
151
  }
@@ -236,7 +236,7 @@
236
236
  }
237
237
 
238
238
  .rt-data-list-settings-aside__toggle .rt-icon-button {
239
- --rt-icon-button-size: var(--rt-data-list-settings-aside-control-size);
239
+ --rt-icon-button-size-step: var(--rt-data-list-settings-aside-control-size);
240
240
  --rt-icon-button-color: var(--rt-list-settings-icon-color);
241
241
  }
242
242
  }
@@ -87,7 +87,7 @@
87
87
  --rt-icon-button-color: var(--rt-list-copy-button-color);
88
88
 
89
89
  .rt-icon-button {
90
- --rt-icon-button-size: var(--rt-list-copy-button-size);
90
+ --rt-icon-button-size-step: var(--rt-list-copy-button-size);
91
91
  --rt-icon-button-radius: var(--rt-list-copy-button-radius);
92
92
  --rt-icon-button-color-hover: var(--rt-color-text-primary);
93
93
  --rt-icon-button-color-bg-hover: var(--rt-list-copy-button-bg-hover);
@@ -39,7 +39,7 @@
39
39
  }
40
40
 
41
41
  .rt-icon-button {
42
- --rt-icon-button-size: var(--rt-list-table-button-size);
42
+ --rt-icon-button-size-step: var(--rt-list-table-button-size);
43
43
  --rt-icon-button-radius: var(--rt-list-table-button-radius);
44
44
  }
45
45
 
@@ -225,7 +225,7 @@
225
225
  }
226
226
 
227
227
  .rt-icon-button {
228
- --rt-icon-button-size: var(--rt-list-table-button-size);
228
+ --rt-icon-button-size-step: var(--rt-list-table-button-size);
229
229
  --rt-icon-button-radius: var(--rt-list-table-button-radius);
230
230
  }
231
231
 
@@ -44,6 +44,15 @@ ref.afterClosed().subscribe((ok?: boolean): void => …);
44
44
  `RtDialogRef.disableClose` держит окно и под кликом по подложке, и под Escape — ставится самим
45
45
  содержимым, когда закрывать нельзя.
46
46
 
47
+ **Фокус служба по умолчанию не трогает.** `trapFocus`, `restoreFocus` и `autoFocus` в настройке
48
+ открытия включают ловушку CDK, возврат фокуса и первый фокус (`'dialog'` — на рамку,
49
+ `'first-tabbable'` — на первый элемент под Tab). Ловушка и первый фокус ставятся после отрисовки
50
+ окна, ловушка уходит вместе с оверлеем.
51
+
52
+ **Части окна.** `rt-dialog-content` — тело с отступом и прокруткой; `rtDialogHeaderLead` — узел
53
+ перед заголовком шапки; `align` подвала — `start`, `center`, `end` (по умолчанию) или `between`.
54
+ Вид окна задают ручки `--rt-dialog-*` на корне страницы, перечень — на странице Theming.
55
+
47
56
  **Крестик в шапке ищет `RtDialogRef` необязательным инжектом.** Поэтому `rt-dialog-header` можно
48
57
  поставить и вне диалога — нажатие просто ничего не сделает, а не упадёт.
49
58
 
@@ -0,0 +1,20 @@
1
+ @layer rt-kit.components {
2
+ /* rt-dialog-content — тело модалки. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, как у шапки и подвала: класс блока висит и на хосте, и на
4
+ узле внутри. Хост боксом не становится — тело должно быть прямым flex-ребёнком рамки, чтобы
5
+ сжиматься между шапкой и подвалом и прокручиваться само.
6
+
7
+ Свойства читаются с запасным значением на месте: окно живёт в оверлее, вне блоков
8
+ приложения, и приложение задаёт их на корне страницы. */
9
+ rt-dialog-content {
10
+ display: contents;
11
+
12
+ .rt-dialog-content {
13
+ overflow: auto;
14
+ min-height: 0;
15
+ max-height: var(--rt-dialog-content-max-height, none);
16
+ flex: 1 1 auto;
17
+ padding: var(--rt-dialog-content-padding, var(--rt-space-lg));
18
+ }
19
+ }
20
+ }
@@ -11,13 +11,29 @@
11
11
  rt-dialog-footer {
12
12
  display: contents;
13
13
 
14
+ /* Свойства читаются с запасным значением на месте — окно живёт в оверлее. Разделитель
15
+ кита лежит в частном `-default`, как у шапки. */
14
16
  .rt-dialog-footer {
17
+ --rt-dialog-footer-border-default: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
18
+
15
19
  display: flex;
16
20
  justify-content: flex-end;
17
- padding: var(--rt-space-lg);
18
- border-block-start: 1px solid var(--rt-color-border-subtle);
21
+ padding: var(--rt-dialog-footer-padding, var(--rt-space-lg));
22
+ border-block-start: var(--rt-dialog-footer-border, var(--rt-dialog-footer-border-default));
19
23
  gap: var(--rt-space-sm);
20
24
 
25
+ &--align--start {
26
+ justify-content: flex-start;
27
+ }
28
+
29
+ &--align--center {
30
+ justify-content: center;
31
+ }
32
+
33
+ &--align--between {
34
+ justify-content: space-between;
35
+ }
36
+
21
37
  &:empty {
22
38
  display: none;
23
39
  }
@@ -13,18 +13,36 @@
13
13
  rt-dialog-header {
14
14
  display: contents;
15
15
 
16
+ /* Свойства читаются с запасным значением на месте: окно живёт в оверлее, и приложение
17
+ задаёт их на корне страницы. Разделитель кита лежит в частном `-default` — проверка
18
+ токенов не пускает шаг толщины рамки запасным значением напрямую. */
16
19
  .rt-dialog-header {
20
+ --rt-dialog-header-border-default: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
21
+
17
22
  display: flex;
18
23
  align-items: center;
19
24
  justify-content: space-between;
20
- padding: var(--rt-space-lg);
21
- border-block-end: 1px solid var(--rt-color-border-subtle);
25
+ padding: var(--rt-dialog-header-padding, var(--rt-space-lg));
26
+ border-block-end: var(--rt-dialog-header-border, var(--rt-dialog-header-border-default));
22
27
  gap: var(--rt-space-sm);
23
28
 
29
+ /* Место перед заголовком: пустое ничего не занимает и не добавляет промежутка. */
30
+ &__lead {
31
+ display: inline-flex;
32
+ flex-shrink: 0;
33
+ align-items: center;
34
+
35
+ &:empty {
36
+ display: none;
37
+ }
38
+ }
39
+
24
40
  &__title {
25
41
  margin: 0;
26
42
  color: var(--rt-color-text-primary);
27
- font-size: var(--rt-text-xl);
43
+ font-size: var(--rt-dialog-title-font-size, var(--rt-text-xl));
44
+ font-weight: var(--rt-dialog-title-weight, var(--rt-font-weight-bold));
45
+ text-transform: var(--rt-dialog-title-transform, none);
28
46
  }
29
47
 
30
48
  &__close {
@@ -3,7 +3,7 @@
3
3
  @layer rt-kit.components {
4
4
  /* rt-dialog — styled frame модалки поверх CDK Overlay.
5
5
  ViewEncapsulation.None — селекторы префиксованы `.rt-dialog`.
6
- Видимость / backdrop / focus-trap обеспечивает CDK Overlay через RtDialogService. */
6
+ Видимость и подложку даёт CDK Overlay, ловушку и первый фокус — RtDialogService по флагам. */
7
7
 
8
8
  /* Хост адресуется по имени элемента, а не по классу блока: класс `.rt-dialog`
9
9
  висит и на `<rt-dialog>`, и на рамке внутри него, поэтому правила рамки
@@ -37,12 +37,18 @@
37
37
  max-height: 90dvh;
38
38
  flex-direction: column;
39
39
  padding: 0;
40
- border: none;
40
+ border: var(--rt-dialog-border, none);
41
41
  border-radius: var(--rt-dialog-radius);
42
- background: var(--rt-color-bg-surface);
42
+ background: var(--rt-dialog-bg, var(--rt-color-bg-surface));
43
43
  box-shadow: var(--rt-dialog-shadow);
44
44
  color: var(--rt-color-text-primary);
45
45
 
46
+ /* Рамку фокус берёт только по `autoFocus: 'dialog'` — как точку отсчёта для скринридера,
47
+ а не как элемент управления: кольцо вокруг всего окна читалось бы как выбор окна. */
48
+ &:focus {
49
+ outline: none;
50
+ }
51
+
46
52
  &--size--sm {
47
53
  width: var(--rt-dialog-width, var(--rt-dialog-width-sm));
48
54
  }
@@ -0,0 +1,31 @@
1
+ # `rt-dot-field`
2
+
3
+ Фон из квадратных точек на сетке 10px, которые медленно плывут облаками. Заполняет
4
+ позиционированного родителя и стоит под его содержимым.
5
+
6
+ ```html
7
+ <rt-dot-field />
8
+ ```
9
+
10
+ Входов и выходов нет. Цвет точек — CSS-свойство `color` хоста.
11
+
12
+ ## Главное, что нужно знать
13
+
14
+ **Какая клетка горит, решают чистые функции в `rt-dot-field.logic.ts`.** Клетка горит там, где
15
+ медленно движущийся шум проходит порог, а матрица Байера 4x4 сдвигает порог по клеткам: края
16
+ облаков выходят рваными. В центре поля плотность ниже — там стоит карточка.
17
+
18
+ **Рисует `RtDotFieldPainter`.** Кадр — раз в 90 мс, а не каждый кадр анимации: ступенчатое
19
+ движение — часть облика. Цвет читается из вычисленного `color` холста на каждом кадре, поэтому
20
+ точки идут за темой без кода: назначение темы — `light-dark()` или переопределение по флагу, а
21
+ холст принимает только готовый цвет.
22
+
23
+ **Запуск — в `afterNextRender`, остановка — при уходе компонента.** На сервере поле ничего не
24
+ рисует.
25
+
26
+ ## Края
27
+
28
+ - При `prefers-reduced-motion: reduce` рисуется один кадр, следующий не просится.
29
+ - Холст без 2D-контекста (jsdom в спеках) ничего не рисует и `matchMedia` не спрашивает.
30
+ - `viewChild` не принимает поле с решёткой, поэтому `canvas` объявлен `protected`.
31
+ - Родитель задаёт `position: relative`, а своё содержимое ставит выше через `z-index: 1`.
@@ -0,0 +1,20 @@
1
+ @layer rt-kit.components {
2
+ .rt-dot-field {
3
+ --rt-dot-field-color: var(--rt-color-action-primary);
4
+ --rt-dot-field-opacity: 0.85;
5
+
6
+ position: absolute;
7
+ z-index: var(--rt-z-base);
8
+ display: block;
9
+ color: var(--rt-dot-field-color);
10
+ inset: 0;
11
+ opacity: var(--rt-dot-field-opacity);
12
+ pointer-events: none;
13
+
14
+ &__canvas {
15
+ display: block;
16
+ width: 100%;
17
+ height: 100%;
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,14 @@
1
+ # `TestRtDotFieldComponent`
2
+
3
+ Обёртка витрины для `rt-dot-field`. В пакет не уезжает.
4
+
5
+ Рисует сцену так, как поле стоит на странице входа: позиционированный родитель с фоном страницы,
6
+ поле под ним и карточка в центре поверх поля. Позиционированный родитель и карточка — забота
7
+ страницы, поэтому они живут здесь, а не в компоненте.
8
+
9
+ Вход `part` выбирает историю: `playground` — одна сцена, `presets` — сцена в обоих наборах, `themes` — в светлой и тёмной теме.
10
+ Снимков у историй нет: поле движется.
11
+
12
+ Стили обёртки лежат в каскадном слое кита под блоком `app-dot-field` на хосте. Контур, скругление и тень
13
+ карточки идут своими свойствами `--rt-dot-field-story-card-*`: проверка токенов не принимает шаг шкалы
14
+ прямо в свойстве.
@@ -0,0 +1,31 @@
1
+ @layer rt-kit.components {
2
+ /* Сцена страницы входа: позиционированный родитель поля и карточка поверх него. */
3
+ .app-dot-field {
4
+ --rt-dot-field-story-card-border-width: var(--rt-border-width-thin);
5
+ --rt-dot-field-story-card-radius: var(--rt-radius-md);
6
+ --rt-dot-field-story-card-shadow: var(--rt-shadow-card);
7
+
8
+ &__scene {
9
+ position: relative;
10
+ display: flex;
11
+ overflow: hidden;
12
+ width: 100%;
13
+ height: 22rem;
14
+ align-items: center;
15
+ justify-content: center;
16
+ background-color: var(--rt-color-bg-page);
17
+ }
18
+
19
+ &__card {
20
+ position: relative;
21
+ z-index: 1;
22
+ padding: var(--rt-space-10) var(--rt-space-5);
23
+ border: var(--rt-dot-field-story-card-border-width) solid var(--rt-color-border-default);
24
+ border-radius: var(--rt-dot-field-story-card-radius);
25
+ background-color: var(--rt-color-bg-surface);
26
+ box-shadow: var(--rt-dot-field-story-card-shadow);
27
+ color: var(--rt-color-text-primary);
28
+ font-family: var(--rt-font-family-sans);
29
+ }
30
+ }
31
+ }
@@ -35,6 +35,12 @@
35
35
  - Свои кнопки у строки — `<ng-template rtDynamicSelectorRowControls let-item>`, своё название —
36
36
  `<ng-template rtDynamicSelectorRowTitle let-item>`. Корзина и ручка перетаскивания остаются китовыми.
37
37
  - Приглашение (`invitation`) встаёт вместо полосы кнопок; его кнопка открывает тот же выбор.
38
+ `listActionsShown = false` убирает сброс и очистку, оставляя кнопку добавления;
39
+ `removeShown = false` убирает корзину строк.
40
+ - Правки в своём шаблоне строки — `extraChanged`: сброс и очистка включены при прежних ключах и
41
+ сообщают `listReset` и `listCleared`, значение сброс тогда не трогает.
42
+ - Начальный запрос окна — `searchTerm`, событием поиска он не уходит. Открыто ли окно — сигнал
43
+ `popupOpen` и выход `popupOpenChange`.
38
44
 
39
45
  ## Рядом
40
46
 
@@ -25,6 +25,7 @@
25
25
  | `errors` | `Record<validatorKey, string>` | `{}` |
26
26
  | `readonly` | `boolean` | `false` |
27
27
  | `loading` | `boolean` | `false` |
28
+ | `required` | `boolean` | `false` |
28
29
  | `hideRequiredMark` | `boolean` | `false` |
29
30
  | `reserveHintSpace` | `boolean` | `false` |
30
31
 
@@ -35,8 +36,8 @@
35
36
 
36
37
  - выдаёт контролу авто-идентификатор (`rt-field-N`) и связывает с ним `<label for>`, если у
37
38
  контрола нет своего `controlId`;
38
- - рисует «\*», если у контрола есть валидатор обязательности (обнаруживается сам, входа для этого
39
- нет);
39
+ - рисует «\*», если у контрола есть валидатор обязательности (обнаруживается сам) или у поля стоит
40
+ вход `required`;
40
41
  - показывает текст ошибки и включает режим плоского чтения.
41
42
 
42
43
  Всё это работает только для контролов кита. Обычный `<input>` внутрь класть можно, но подписи,
@@ -53,6 +54,21 @@
53
54
 
54
55
  Ошибка появляется только после касания или правки контрола — это решает сам контрол, а не поле.
55
56
 
57
+ ## Обязательность без валидатора
58
+
59
+ Шаблонная форма (`ngModel`) валидатора на контрол не кладёт, и обязательным поле само себя не
60
+ объявит. Для неё у поля есть вход `required`:
61
+
62
+ ```html
63
+ <rt-field label="Имя" required>
64
+ <rt-input [(ngModel)]="name" />
65
+ </rt-field>
66
+ ```
67
+
68
+ Поле рисует «\*». Тронутое и оставленное пустым краснеет с ошибкой `required`. Форму вход
69
+ недействительной не делает: можно ли записать, решает сама форма. Рядом с валидатором формы вход
70
+ ничего не меняет.
71
+
56
72
  ## Подсказка
57
73
 
58
74
  - Строковый `[hint]` — обычный случай.
@@ -26,8 +26,8 @@
26
26
 
27
27
  ## Края
28
28
 
29
- - Кнопки действий подогнаны под высоту шапки инлайновым `--rt-icon-button-size: 35px` — это
30
- осознанный выход за шкалу размеров.
29
+ - Кнопки действий идут шагом `md`, 40px. Прежний инлайновый `--rt-icon-button-size: 35px` до кнопки
30
+ не доходил и снят: после того как кнопка-значок научилась брать размер с тега, он уменьшил бы их.
31
31
  - Логотип рисуется вариантом `wordmark` высотой 15px; сами файлы даёт приложение
32
32
  (см. [`rt-logo`](../logo/CONTEXT.md)).
33
33
 
@@ -4,15 +4,19 @@
4
4
  <rt-icon name="check" size="md" color="current" [rotate]="null" />
5
5
  ```
6
6
 
7
- | вход | тип | умолчание |
8
- | -------- | ----------------------------------------------------------------------------------- | -------------- |
9
- | `name` | `IRtIcon.Name` — литеральный union из `rt-icon-names.ts` | **обязателен** |
10
- | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl'` | `'md'` |
11
- | `color` | `'current' \| 'muted' \| 'info' \| 'success' \| 'warning' \| 'danger' \| 'inverse'` | `'current'` |
12
- | `rotate` | `number \| string \| null` | `null` |
7
+ | вход | тип | умолчание |
8
+ | -------- | ----------------------------------------------------------------------------------- | ----------- |
9
+ | `name` | `IRtIcon.Name \| null` — литеральный union из `rt-icon-names.ts`; побеждает `glyph` | `null` |
10
+ | `glyph` | `string \| null` — имя Material: пара кита или лигатура шрифта | `null` |
11
+ | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl' \| number` — число в пикселях | `'md'` |
12
+ | `color` | `'current' \| 'muted' \| 'info' \| 'success' \| 'warning' \| 'danger' \| 'inverse'` | `'current'` |
13
+ | `rotate` | `number \| string \| null` | `null` |
14
+ | `fill` | `boolean` — залитый рисунок материального набора и заливка шрифта лигатуры | `false` |
15
+ | `spin` | `boolean` — вращение, медленнее при просьбе системы о меньшем движении | `false` |
13
16
 
14
17
  Выходов нет. Размер и цвет едут инлайновым стилем host-а (`width`/`height`/`color`), не классом:
15
- `xs` 12px, `sm` 16px, `md` 20px, `lg` 24px, `xl` 32px, `2xl` 40px.
18
+ `xs` 12px, `sm` 16px, `md` 20px, `lg` 24px, `xl` 32px, `2xl` 40px, или число пикселей. Лигатура
19
+ глифа скрыта, пока шрифты страницы не готовы: её ждёт `RtIconFontService`.
16
20
 
17
21
  ## Главное, что нужно знать
18
22
 
@@ -3,6 +3,9 @@
3
3
  Селектор bare `.rt-icon` (класс на host) — им же адресуются и программные
4
4
  потребители sprite'а, рисующие иконку без компонента. */
5
5
  .rt-icon {
6
+ --rt-icon-spin-duration: 1s;
7
+ --rt-icon-spin-duration-reduced: 4s;
8
+
6
9
  display: inline-flex;
7
10
  flex-shrink: 0;
8
11
  line-height: 0;
@@ -14,7 +17,51 @@
14
17
  fill: currentcolor;
15
18
  }
16
19
 
20
+ /* Лигатура шрифта Material Symbols для глифа без пары. Шрифт подключает приложение,
21
+ семью можно переназначить свойством сверху. Размер шрифта — встроенным стилем, он равен
22
+ ширине значка. До готовности шрифтов лигатура скрыта: иначе на её месте видно слово. */
23
+ &__glyph {
24
+ display: block;
25
+ overflow: hidden;
26
+ width: 100%;
27
+ font-family: var(--rt-icon-glyph-font, 'Material Symbols Outlined'), sans-serif;
28
+ font-feature-settings: 'liga';
29
+ font-style: normal;
30
+ font-variation-settings: 'FILL' 0;
31
+ font-weight: var(--rt-font-weight-regular);
32
+ letter-spacing: normal;
33
+ line-height: 1;
34
+ text-align: center;
35
+ text-transform: none;
36
+ white-space: nowrap;
37
+
38
+ &--filled {
39
+ font-variation-settings: 'FILL' 1;
40
+ }
41
+
42
+ &--pending {
43
+ visibility: hidden;
44
+ }
45
+ }
46
+
47
+ /* Вращение задаётся анимацией, и на её время она перекрывает поворот значка. */
48
+ &--spin {
49
+ animation: rt-icon-spin var(--rt-icon-spin-duration) linear infinite;
50
+ }
51
+
17
52
  /* Набор рисунков стилями не выбирается: ссылку на символ спрайта CSS подменить нечем.
18
53
  Признак набора компонент читает у разметки над собой — см. rt-icon.component.ts. */
19
54
  }
55
+
56
+ @keyframes rt-icon-spin {
57
+ to {
58
+ transform: rotate(1turn);
59
+ }
60
+ }
61
+
62
+ @media (prefers-reduced-motion: reduce) {
63
+ .rt-icon--spin {
64
+ animation-duration: var(--rt-icon-spin-duration-reduced);
65
+ }
66
+ }
20
67
  }
@@ -4,19 +4,20 @@
4
4
  <rt-icon-button icon="ico-trash" ariaLabel="Удалить" variant="danger" size="md" (clicked)="remove()" />
5
5
  ```
6
6
 
7
- | вход | тип | умолчание |
8
- | ----------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------- |
9
- | `icon` | `IRtIcon.Name` | **обязателен** |
10
- | `ariaLabel` | `string` | **обязателен** |
11
- | `variant` | `'primary' \| 'secondary' \| 'ghost' \| 'danger' \| 'success' \| 'warning'` | `'ghost'` |
12
- | `size` | `'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl'` | `'md'` |
13
- | `iconSize` | `IRtIcon.Size \| null` | `null` → от размера кнопки |
14
- | `iconColor` | `IRtIcon.Color` | `'current'` |
15
- | `radius` | `TRtRadius \| null` — шаг общей шкалы | `null` → `md` |
16
- | `type` | `'button' \| 'submit'` | `'button'` |
17
- | `tooltip` | `string` | `''` (пусто → подсказки нет) |
18
- | `tabIndex` | `number` | `0` |
19
- | `loading` / `disabled` / `active` / `indicator` | `boolean` | `false` |
7
+ | вход | тип | умолчание |
8
+ | ----------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------- |
9
+ | `icon` | `IRtIcon.Name \| null` — нужен он или `glyph`; без обоих показывает вложенное | `null` |
10
+ | `glyph` | `string \| null` — имя Material, как `glyph` у `rt-icon` | `null` |
11
+ | `ariaLabel` | `string` | **обязателен** |
12
+ | `variant` | `'primary' \| 'secondary' \| 'ghost' \| 'danger' \| 'success' \| 'warning'` | `'ghost'` |
13
+ | `size` | `'2xs' \| 'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl'` | `'md'` |
14
+ | `iconSize` | `IRtIcon.Size \| null` | `null` → от размера кнопки |
15
+ | `iconColor` | `IRtIcon.Color` | `'current'` |
16
+ | `radius` | `TRtRadius \| null` — шаг общей шкалы | `null` → `md` |
17
+ | `type` | `'button' \| 'submit'` | `'button'` |
18
+ | `tooltip` | `string` | `''` (пусто → подсказки нет) |
19
+ | `tabIndex` | `number` | `0` |
20
+ | `loading` / `disabled` / `active` / `indicator` | `boolean` | `false` |
20
21
 
21
22
  | выход | тип |
22
23
  | --------- | ------------ |
@@ -27,13 +28,19 @@
27
28
  **`ariaLabel` обязателен.** У кнопки нет текста, и без подписи она для скринридера безымянна.
28
29
  Это единственная причина, по которой вход помечен `required`.
29
30
 
30
- **Кнопку компонент рисует внутри себя**, host остаётся обычным элементом. Диаметр держит
31
- свойство `--rt-icon-button-size`, и объявляет его модификатор размера на самой кнопке —
32
- поэтому ни класс на host-е, ни инлайн-стиль на нём диаметра не меняют: собственное
33
- объявление элемента бьёт унаследованное. Диаметр берётся из общей шкалы высот контролов, а не
34
- своим рядом: иконочная кнопка стоит в строке рядом с кнопкой и полем и обязана совпадать с ними
35
- по высоте. Ступени — `sm`, `md`, `lg`, `xl`, `2xl`; значения держит шкала, и здесь они не
36
- повторяются.
31
+ **Нет ни `icon`, ни `glyph` — кнопка показывает вложенное.** Так в кнопку кита встаёт рисунок,
32
+ которого нет в наборе: размер, форма и состояния остаются кнопочными. Со значком вложенное не
33
+ рисуется.
34
+
35
+ **Кнопку компонент рисует внутри себя**, host остаётся обычным элементом. Модификаторы размера и
36
+ вида пишут частные шаги `--rt-icon-button-size-step` и `--rt-icon-button-bg-variant`, а кнопка
37
+ читает их под публичными `--rt-icon-button-size` и `--rt-icon-button-bg`. Публичные кнопка не
38
+ объявляет, поэтому значение на теге или выше доходит до неё; заливку под указателем задаёт
39
+ `--rt-icon-button-bg-hover`. Компоненты кита, которым нужен свой размер кнопки, пишут шаг, и
40
+ последнее слово остаётся за приложением. Диаметр берётся из общей шкалы высот контролов: иконочная
41
+ кнопка стоит в строке рядом с кнопкой и полем. Ступени — `2xs` 20px и `xs` 22px со значком 16px,
42
+ затем `sm`, `md`, `lg`, `xl`, `2xl` по шкале. У шкалы нет ступени 22px, поэтому `xs` записан на
43
+ месте.
37
44
 
38
45
  ## Как этим пользоваться
39
46