@cuby-ui/core 0.0.562 → 0.0.564

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 (547) hide show
  1. package/README.md +811 -811
  2. package/components/filter-bar/components/add-filter-button/add-filter-button.component.d.ts +2 -1
  3. package/components/filter-bar/components/date-filter/date-filter.component.d.ts +4 -3
  4. package/components/filter-bar/components/multiselect-filter/multiselect-filter.component.d.ts +3 -2
  5. package/components/filter-bar/components/range-filter/range-filter.component.d.ts +3 -2
  6. package/components/filter-bar/components/select-filter/select-filter.component.d.ts +3 -2
  7. package/components/filter-bar/components/string-filter/string-filter.component.d.ts +3 -2
  8. package/components/filter-bar/filter-bar.component.d.ts +3 -2
  9. package/components/filter-bar/filter-bar.interfaces.d.ts +10 -0
  10. package/components/filter-bar/index.d.ts +2 -1
  11. package/components/notification/notification.component.d.ts +2 -2
  12. package/directives/tooltip/tooltip.component.d.ts +1 -1
  13. package/esm2022/animations/animations.mjs +1 -1
  14. package/esm2022/animations/index.mjs +1 -1
  15. package/esm2022/classes/accessors.mjs +1 -1
  16. package/esm2022/classes/driver.mjs +1 -1
  17. package/esm2022/classes/index.mjs +1 -1
  18. package/esm2022/classes/vehicle.mjs +1 -1
  19. package/esm2022/components/accordion/accordion-item/accordion-item.component.mjs +3 -3
  20. package/esm2022/components/accordion/accordion-item/accordion-item.options.mjs +1 -1
  21. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  22. package/esm2022/components/accordion/accordion.directive.mjs +1 -1
  23. package/esm2022/components/accordion/accordion.module.mjs +1 -1
  24. package/esm2022/components/accordion/index.mjs +1 -1
  25. package/esm2022/components/alert/alert.component.mjs +3 -3
  26. package/esm2022/components/alert/alert.interfaces.mjs +1 -1
  27. package/esm2022/components/alert/alert.module.mjs +1 -1
  28. package/esm2022/components/alert/alert.service.mjs +1 -1
  29. package/esm2022/components/alert/alert.tokens.mjs +1 -1
  30. package/esm2022/components/alert/alert.types.mjs +1 -1
  31. package/esm2022/components/alert/alerts.component.mjs +3 -3
  32. package/esm2022/components/alert/index.mjs +1 -1
  33. package/esm2022/components/alert-hint/alert-hint.component.mjs +3 -3
  34. package/esm2022/components/alert-hint/error-status.mjs +1 -1
  35. package/esm2022/components/alert-hint/index.mjs +1 -1
  36. package/esm2022/components/badge/badge.component.mjs +3 -3
  37. package/esm2022/components/badge/badge.module.mjs +1 -1
  38. package/esm2022/components/badge/badge.options.mjs +1 -1
  39. package/esm2022/components/badge/index.mjs +1 -1
  40. package/esm2022/components/banner/banner.component.mjs +3 -3
  41. package/esm2022/components/banner/banner.module.mjs +1 -1
  42. package/esm2022/components/banner/banner.options.mjs +1 -1
  43. package/esm2022/components/banner/index.mjs +1 -1
  44. package/esm2022/components/breadcrumbs/breadcrumb/breadcrumb.component.mjs +3 -3
  45. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  46. package/esm2022/components/breadcrumbs/breadcrumbs.module.mjs +1 -1
  47. package/esm2022/components/breadcrumbs/index.mjs +1 -1
  48. package/esm2022/components/button/button.component.mjs +3 -3
  49. package/esm2022/components/button/button.module.mjs +1 -1
  50. package/esm2022/components/button/button.options.mjs +1 -1
  51. package/esm2022/components/button/index.mjs +1 -1
  52. package/esm2022/components/button-group/button-group.component.mjs +3 -3
  53. package/esm2022/components/button-group/button-group.module.mjs +1 -1
  54. package/esm2022/components/button-group/index.mjs +1 -1
  55. package/esm2022/components/card-wrapper/card-wrapper.component.mjs +3 -3
  56. package/esm2022/components/card-wrapper/index.mjs +1 -1
  57. package/esm2022/components/checkbox/checkbox.component.mjs +1 -1
  58. package/esm2022/components/checkbox/checkbox.module.mjs +1 -1
  59. package/esm2022/components/checkbox/index.mjs +1 -1
  60. package/esm2022/components/content-header/content-header.component.mjs +3 -3
  61. package/esm2022/components/content-header/index.mjs +1 -1
  62. package/esm2022/components/content-wrapper/content-wrapper.component.mjs +3 -3
  63. package/esm2022/components/content-wrapper/index.mjs +1 -1
  64. package/esm2022/components/context-menu/context-menu.component.mjs +3 -3
  65. package/esm2022/components/context-menu/context-menu.module.mjs +1 -1
  66. package/esm2022/components/context-menu/index.mjs +1 -1
  67. package/esm2022/components/date-range-calendar/date-range-calendar.component.mjs +3 -3
  68. package/esm2022/components/date-range-calendar/date-range-calendar.interfaces.mjs +1 -1
  69. package/esm2022/components/date-range-calendar/date-range-calendar.module.mjs +1 -1
  70. package/esm2022/components/date-range-calendar/index.mjs +1 -1
  71. package/esm2022/components/dialog/dialog-actions/dialog-actions.component.mjs +3 -3
  72. package/esm2022/components/dialog/dialog-header/dialog-header.component.mjs +3 -3
  73. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  74. package/esm2022/components/dialog/dialog.interfaces.mjs +1 -1
  75. package/esm2022/components/dialog/dialog.module.mjs +1 -1
  76. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  77. package/esm2022/components/dialog/dialog.tokens.mjs +1 -1
  78. package/esm2022/components/dialog/dialogs.component.mjs +3 -3
  79. package/esm2022/components/dialog/index.mjs +1 -1
  80. package/esm2022/components/dropdown/dropdown.interfaces.mjs +1 -1
  81. package/esm2022/components/dropdown/index.mjs +1 -1
  82. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  83. package/esm2022/components/empty-state/index.mjs +1 -1
  84. package/esm2022/components/file-icon/file-icon.component.mjs +3 -3
  85. package/esm2022/components/file-icon/file-icon.options.mjs +1 -1
  86. package/esm2022/components/file-icon/index.mjs +1 -1
  87. package/esm2022/components/filter-bar/components/add-filter-button/add-filter-button.component.mjs +4 -4
  88. package/esm2022/components/filter-bar/components/date-filter/date-filter.component.mjs +4 -3
  89. package/esm2022/components/filter-bar/components/filter-remove-button/filter-remove-button.component.mjs +3 -4
  90. package/esm2022/components/filter-bar/components/index.mjs +1 -1
  91. package/esm2022/components/filter-bar/components/multiselect-filter/multiselect-filter.component.mjs +5 -6
  92. package/esm2022/components/filter-bar/components/range-filter/range-filter.component.mjs +5 -6
  93. package/esm2022/components/filter-bar/components/select-filter/select-filter.component.mjs +5 -6
  94. package/esm2022/components/filter-bar/components/string-filter/string-filter.component.mjs +5 -6
  95. package/esm2022/components/filter-bar/filter-bar.component.mjs +5 -3
  96. package/esm2022/components/filter-bar/filter-bar.interfaces.mjs +10 -2
  97. package/esm2022/components/filter-bar/filter-bar.module.mjs +1 -1
  98. package/esm2022/components/filter-bar/filter-bar.utils.mjs +1 -1
  99. package/esm2022/components/filter-bar/index.mjs +2 -1
  100. package/esm2022/components/form-field/form-field.component.mjs +3 -3
  101. package/esm2022/components/form-field/form-field.module.mjs +1 -1
  102. package/esm2022/components/form-field/index.mjs +1 -1
  103. package/esm2022/components/ghost-input/ghost-input.component.mjs +1 -1
  104. package/esm2022/components/ghost-input/index.mjs +1 -1
  105. package/esm2022/components/hint/hint.component.mjs +3 -3
  106. package/esm2022/components/hint/hint.module.mjs +1 -1
  107. package/esm2022/components/hint/index.mjs +1 -1
  108. package/esm2022/components/icon-button/icon-button.component.mjs +3 -3
  109. package/esm2022/components/icon-button/icon-button.module.mjs +1 -1
  110. package/esm2022/components/icon-button/index.mjs +1 -1
  111. package/esm2022/components/index.mjs +1 -1
  112. package/esm2022/components/input-number/index.mjs +1 -1
  113. package/esm2022/components/input-number/input-number.component.mjs +3 -3
  114. package/esm2022/components/input-number/input-number.module.mjs +1 -1
  115. package/esm2022/components/input-password/index.mjs +1 -1
  116. package/esm2022/components/input-password/input-password.component.mjs +3 -3
  117. package/esm2022/components/input-password/input-password.module.mjs +1 -1
  118. package/esm2022/components/input-text/index.mjs +1 -1
  119. package/esm2022/components/input-text/input-text.component.mjs +3 -3
  120. package/esm2022/components/input-text/input-text.module.mjs +1 -1
  121. package/esm2022/components/input-time/index.mjs +1 -1
  122. package/esm2022/components/input-time/input-time.component.mjs +3 -3
  123. package/esm2022/components/input-time/input-time.module.mjs +1 -1
  124. package/esm2022/components/input-time/input-time.options.mjs +1 -1
  125. package/esm2022/components/label/index.mjs +1 -1
  126. package/esm2022/components/label/label.component.mjs +3 -3
  127. package/esm2022/components/label/label.module.mjs +1 -1
  128. package/esm2022/components/layout/index.mjs +1 -1
  129. package/esm2022/components/layout/layout.component.mjs +3 -3
  130. package/esm2022/components/letter-box/index.mjs +1 -1
  131. package/esm2022/components/letter-box/letter-box.component.mjs +3 -3
  132. package/esm2022/components/letter-box/letter-box.interfaces.mjs +1 -1
  133. package/esm2022/components/notification/index.mjs +1 -1
  134. package/esm2022/components/notification/notification.component.mjs +3 -3
  135. package/esm2022/components/notification/notification.module.mjs +1 -1
  136. package/esm2022/components/notification/notification.options.mjs +1 -1
  137. package/esm2022/components/options-button/index.mjs +1 -1
  138. package/esm2022/components/options-button/options-button.component.mjs +3 -3
  139. package/esm2022/components/radio/index.mjs +1 -1
  140. package/esm2022/components/radio/radio.component.mjs +1 -1
  141. package/esm2022/components/radio/radio.module.mjs +1 -1
  142. package/esm2022/components/render-dynamic-components/index.mjs +1 -1
  143. package/esm2022/components/render-dynamic-components/render-dynamic-components.component.mjs +3 -3
  144. package/esm2022/components/render-dynamic-components/render-dynamic-components.options.mjs +1 -1
  145. package/esm2022/components/render-dynamic-components/render-dynamic-components.service.mjs +1 -1
  146. package/esm2022/components/root/index.mjs +1 -1
  147. package/esm2022/components/root/root.component.mjs +3 -3
  148. package/esm2022/components/root/root.module.mjs +1 -1
  149. package/esm2022/components/root/root.options.mjs +1 -1
  150. package/esm2022/components/select/index.mjs +1 -1
  151. package/esm2022/components/select/select.component.mjs +3 -3
  152. package/esm2022/components/select/select.module.mjs +1 -1
  153. package/esm2022/components/sidebar/index.mjs +1 -1
  154. package/esm2022/components/sidebar/sidebar-container/index.mjs +1 -1
  155. package/esm2022/components/sidebar/sidebar-container/sidebar-container.component.mjs +3 -3
  156. package/esm2022/components/sidebar/sidebar-header/index.mjs +1 -1
  157. package/esm2022/components/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  158. package/esm2022/components/sidebar/sidebar-navigation/index.mjs +1 -1
  159. package/esm2022/components/sidebar/sidebar-navigation/sidebar-navigation.component.mjs +3 -3
  160. package/esm2022/components/sidebar/sidebar-navigation-container/index.mjs +1 -1
  161. package/esm2022/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.mjs +3 -3
  162. package/esm2022/components/sidebar/sidebar-navigation-item/index.mjs +1 -1
  163. package/esm2022/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.mjs +3 -3
  164. package/esm2022/components/sidebar/sidebar.options.mjs +1 -1
  165. package/esm2022/components/sidebar/sidebar.service.mjs +1 -1
  166. package/esm2022/components/svg/index.mjs +1 -1
  167. package/esm2022/components/svg/svg.component.mjs +3 -3
  168. package/esm2022/components/svg/svg.module.mjs +1 -1
  169. package/esm2022/components/tab/index.mjs +1 -1
  170. package/esm2022/components/tab/tab.component.mjs +1 -1
  171. package/esm2022/components/tabs/components/abstract-tabs/abstract-tabs.component.mjs +3 -3
  172. package/esm2022/components/tabs/components/abstract-tabs/index.mjs +1 -1
  173. package/esm2022/components/tabs/components/index.mjs +1 -1
  174. package/esm2022/components/tabs/index.mjs +1 -1
  175. package/esm2022/components/tabs/services/index.mjs +1 -1
  176. package/esm2022/components/tabs/services/tabs.service.mjs +1 -1
  177. package/esm2022/components/tabs/tabs.component.mjs +3 -3
  178. package/esm2022/components/tabs/tabs.options.mjs +1 -1
  179. package/esm2022/components/tabs/tabs.provider.mjs +1 -1
  180. package/esm2022/components/textarea/index.mjs +1 -1
  181. package/esm2022/components/textarea/textarea.component.mjs +1 -1
  182. package/esm2022/components/textarea/textarea.module.mjs +1 -1
  183. package/esm2022/components/toggle/index.mjs +1 -1
  184. package/esm2022/components/toggle/toggle.component.mjs +1 -1
  185. package/esm2022/components/toggle/toggle.module.mjs +1 -1
  186. package/esm2022/directives/index.mjs +1 -1
  187. package/esm2022/directives/skeleton/constants/fade.const.mjs +1 -1
  188. package/esm2022/directives/skeleton/constants/index.mjs +1 -1
  189. package/esm2022/directives/skeleton/constants/max-placeholder-length-limiter.const.mjs +1 -1
  190. package/esm2022/directives/skeleton/constants/min-placeholder-length-limiter.const.mjs +1 -1
  191. package/esm2022/directives/skeleton/index.mjs +1 -1
  192. package/esm2022/directives/skeleton/skeleton.directive.mjs +1 -1
  193. package/esm2022/directives/text-field-controller/index.mjs +1 -1
  194. package/esm2022/directives/text-field-controller/text-field-controller.module.mjs +1 -1
  195. package/esm2022/directives/text-field-controller/text-field-controller.provider.mjs +1 -1
  196. package/esm2022/directives/text-field-controller/text-field-icon-left.directive.mjs +1 -1
  197. package/esm2022/directives/text-field-controller/text-field-id.directive.mjs +1 -1
  198. package/esm2022/directives/text-field-controller/text-field-is-error.directive.mjs +1 -1
  199. package/esm2022/directives/text-field-controller/text-field-placeholder.directive.mjs +1 -1
  200. package/esm2022/directives/text-field-controller/text-field-size.directive.mjs +1 -1
  201. package/esm2022/directives/text-field-controller/text-field.controller.mjs +1 -1
  202. package/esm2022/directives/tooltip/index.mjs +1 -1
  203. package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +1 -1
  204. package/esm2022/directives/tooltip/tooltip-driver.directive.mjs +1 -1
  205. package/esm2022/directives/tooltip/tooltip-host.directive.mjs +1 -1
  206. package/esm2022/directives/tooltip/tooltip-hover.directive.mjs +1 -1
  207. package/esm2022/directives/tooltip/tooltip-manual.directive.mjs +1 -1
  208. package/esm2022/directives/tooltip/tooltip-options.directive.mjs +1 -1
  209. package/esm2022/directives/tooltip/tooltip-overflow.directive.mjs +1 -1
  210. package/esm2022/directives/tooltip/tooltip-pointer.directive.mjs +1 -1
  211. package/esm2022/directives/tooltip/tooltip-position.directive.mjs +1 -1
  212. package/esm2022/directives/tooltip/tooltip-unstyled.component.mjs +1 -1
  213. package/esm2022/directives/tooltip/tooltip.component.mjs +13 -13
  214. package/esm2022/directives/tooltip/tooltip.directive.mjs +1 -1
  215. package/esm2022/directives/tooltip/tooltip.mjs +1 -1
  216. package/esm2022/directives/tooltip/tooltip.providers.mjs +1 -1
  217. package/esm2022/directives/tooltip/tooltip.service.mjs +1 -1
  218. package/esm2022/directives/tooltip/tooltips.component.mjs +3 -3
  219. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.component.mjs +3 -3
  220. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.options.mjs +1 -1
  221. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +3 -3
  222. package/esm2022/editor/components/marker-select/component/select-item/select-option.component.mjs +3 -3
  223. package/esm2022/editor/components/marker-select/marker-select.component.mjs +3 -3
  224. package/esm2022/editor/config/custom-elements.mjs +1 -1
  225. package/esm2022/editor/editor.component.mjs +25 -9
  226. package/esm2022/editor/interfaces/angular-element.mjs +1 -1
  227. package/esm2022/editor/interfaces/chunk-descriptor.mjs +1 -1
  228. package/esm2022/editor/interfaces/custom-element.mjs +1 -1
  229. package/esm2022/editor/interfaces/editor-service.mjs +1 -1
  230. package/esm2022/editor/providers/index.mjs +1 -1
  231. package/esm2022/editor/services/editor.service.mjs +3 -3
  232. package/esm2022/editor/tools/combined-text-block.tool.mjs +2 -2
  233. package/esm2022/editor/tools/role-marker.tool.mjs +3 -3
  234. package/esm2022/editor/tools/tool-marker.tool.mjs +1 -1
  235. package/esm2022/editor/utils/copy-text-to-clipboard.mjs +1 -1
  236. package/esm2022/editor/utils/create-tools-data.mjs +1 -1
  237. package/esm2022/editor/utils/merge-small-chunks.mjs +1 -1
  238. package/esm2022/editor/utils/open-file-in-browser.mjs +1 -1
  239. package/esm2022/editor/utils/preset-config-token.mjs +1 -1
  240. package/esm2022/editor/utils/set-loading.mjs +1 -1
  241. package/esm2022/editor/utils/url.validator.mjs +1 -1
  242. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +3 -3
  243. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +3 -3
  244. package/esm2022/editor/widgets/editor-modal/index.mjs +1 -1
  245. package/esm2022/editor/widgets/editor-readonly/editor-readonly.options.mjs +1 -1
  246. package/esm2022/editor/widgets/editor-readonly/editor-resize-observer.directive.mjs +1 -1
  247. package/esm2022/editor/widgets/index.mjs +1 -1
  248. package/esm2022/i18n/index.mjs +1 -1
  249. package/esm2022/index.mjs +1 -1
  250. package/esm2022/interceptors/auth.interceptor.mjs +1 -1
  251. package/esm2022/interceptors/error-handler.interceptor.mjs +1 -1
  252. package/esm2022/interceptors/sse-stream-reader.interceptor.mjs +1 -1
  253. package/esm2022/interceptors/x-ndjson.interceptor.mjs +1 -1
  254. package/esm2022/interfaces/context-menu-item.mjs +1 -1
  255. package/esm2022/interfaces/error-notification-service.mjs +1 -1
  256. package/esm2022/interfaces/error-stategy.mjs +1 -1
  257. package/esm2022/interfaces/image.mjs +1 -1
  258. package/esm2022/interfaces/index.mjs +1 -1
  259. package/esm2022/interfaces/option.mjs +1 -1
  260. package/esm2022/operators/handle-error.mjs +1 -1
  261. package/esm2022/operators/index.mjs +1 -1
  262. package/esm2022/pipes/index.mjs +1 -1
  263. package/esm2022/pipes/time.pipe.mjs +1 -1
  264. package/esm2022/providers/auth.options.mjs +1 -1
  265. package/esm2022/providers/auth.provider.mjs +1 -1
  266. package/esm2022/providers/error-handler.options.mjs +1 -1
  267. package/esm2022/providers/error-handler.provider.mjs +1 -1
  268. package/esm2022/providers/index.mjs +1 -1
  269. package/esm2022/services/auth.service.mjs +1 -1
  270. package/esm2022/services/browser-auth.service.mjs +1 -1
  271. package/esm2022/services/error-resolver-factory.service.mjs +1 -1
  272. package/esm2022/services/global-handler-error.service.mjs +1 -1
  273. package/esm2022/services/hybrid-storage.service.mjs +1 -1
  274. package/esm2022/services/index.mjs +1 -1
  275. package/esm2022/services/loader.options.mjs +1 -1
  276. package/esm2022/services/mobile-auth.service.mjs +1 -1
  277. package/esm2022/services/position.service.mjs +1 -1
  278. package/esm2022/services/theme.options.mjs +1 -1
  279. package/esm2022/services/theme.service.mjs +1 -1
  280. package/esm2022/services/token.options.mjs +1 -1
  281. package/esm2022/services/token.service.mjs +1 -1
  282. package/esm2022/services/visual-viewport.service.mjs +1 -1
  283. package/esm2022/tokens/animations-speed.mjs +1 -1
  284. package/esm2022/tokens/error-notification-service.mjs +1 -1
  285. package/esm2022/tokens/error-translation-prefix.mjs +1 -1
  286. package/esm2022/tokens/index.mjs +1 -1
  287. package/esm2022/tokens/reduced-motion.mjs +1 -1
  288. package/esm2022/tokens/should-handle-error.mjs +1 -1
  289. package/esm2022/tokens/viewport.mjs +1 -1
  290. package/esm2022/types/appearance.mjs +1 -1
  291. package/esm2022/types/button-theme.mjs +1 -1
  292. package/esm2022/types/hint-type.mjs +1 -1
  293. package/esm2022/types/index.mjs +1 -1
  294. package/esm2022/types/point.mjs +1 -1
  295. package/esm2022/types/portal-item.mjs +1 -1
  296. package/esm2022/types/position.mjs +1 -1
  297. package/esm2022/types/resizing.mjs +1 -1
  298. package/esm2022/types/shape.mjs +1 -1
  299. package/esm2022/types/should-handle-error.type.mjs +1 -1
  300. package/esm2022/types/size.mjs +1 -1
  301. package/esm2022/types/status.mjs +1 -1
  302. package/esm2022/utils/check-fixed-position.mjs +1 -1
  303. package/esm2022/utils/default-validators/create-default-validators.mjs +1 -1
  304. package/esm2022/utils/default-validators/create-default-validators.options.mjs +1 -1
  305. package/esm2022/utils/default-validators/extra-spaces.options.mjs +1 -1
  306. package/esm2022/utils/default-validators/extra-spaces.validators.mjs +1 -1
  307. package/esm2022/utils/default-validators/index.mjs +1 -1
  308. package/esm2022/utils/format/index.mjs +1 -1
  309. package/esm2022/utils/format/remove-spaces.mjs +1 -1
  310. package/esm2022/utils/format/replace.mjs +1 -1
  311. package/esm2022/utils/index.mjs +1 -1
  312. package/esm2022/utils/miscellaneous/index.mjs +1 -1
  313. package/esm2022/utils/miscellaneous/is-obscured.mjs +1 -1
  314. package/esm2022/utils/miscellaneous/override-options.mjs +1 -1
  315. package/esm2022/utils/miscellaneous/to-animation-options.mjs +1 -1
  316. package/esm2022/widgets/assets/constants/index.mjs +1 -1
  317. package/esm2022/widgets/assets/constants/translations.mjs +1 -1
  318. package/esm2022/widgets/assets/index.mjs +1 -1
  319. package/esm2022/widgets/index.mjs +1 -1
  320. package/esm2022/widgets/model/index.mjs +1 -1
  321. package/esm2022/widgets/model/loader.options.mjs +1 -1
  322. package/esm2022/widgets/model/resource-state-service.interface.mjs +1 -1
  323. package/esm2022/widgets/model/resource-state-service.token.mjs +1 -1
  324. package/esm2022/widgets/model/resources-block.options.mjs +1 -1
  325. package/esm2022/widgets/model/subject-modal-service.interface.mjs +1 -1
  326. package/esm2022/widgets/model/subject-modal-service.token.mjs +1 -1
  327. package/esm2022/widgets/model/used-elements-service.interface.mjs +1 -1
  328. package/esm2022/widgets/model/used-elements-service.token.mjs +1 -1
  329. package/esm2022/widgets/model/utility-service.interface.mjs +1 -1
  330. package/esm2022/widgets/model/utility-service.token.mjs +1 -1
  331. package/esm2022/widgets/service/index.mjs +1 -1
  332. package/esm2022/widgets/service/resource-state-base.service.mjs +1 -1
  333. package/esm2022/widgets/service/subject-modal-base.service.mjs +1 -1
  334. package/esm2022/widgets/service/used-elements-base.service.mjs +1 -1
  335. package/esm2022/widgets/service/utility-base.service.mjs +1 -1
  336. package/esm2022/widgets/ui/assignee-role-item/assignee-role-item.component.mjs +3 -3
  337. package/esm2022/widgets/ui/assignee-role-item/index.mjs +1 -1
  338. package/esm2022/widgets/ui/assignee-roles-tabs/assignee-roles-tabs.component.mjs +3 -3
  339. package/esm2022/widgets/ui/assignee-roles-tabs/index.mjs +1 -1
  340. package/esm2022/widgets/ui/button-change-theme/button-change-theme.component.mjs +3 -3
  341. package/esm2022/widgets/ui/button-change-theme/index.mjs +1 -1
  342. package/esm2022/widgets/ui/categories/categories.component.mjs +3 -3
  343. package/esm2022/widgets/ui/categories/components/categories-list/categories-list.component.mjs +3 -3
  344. package/esm2022/widgets/ui/categories/components/categories-list/index.mjs +1 -1
  345. package/esm2022/widgets/ui/categories/components/category-form/category-form.component.mjs +3 -3
  346. package/esm2022/widgets/ui/categories/components/category-form/index.mjs +1 -1
  347. package/esm2022/widgets/ui/categories/components/category-item/category-item.component.mjs +3 -3
  348. package/esm2022/widgets/ui/categories/components/category-item/index.mjs +1 -1
  349. package/esm2022/widgets/ui/categories/components/create-category-item/create-category-item.component.mjs +3 -3
  350. package/esm2022/widgets/ui/categories/components/create-category-item/index.mjs +1 -1
  351. package/esm2022/widgets/ui/categories/components/index.mjs +1 -1
  352. package/esm2022/widgets/ui/categories/index.mjs +1 -1
  353. package/esm2022/widgets/ui/categories/services/index.mjs +1 -1
  354. package/esm2022/widgets/ui/categories/services/selected-category.service.mjs +1 -1
  355. package/esm2022/widgets/ui/checklist-block/checklist-block.component.mjs +3 -3
  356. package/esm2022/widgets/ui/checklist-block/checklist-block.options.mjs +1 -1
  357. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list/checklist-block-list.component.mjs +3 -3
  358. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list/index.mjs +1 -1
  359. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.mjs +3 -3
  360. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-card/index.mjs +1 -1
  361. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.mjs +3 -3
  362. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-with-verification/index.mjs +1 -1
  363. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.mjs +3 -3
  364. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-without-verification/index.mjs +1 -1
  365. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.mjs +3 -3
  366. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.mjs +1 -1
  367. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-container/index.mjs +1 -1
  368. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.mjs +3 -3
  369. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.options.mjs +1 -1
  370. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/index.mjs +1 -1
  371. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +3 -3
  372. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.options.mjs +1 -1
  373. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/index.mjs +1 -1
  374. package/esm2022/widgets/ui/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.mjs +3 -3
  375. package/esm2022/widgets/ui/checklist-block/components/checklist-block-title-control/index.mjs +1 -1
  376. package/esm2022/widgets/ui/checklist-block/components/index.mjs +1 -1
  377. package/esm2022/widgets/ui/checklist-block/index.mjs +1 -1
  378. package/esm2022/widgets/ui/checklist-block/services/checklist-block.service.mjs +1 -1
  379. package/esm2022/widgets/ui/checklist-block/services/index.mjs +1 -1
  380. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/consumable-form-item.component.mjs +3 -3
  381. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/default-control-delay.mjs +1 -1
  382. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/index.mjs +1 -1
  383. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item-readonly/consumable-form-item-readonly.component.mjs +3 -3
  384. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item-readonly/index.mjs +1 -1
  385. package/esm2022/widgets/ui/consumable-form/components/index.mjs +1 -1
  386. package/esm2022/widgets/ui/consumable-form/consumable-form.component.mjs +3 -3
  387. package/esm2022/widgets/ui/consumable-form/consumable-form.options.mjs +1 -1
  388. package/esm2022/widgets/ui/consumable-form/index.mjs +1 -1
  389. package/esm2022/widgets/ui/criterion-info/criterion-info.component.mjs +3 -3
  390. package/esm2022/widgets/ui/criterion-info/index.mjs +1 -1
  391. package/esm2022/widgets/ui/criterion-info-form/criterion-info-form.component.mjs +3 -3
  392. package/esm2022/widgets/ui/criterion-info-form/criterion-info-form.options.mjs +1 -1
  393. package/esm2022/widgets/ui/criterion-info-form/index.mjs +1 -1
  394. package/esm2022/widgets/ui/criterion-readonly-info/criterion-readonly-info.component.mjs +3 -3
  395. package/esm2022/widgets/ui/criterion-readonly-info/index.mjs +1 -1
  396. package/esm2022/widgets/ui/delete-modal/delete-modal.component.mjs +3 -3
  397. package/esm2022/widgets/ui/delete-modal/delete-modal.options.mjs +1 -1
  398. package/esm2022/widgets/ui/delete-modal/index.mjs +1 -1
  399. package/esm2022/widgets/ui/framer-preview/framer-preview.component.mjs +3 -3
  400. package/esm2022/widgets/ui/framer-preview/framer-preview.options.mjs +1 -1
  401. package/esm2022/widgets/ui/framer-preview/index.mjs +1 -1
  402. package/esm2022/widgets/ui/general-control-error-hint/general-control-error-hint.component.mjs +3 -3
  403. package/esm2022/widgets/ui/general-control-error-hint/index.mjs +1 -1
  404. package/esm2022/widgets/ui/index.mjs +1 -1
  405. package/esm2022/widgets/ui/inserted/index.mjs +1 -1
  406. package/esm2022/widgets/ui/inserted/inserted.component.mjs +3 -3
  407. package/esm2022/widgets/ui/instruction-info/index.mjs +1 -1
  408. package/esm2022/widgets/ui/instruction-info/instruction-info.component.mjs +3 -3
  409. package/esm2022/widgets/ui/instruction-info-form/index.mjs +1 -1
  410. package/esm2022/widgets/ui/instruction-info-form/instruction-info-form.component.mjs +3 -3
  411. package/esm2022/widgets/ui/instruction-info-form/instruction-info-form.options.mjs +1 -1
  412. package/esm2022/widgets/ui/instruction-readonly-info/index.mjs +1 -1
  413. package/esm2022/widgets/ui/instruction-readonly-info/instruction-readonly-info.component.mjs +3 -3
  414. package/esm2022/widgets/ui/loader/components/circle-loader/circle-loader.component.mjs +3 -3
  415. package/esm2022/widgets/ui/loader/components/circle-loader/index.mjs +1 -1
  416. package/esm2022/widgets/ui/loader/components/index.mjs +1 -1
  417. package/esm2022/widgets/ui/loader/components/linear-loader/index.mjs +1 -1
  418. package/esm2022/widgets/ui/loader/components/linear-loader/linear-loader.component.mjs +3 -3
  419. package/esm2022/widgets/ui/loader/components/pulse-loader/index.mjs +1 -1
  420. package/esm2022/widgets/ui/loader/components/pulse-loader/pulse-loader.component.mjs +3 -3
  421. package/esm2022/widgets/ui/loader/components/stated-loader/index.mjs +1 -1
  422. package/esm2022/widgets/ui/loader/components/stated-loader/stated-loader.component.mjs +3 -3
  423. package/esm2022/widgets/ui/loader/index.mjs +1 -1
  424. package/esm2022/widgets/ui/loader/loader.component.mjs +3 -3
  425. package/esm2022/widgets/ui/modal-criteria-tab/index.mjs +1 -1
  426. package/esm2022/widgets/ui/modal-criteria-tab/modal-criteria-tab.component.mjs +3 -3
  427. package/esm2022/widgets/ui/modal-divided-section/index.mjs +1 -1
  428. package/esm2022/widgets/ui/modal-divided-section/modal-divided-section.component.mjs +3 -3
  429. package/esm2022/widgets/ui/modal-divided-section/modal-divided-section.interfaces.mjs +1 -1
  430. package/esm2022/widgets/ui/modal-header/index.mjs +1 -1
  431. package/esm2022/widgets/ui/modal-header/modal-header.component.mjs +3 -3
  432. package/esm2022/widgets/ui/modal-header-inserted-buttons/index.mjs +1 -1
  433. package/esm2022/widgets/ui/modal-header-inserted-buttons/modal-header-inserted-buttons.component.mjs +3 -3
  434. package/esm2022/widgets/ui/modal-header-tabs/index.mjs +1 -1
  435. package/esm2022/widgets/ui/modal-header-tabs/modal-header-tabs.component.mjs +3 -3
  436. package/esm2022/widgets/ui/modal-info-tab/index.mjs +1 -1
  437. package/esm2022/widgets/ui/modal-info-tab/modal-info-tab.component.mjs +3 -3
  438. package/esm2022/widgets/ui/modal-info-tab/modal-info-tab.options.mjs +1 -1
  439. package/esm2022/widgets/ui/modal-instructions-tab/index.mjs +1 -1
  440. package/esm2022/widgets/ui/modal-instructions-tab/modal-instructions-tab.component.mjs +3 -3
  441. package/esm2022/widgets/ui/modal-operation-part/index.mjs +1 -1
  442. package/esm2022/widgets/ui/modal-operation-part/modal-operation-part.component.mjs +3 -3
  443. package/esm2022/widgets/ui/modal-resources-tab/index.mjs +1 -1
  444. package/esm2022/widgets/ui/modal-resources-tab/modal-resources-tab.component.mjs +3 -3
  445. package/esm2022/widgets/ui/render-dynamic-modal/index.mjs +1 -1
  446. package/esm2022/widgets/ui/render-dynamic-modal/render-dynamic-modal.component.mjs +3 -3
  447. package/esm2022/widgets/ui/render-dynamic-modal/render-dynamic-modal.option.mjs +1 -1
  448. package/esm2022/widgets/ui/resources-block/components/index.mjs +1 -1
  449. package/esm2022/widgets/ui/resources-block/components/resources-block-consumables/index.mjs +1 -1
  450. package/esm2022/widgets/ui/resources-block/components/resources-block-consumables/resources-block-consumables.component.mjs +3 -3
  451. package/esm2022/widgets/ui/resources-block/components/resources-block-consumables/resources-block-consumables.options.mjs +1 -1
  452. package/esm2022/widgets/ui/resources-block/components/resources-block-content/index.mjs +1 -1
  453. package/esm2022/widgets/ui/resources-block/components/resources-block-content/resources-block-content.component.mjs +3 -3
  454. package/esm2022/widgets/ui/resources-block/components/resources-block-part/index.mjs +1 -1
  455. package/esm2022/widgets/ui/resources-block/components/resources-block-part/resources-block-part.component.mjs +3 -3
  456. package/esm2022/widgets/ui/resources-block/components/resources-block-part/resources-block-part.options.mjs +1 -1
  457. package/esm2022/widgets/ui/resources-block/components/resources-block-tabs/index.mjs +1 -1
  458. package/esm2022/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.component.mjs +3 -3
  459. package/esm2022/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.options.mjs +1 -1
  460. package/esm2022/widgets/ui/resources-block/components/resources-block-toolbox/index.mjs +1 -1
  461. package/esm2022/widgets/ui/resources-block/components/resources-block-toolbox/resources-block-toolbox.component.mjs +3 -3
  462. package/esm2022/widgets/ui/resources-block/components/resources-block-toolbox/resources-block-toolbox.options.mjs +1 -1
  463. package/esm2022/widgets/ui/resources-block/components/resources-options/index.mjs +1 -1
  464. package/esm2022/widgets/ui/resources-block/components/resources-options/resources-options.component.mjs +3 -3
  465. package/esm2022/widgets/ui/resources-block/index.mjs +1 -1
  466. package/esm2022/widgets/ui/resources-block/resources-block.component.mjs +3 -3
  467. package/esm2022/widgets/ui/resources-block-tabs/index.mjs +1 -1
  468. package/esm2022/widgets/ui/resources-block-tabs/resources-block-tabs.component.mjs +3 -3
  469. package/esm2022/widgets/ui/resources-block-tabs/resources-block-tabs.options.mjs +1 -1
  470. package/esm2022/widgets/ui/select-modal/components/index.mjs +1 -1
  471. package/esm2022/widgets/ui/select-modal/components/select-modal-folder/index.mjs +1 -1
  472. package/esm2022/widgets/ui/select-modal/components/select-modal-folder/select-modal-folder.component.mjs +3 -3
  473. package/esm2022/widgets/ui/select-modal/components/select-modal-search/index.mjs +1 -1
  474. package/esm2022/widgets/ui/select-modal/components/select-modal-search/select-modal-search.component.mjs +3 -3
  475. package/esm2022/widgets/ui/select-modal/index.mjs +1 -1
  476. package/esm2022/widgets/ui/select-modal/select-modal.component.mjs +3 -3
  477. package/esm2022/widgets/ui/select-modal/select-modal.interfaces.mjs +1 -1
  478. package/esm2022/widgets/ui/select-modal/select-modal.service.mjs +1 -1
  479. package/esm2022/widgets/ui/storage-list/components/index.mjs +1 -1
  480. package/esm2022/widgets/ui/storage-list/components/storage-list-item/index.mjs +1 -1
  481. package/esm2022/widgets/ui/storage-list/components/storage-list-item/storage-list-item.component.mjs +3 -3
  482. package/esm2022/widgets/ui/storage-list/index.mjs +1 -1
  483. package/esm2022/widgets/ui/storage-list/storage-list.component.mjs +3 -3
  484. package/esm2022/widgets/ui/storage-list/storage-list.options.mjs +1 -1
  485. package/esm2022/widgets/ui/toolbox-form/components/index.mjs +1 -1
  486. package/esm2022/widgets/ui/toolbox-form/components/tool-form-readonly/index.mjs +1 -1
  487. package/esm2022/widgets/ui/toolbox-form/components/tool-form-readonly/tool-form-readonly.component.mjs +3 -3
  488. package/esm2022/widgets/ui/toolbox-form/index.mjs +1 -1
  489. package/esm2022/widgets/ui/toolbox-form/tool-form.component.mjs +3 -3
  490. package/esm2022/widgets/ui/toolbox-form/tool-form.options.mjs +1 -1
  491. package/esm2022/widgets/ui/user-action-context-menu/activity-item/activity-item.component.mjs +3 -3
  492. package/esm2022/widgets/ui/user-action-context-menu/activity-item/index.mjs +1 -1
  493. package/esm2022/widgets/ui/user-action-context-menu/company-item/company-item.component.mjs +3 -3
  494. package/esm2022/widgets/ui/user-action-context-menu/company-item/index.mjs +1 -1
  495. package/esm2022/widgets/ui/user-action-context-menu/index.mjs +1 -1
  496. package/esm2022/widgets/ui/user-action-context-menu/services/activity-base.service.mjs +1 -1
  497. package/esm2022/widgets/ui/user-action-context-menu/services/activity.service.mjs +1 -1
  498. package/esm2022/widgets/ui/user-action-context-menu/services/index.mjs +1 -1
  499. package/esm2022/widgets/ui/user-action-context-menu/user-action-context-menu.component.mjs +3 -3
  500. package/esm2022/widgets/ui/user-action-context-menu/user-action-context.option.mjs +1 -1
  501. package/esm2022/widgets/ui/utility-info-readonly/index.mjs +1 -1
  502. package/esm2022/widgets/ui/utility-info-readonly/utility-info-readonly.component.mjs +3 -3
  503. package/esm2022/widgets/ui/utility-info-readonly/utility-info-readonly.options.mjs +1 -1
  504. package/esm2022/widgets/ui/utility-modal/components/criterion-modal-create/criterion-modal-create.component.mjs +3 -3
  505. package/esm2022/widgets/ui/utility-modal/components/criterion-modal-create/index.mjs +1 -1
  506. package/esm2022/widgets/ui/utility-modal/components/index.mjs +1 -1
  507. package/esm2022/widgets/ui/utility-modal/components/instruction-modal-create/index.mjs +1 -1
  508. package/esm2022/widgets/ui/utility-modal/components/instruction-modal-create/instruction-modal-create.component.mjs +3 -3
  509. package/esm2022/widgets/ui/utility-modal/components/readonly-criterion-modal/index.mjs +1 -1
  510. package/esm2022/widgets/ui/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.mjs +3 -3
  511. package/esm2022/widgets/ui/utility-modal/components/readonly-instruction-modal/index.mjs +1 -1
  512. package/esm2022/widgets/ui/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.mjs +3 -3
  513. package/esm2022/widgets/ui/utility-modal/components/readonly-utility-modal/index.mjs +1 -1
  514. package/esm2022/widgets/ui/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.mjs +3 -3
  515. package/esm2022/widgets/ui/utility-modal/components/utility-modal-create/index.mjs +1 -1
  516. package/esm2022/widgets/ui/utility-modal/components/utility-modal-create/utility-modal-create.component.mjs +3 -3
  517. package/esm2022/widgets/ui/utility-modal/index.mjs +1 -1
  518. package/esm2022/widgets/ui/utility-modal/utility-modal.component.mjs +3 -3
  519. package/esm2022/widgets/ui/utility-modal/utility-modal.options.mjs +1 -1
  520. package/esm2022/widgets/ui/utility-readonly-thumbnail/index.mjs +1 -1
  521. package/esm2022/widgets/ui/utility-readonly-thumbnail/utility-readonly-thumbnail.component.mjs +3 -3
  522. package/esm2022/widgets/ui/utility-thumbnail/index.mjs +1 -1
  523. package/esm2022/widgets/ui/utility-thumbnail/utility-thumbnail.component.mjs +3 -3
  524. package/fesm2022/cuby-ui-core.mjs +330 -300
  525. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  526. package/fonts/Inter-Bold.svg +25443 -25443
  527. package/fonts/Inter-Medium.svg +25400 -25400
  528. package/fonts/Inter-Regular.svg +24341 -24341
  529. package/fonts/Inter-SemiBold.svg +25459 -25459
  530. package/fonts/Nunito-ExtraBoldItalic.svg +9508 -9508
  531. package/package.json +4 -4
  532. package/providers/auth.options.d.ts +1 -1
  533. package/styles/direcive/flex-container.scss +3 -3
  534. package/styles/fonts.scss +69 -69
  535. package/styles/global.scss +10 -10
  536. package/styles/mixins/buttons.scss +13 -13
  537. package/styles/mixins/flex.scss +10 -10
  538. package/styles/mixins/headings.scss +115 -115
  539. package/styles/mixins/inputs.scss +101 -101
  540. package/styles/mixins/lists.scss +41 -41
  541. package/styles/mixins/paddings.scss +35 -35
  542. package/styles/mixins/shadows.scss +42 -42
  543. package/styles/mixins/texts.scss +224 -224
  544. package/styles/theme.scss +608 -608
  545. package/styles/variables/colors.scss +396 -396
  546. package/styles/variables/fonts.scss +2 -2
  547. package/widgets/ui/user-action-context-menu/activity-item/activity-item.component.d.ts +1 -1
package/README.md CHANGED
@@ -1,811 +1,811 @@
1
- # Cuby UI - агентская документация (RU)
2
-
3
- Документ для кодовых агентов. Описывает публичный API пакета `@cuby-ui/core`, а также примеры использования.
4
-
5
- Критически важно:
6
- - Оверлеи (`cui-dialogs`, `cui-alerts`, `cui-select`, `cui-context-menu`) требуют наличия `cui-root` в DOM.
7
- - `open()` у `CuiAlertService` и `CuiDialogService` выполняется только после подписки на Observable.
8
-
9
- ## Оглавление
10
- - [Компоненты (Core)](#компоненты-core)
11
- - [Директивы (Core)](#директивы-core)
12
- - [Сервисы (Core)](#сервисы-core)
13
- - [Интерфейсы и типы (Core)](#интерфейсы-и-типы-core)
14
- - [Утилиты (Core)](#утилиты-core)
15
- - [Темы и стили](#темы-и-стили)
16
- - [Рецепты (How-to)](#рецепты-how-to)
17
- - [Анти-паттерны](#анти-паттерны)
18
- - [FAQ / типовые ошибки](#faq--типовые-ошибки)
19
- - [Структура репозитория](#структура-репозитория)
20
- - [Линт и форматирование](#линт-и-форматирование)
21
- - [Версии и совместимость](#версии-и-совместимость)
22
-
23
- ## Компоненты (Core)
24
-
25
- ### Feature: CuiAccordionComponent (`cui-accordion`)
26
- Описание: контейнер для набора `cui-accordion-item`, управляет только разметкой.
27
- Публичный API:
28
- - Модуль: `CuiAccordionModule`
29
- - Inputs: нет
30
- - Outputs: нет
31
- Пример:
32
- ```html
33
- <cui-accordion>
34
- <cui-accordion-item>Заголовок
35
- <ng-container cuiAccordionItemContent>Контент</ng-container>
36
- </cui-accordion-item>
37
- </cui-accordion>
38
- ```
39
-
40
- ### Feature: CuiAccordionItemComponent (`cui-accordion-item`)
41
- Описание: элемент аккордеона с кнопкой переключения и скрываемым контентом.
42
- Публичный API:
43
- - Модуль: `CuiAccordionModule`
44
- - Inputs: `isOpen: boolean` (по умолчанию `true`)
45
- - Outputs: `isOpenChange: EventEmitter<boolean>`
46
- - Контент: тело передается через `cuiAccordionItemContent`
47
- Пример:
48
- ```html
49
- <cui-accordion-item [(isOpen)]="isOpen">
50
- Заголовок
51
- <ng-container cuiAccordionItemContent>Тело</ng-container>
52
- </cui-accordion-item>
53
- ```
54
-
55
- ### Feature: CuiAlertService
56
- Описание: сервис для показа алертов поверх UI, построен на `CuiPopoverService`.
57
- Публичный API:
58
- - Методы: `open(content: string, options?: Partial<CuiAlertOptions>)`, `closeAll()`
59
- - Опции: `label`, `needAutoClose`, `isCloseable`, `position`, `resizing`, `status`, `mode`
60
- - Типы: `CuiAlertOptions`, `CuiAlertPosition`, `CuiAlertResizing`
61
- - Константы/токены: `CUI_ALERT_DEFAULT_OPTIONS`, `CUI_ALERT_OPTIONS`, `CUI_ALERTS`, `CUI_ALERT_CONTEXT`
62
- Пример:
63
- ```ts
64
- const alerts = inject(CuiAlertService);
65
-
66
- alerts.open('Задача создана', {
67
- status: 'success',
68
- label: 'Готово',
69
- position: 'right',
70
- }).subscribe();
71
- ```
72
- Пример (переопределение дефолтов):
73
- ```ts
74
- providers: [
75
- { provide: CUI_ALERT_OPTIONS, useValue: { position: 'center', needAutoClose: false } }
76
- ]
77
- ```
78
-
79
- ### Feature: CuiAlertsComponent (`cui-alerts`)
80
- Описание: контейнер для отрисовки списка алертов. Обычно не нужен напрямую, используется в `cui-root`.
81
- Публичный API:
82
- - Модуль: `CuiAlertModule`
83
- - Inputs/Outputs: нет
84
- Пример:
85
- ```html
86
- <cui-alerts></cui-alerts>
87
- ```
88
-
89
- ### Feature: CuiAlertComponent (`cui-alert`)
90
- Описание: рендер одного алерта, требует `CUI_ALERT_CONTEXT`. Обычно используется только контейнером.
91
- Публичный API:
92
- - Модуль: `CuiAlertModule`
93
- - Inputs/Outputs: нет
94
- Пример:
95
- ```ts
96
- providers: [{ provide: CUI_ALERT_CONTEXT, useValue: alertContext }]
97
- ```
98
-
99
- ### Feature: CuiBadgeComponent (`cui-badge`)
100
- Описание: бейдж с цветом и размером; опциональная иконка слева — через проекцию с атрибутом `cuiBadgeIcon`.
101
- Публичный API:
102
- - Модуль: `CuiBadgeModule`
103
- - Inputs: `color`, `size`, `variant`
104
- - `color`: `light-blue | yellow | green | gray | dark-gray | red | violet` (и др. из `CuiBadgeColor`)
105
- - `size`: `sm | md`
106
- Пример:
107
- ```html
108
- <cui-badge color="green" size="md">
109
- <cui-svg cuiBadgeIcon icon="cuiIconCheckSm" />
110
- Online
111
- </cui-badge>
112
- ```
113
-
114
- Цвет иконки по умолчанию совпадает с акцентом баджа (`--cui-badge-accent`). Свой цвет — через input `color` у `cui-svg`.
115
-
116
- ### Feature: CuiBannerComponent (`cui-banner`)
117
- Описание: баннер для статуса/уведомлений с действием и закрытием.
118
- Публичный API:
119
- - Модуль: `CuiBannerModule`
120
- - Inputs: `status`, `isCloseable`, `label`, `actionButtonText`
121
- - Outputs: `actionButtonClicked`, `closed`
122
- - Типы: `CuiBannerOptions`, `CuiBannerIconOptions`
123
- - Константы/токены: `CUI_BANNER_DEFAULT_OPTIONS`, `CUI_BANNER_OPTIONS`
124
- Пример:
125
- ```html
126
- <cui-banner
127
- label="Сохранено"
128
- status="success"
129
- actionButtonText="Отменить"
130
- (actionButtonClicked)="onUndo()"
131
- (closed)="onDismiss()"
132
- >
133
- Запись обновлена
134
- </cui-banner>
135
- ```
136
-
137
- ### Feature: CuiBreadcrumbsComponent (`cui-breadcrumbs`)
138
- Описание: контейнер хлебных крошек, использует `*cuiItem`.
139
- Публичный API:
140
- - Модуль: `CuiBreadcrumbsModule`
141
- - Inputs/Outputs: нет
142
- Пример:
143
- ```html
144
- <cui-breadcrumbs>
145
- <a cuiBreadcrumb *cuiItem>Главная</a>
146
- <a cuiBreadcrumb *cuiItem>Каталог</a>
147
- <a cuiBreadcrumb *cuiItem>Товар</a>
148
- </cui-breadcrumbs>
149
- ```
150
-
151
- ### Feature: CuiBreadcrumbComponent (`[cuiBreadcrumb]`)
152
- Описание: элемент хлебных крошек (обычно `a`), стиль задается директивой.
153
- Публичный API:
154
- - Модуль: `CuiBreadcrumbsModule`
155
- - Inputs: `isLast: boolean` (если нужно вручную пометить последний)
156
- Пример:
157
- ```html
158
- <a cuiBreadcrumb *cuiItem [isLast]="true">Текущая</a>
159
- ```
160
-
161
- ### Feature: CuiButtonComponent (`button[cuiButton], a[cuiButton]`)
162
- Описание: кнопка с набором appearance/size/shape и иконками.
163
- Публичный API:
164
- - Модуль: `CuiButtonModule`
165
- - Inputs: `appearance`, `size`, `shape`, `disabled`, `isLoaderShown`, `icon`, `iconRight`
166
- - `appearance`: `action | secondary | outlined | outlined-gray | ghost | flat | destructive | link`
167
- - `size`: `xxs | xs | sm | md`
168
- - Типы: `CuiButtonOptions`
169
- - Константы/токены: `CUI_BUTTON_DEFAULT_OPTIONS`, `CUI_BUTTON_OPTIONS`
170
- Пример:
171
- ```html
172
- <button
173
- cuiButton
174
- appearance="secondary"
175
- size="sm"
176
- icon="cuiIconPlus"
177
- [isLoaderShown]="isSaving"
178
- >
179
- Создать
180
- </button>
181
- ```
182
-
183
- ### Feature: CuiButtonGroupComponent (`cui-button-group`)
184
- Описание: группировка кнопок `cuiButton` в одну линию.
185
- Публичный API:
186
- - Модуль: `CuiButtonGroupModule`
187
- - Inputs/Outputs: нет
188
- Пример:
189
- ```html
190
- <cui-button-group>
191
- <button cuiButton icon="cuiIconPlus"></button>
192
- <button cuiButton icon="cuiIconCheck"></button>
193
- </cui-button-group>
194
- ```
195
-
196
- ### Feature: CuiCheckboxComponent (`input[type="checkbox"][cuiCheckbox]`)
197
- Описание: стилизованный checkbox, логика остается нативной.
198
- Публичный API:
199
- - Модуль: `CuiCheckboxModule`
200
- - Inputs/Outputs: нет
201
- Пример:
202
- ```html
203
- <input cuiCheckbox type="checkbox" [formControl]="flagControl">
204
- ```
205
-
206
- ### Feature: CuiContextMenuComponent (`cui-context-menu[items][target]`)
207
- Описание: контекстное меню, привязанное к `target`, рендерится в `cui-root`.
208
- Публичный API:
209
- - Модуль: `CuiContextMenuModule`
210
- - Inputs: `items: CuiContextMenuItem[]`, `target: HTMLElement`
211
- Пример:
212
- ```html
213
- <button cuiButton cuiElement #btn="elementRef">...</button>
214
- <cui-context-menu [target]="btn.nativeElement" [items]="menuItems"></cui-context-menu>
215
- ```
216
-
217
- ### Feature: CuiDialogService
218
- Описание: сервис модальных диалогов. Контент может быть компонентом, шаблоном или строкой.
219
- Публичный API:
220
- - Методы: `open(content, options?)`, `closeAll()`
221
- - Опции: `size: 'xl' | 'auto'`, `data`, `dismissible`, `injector`
222
- - Типы: `CuiDialogOptions`, `CuiDialogContext`, `CuiDialogSize`
223
- - Константы/токены: `CUI_DIALOG_DEFAULT_OPTIONS`, `CUI_DIALOG_OPTIONS`, `CUI_DIALOGS`, `CUI_DIALOG_CONTEXT`
224
- Пример:
225
- ```ts
226
- const dialogs = inject(CuiDialogService);
227
-
228
- dialogs.open(ModalComponent, { size: 'xl', data: { id: 123 } })
229
- .subscribe(result => console.log(result));
230
- ```
231
-
232
- ### Feature: CuiDialogsComponent (`cui-dialogs`)
233
- Описание: контейнер для всех открытых диалогов. Обычно используется через `cui-root`.
234
- Публичный API:
235
- - Модуль: `CuiDialogModule`
236
- - Inputs/Outputs: нет
237
- Пример:
238
- ```html
239
- <cui-dialogs></cui-dialogs>
240
- ```
241
-
242
- ### Feature: CuiDialogComponent (`cui-dialog`)
243
- Описание: базовый компонент диалога, получает контекст из `CUI_DIALOG_CONTEXT`.
244
- Публичный API:
245
- - Модуль: `CuiDialogModule`
246
- - Inputs/Outputs: нет
247
- Пример:
248
- ```ts
249
- const context = inject<CuiDialogContext<MyData>>(CUI_DIALOG_CONTEXT);
250
- context.completeWith({ ok: true });
251
- ```
252
-
253
- ### Feature: CuiDialogHeaderComponent (`header[cuiDialogHeader][heading]`)
254
- Описание: шапка диалога с заголовком (Polymorpheus) и кнопкой закрытия.
255
- Публичный API:
256
- - Модуль: `CuiDialogModule`
257
- - Inputs: `heading`, `headingContext`, `subheading`
258
- - Outputs: `closed`
259
- Пример:
260
- ```html
261
- <header
262
- cuiDialogHeader
263
- [heading]="'Редактирование'"
264
- [subheading]="'Поля обязательны'"
265
- (closed)="context.completeWith()"
266
- ></header>
267
- ```
268
-
269
- ### Feature: CuiDialogActionsComponent (`cui-dialog-actions`)
270
- Описание: контейнер для футера/кнопок диалога.
271
- Публичный API:
272
- - Модуль: `CuiDialogModule`
273
- - Inputs/Outputs: нет
274
- Пример:
275
- ```html
276
- <cui-dialog-actions>
277
- <button cuiButton>Сохранить</button>
278
- <button cuiButton appearance="secondary">Отмена</button>
279
- </cui-dialog-actions>
280
- ```
281
-
282
- ### Feature: CuiFormFieldComponent (`cui-form-field`)
283
- Описание: обертка для поля формы, собирает `cuiLabel`, поле и `cui-hint`.
284
- Публичный API:
285
- - Модуль: `CuiFormFieldModule`
286
- - Inputs/Outputs: нет
287
- Пример:
288
- ```html
289
- <cui-form-field>
290
- <label cuiLabel for="name">Имя</label>
291
- <cui-input-text cuiTextFieldId="name"></cui-input-text>
292
- <cui-hint>Введите полное имя</cui-hint>
293
- </cui-form-field>
294
- ```
295
-
296
- ### Feature: CuiHintComponent (`cui-hint`)
297
- Описание: текстовая подсказка под полем.
298
- Публичный API:
299
- - Модуль: `CuiHintModule`
300
- - Inputs: `hintType: 'info' | 'error'`
301
- Пример:
302
- ```html
303
- <cui-hint hintType="error">Поле обязательно</cui-hint>
304
- ```
305
-
306
- ### Feature: CuiIconButtonComponent (`button[cuiIconButton][icon], a[cuiIconButton][icon]`)
307
- Описание: иконка-кнопка с цветом и hover цветом.
308
- Публичный API:
309
- - Модуль: `CuiIconButtonModule`
310
- - Inputs: `icon`, `color`, `hoverColor`
311
- Пример:
312
- ```html
313
- <button
314
- cuiIconButton
315
- icon="cuiIconTrash"
316
- color="var(--cui-danger)"
317
- hoverColor="var(--cui-red-600)"
318
- ></button>
319
- ```
320
-
321
- ### Feature: CuiInputNumberComponent (`cui-input-number`)
322
- Описание: числовой инпут с маской (maskito), поддерживает min/max/precision.
323
- Публичный API:
324
- - Модуль: `CuiInputNumberModule`
325
- - Inputs: `precision`, `min`, `max`
326
- - Значение: `number | null` через ControlValueAccessor
327
- Пример:
328
- ```html
329
- <cui-input-number
330
- [formControl]="priceControl"
331
- [precision]="2"
332
- [min]="0"
333
- [max]="9999"
334
- cuiTextFieldPlaceholder="Цена"
335
- cuiTextFieldIconLeft="cuiIconSearch"
336
- ></cui-input-number>
337
- ```
338
-
339
- ### Feature: CuiInputPasswordComponent (`cui-input-password`)
340
- Описание: парольный инпут с кнопкой показать/скрыть.
341
- Публичный API:
342
- - Модуль: `CuiInputPasswordModule`
343
- - Inputs: нет (используются `cuiTextField*` директивы)
344
- Пример:
345
- ```html
346
- <cui-input-password
347
- [formControl]="passwordControl"
348
- cuiTextFieldId="password"
349
- cuiTextFieldPlaceholder="Пароль"
350
- ></cui-input-password>
351
- ```
352
-
353
- ### Feature: CuiInputTextComponent (`cui-input-text`)
354
- Описание: текстовый инпут с кнопкой очистки.
355
- Публичный API:
356
- - Модуль: `CuiInputModule` (важно: имя модуля именно такое)
357
- - Inputs: нет (используются `cuiTextField*` директивы)
358
- Пример:
359
- ```html
360
- <cui-input-text
361
- [formControl]="searchControl"
362
- cuiTextFieldId="search"
363
- cuiTextFieldPlaceholder="Поиск"
364
- cuiTextFieldIconLeft="cuiIconSearch"
365
- ></cui-input-text>
366
- ```
367
-
368
- ### Feature: CuiInputTimeComponent (`cui-input-time`)
369
- Описание: ввод времени с маской, значение - `CuiTime`.
370
- Публичный API:
371
- - Модуль: `CuiInputTimeModule`
372
- - Inputs: `mode: CuiTimeMode` (по умолчанию `HH:MM`)
373
- - Типы: `CuiInputTimeOptions`
374
- - Константы/токены: `CUI_INPUT_TIME_DEFAULT_OPTIONS`, `CUI_INPUT_TIME_OPTIONS`
375
- Пример:
376
- ```html
377
- <cui-input-time
378
- [formControl]="timeControl"
379
- mode="HH:MM:SS"
380
- cuiTextFieldPlaceholder="Время"
381
- ></cui-input-time>
382
- ```
383
-
384
- ### Feature: CuiLabelComponent (`label[cuiLabel]`)
385
- Описание: стилизованный label с возможностью показать звездочку.
386
- Публичный API:
387
- - Модуль: `CuiLabelModule`
388
- - Inputs: `isRequired: boolean`
389
- Пример:
390
- ```html
391
- <label cuiLabel [isRequired]="true" for="email">Email</label>
392
- ```
393
-
394
- ### Feature: CuiNotificationComponent (`cui-notification`)
395
- Описание: уведомление со статусом и иконкой, опционально с кнопкой закрытия.
396
- Публичный API:
397
- - Модуль: `CuiNotificationModule`
398
- - Inputs: `status`, `mode`, `isCloseable`
399
- - Outputs: `closed`
400
- - Типы: `CuiNotificationOptions`, `CuiNotificationIcons`, `CuiNotificationIconOptions`
401
- - Константы/токены: `CUI_NOTIFICATION_DEFAULT_OPTIONS`, `CUI_NOTIFICATION_OPTIONS`, `CUI_NOTIFICATION_ICONS`, `CUI_NOTIFICATION_ICON_OPTIONS`, `CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE`, `CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE`
402
- Пример:
403
- ```html
404
- <cui-notification status="success" mode="light" [isCloseable]="true" (closed)="onClosed()">
405
- Успешно сохранено
406
- </cui-notification>
407
- ```
408
-
409
- ### Feature: CuiRadioComponent (`input[type="radio"][cuiRadio]`)
410
- Описание: стилизованный radio, логика остается нативной.
411
- Публичный API:
412
- - Модуль: `CuiRadioModule`
413
- - Inputs/Outputs: нет
414
- Пример:
415
- ```html
416
- <input cuiRadio type="radio" [formControl]="choiceControl" value="a">
417
- ```
418
-
419
- ### Feature: CuiRootComponent (`cui-root`)
420
- Описание: корневой контейнер UI, включает `cui-dialogs` и `cui-alerts`, устанавливает атрибут `cuiTheme`.
421
- Публичный API:
422
- - Модуль: `CuiRootModule`
423
- - Inputs/Outputs: нет
424
- - Константа: `CUI_ROOT_SELECTOR`
425
- Пример:
426
- ```html
427
- <cui-root>
428
- <app-root-content></app-root-content>
429
- </cui-root>
430
- ```
431
-
432
- ### Feature: CuiSelectComponent (`cui-select[options]`)
433
- Описание: селект с выпадающим списком, использует `cui-root` для оверлея.
434
- Публичный API:
435
- - Модуль: `CuiSelectModule`
436
- - Inputs: `options: CuiOption[]`, `defaultOptionText?: string`
437
- - Значение: `unknown` через ControlValueAccessor
438
- Пример:
439
- ```html
440
- <cui-select
441
- [options]="statusOptions"
442
- [formControl]="statusControl"
443
- cuiTextFieldId="status"
444
- cuiTextFieldPlaceholder="Статус"
445
- ></cui-select>
446
- ```
447
-
448
- ### Feature: CuiSvgComponent (`cui-svg[icon]`)
449
- Описание: рендер SVG по имени иконки или по сырому SVG string.
450
- Публичный API:
451
- - Модуль: `CuiSvgModule`
452
- - Inputs: `icon`, `width`, `height`, `strokeWidth`, `color`
453
- Пример:
454
- ```html
455
- <cui-svg icon="cuiIconCheck" [width]="16" [height]="16" color="var(--cui-success)"></cui-svg>
456
- ```
457
-
458
- ### Feature: CuiTabsComponent (`cui-tabs`)
459
- Описание: контейнер табов, управляет активным индексом.
460
- Публичный API:
461
- - Модуль: `CuiTabsModule`
462
- - Inputs: `activeItemIndex: number`
463
- - Outputs: `activeItemIndexChange`
464
- Пример:
465
- ```html
466
- <cui-tabs [(activeItemIndex)]="tabIndex">
467
- <button cuiTab>Общее</button>
468
- <button cuiTab>Настройки</button>
469
- </cui-tabs>
470
- ```
471
-
472
- ### Feature: CuiTabComponent (`button[cuiTab]`)
473
- Описание: кнопка таба, эмитит событие активации.
474
- Публичный API:
475
- - Модуль: `CuiTabsModule`
476
- - Inputs/Outputs: нет
477
- Пример:
478
- ```html
479
- <button cuiTab>Таб</button>
480
- ```
481
-
482
- ### Feature: CuiTextareaComponent (`textarea[cuiTextarea]`)
483
- Описание: стилизованный textarea с авто-ресайзом.
484
- Публичный API:
485
- - Модуль: `CuiTextareaModule`
486
- - Inputs: `rows`, `noBordersAndPaddings`
487
- Пример:
488
- ```html
489
- <textarea
490
- cuiTextarea
491
- [rows]="3"
492
- [noBordersAndPaddings]="false"
493
- [cuiTextFieldIsError]="true"
494
- ></textarea>
495
- ```
496
-
497
- ### Feature: CuiToggleComponent (`input[type="checkbox"][cuiToggle]`)
498
- Описание: стилизованный toggle на базе checkbox.
499
- Публичный API:
500
- - Модуль: `CuiToggleModule`
501
- - Inputs/Outputs: нет
502
- Пример:
503
- ```html
504
- <input cuiToggle type="checkbox" [formControl]="toggleControl">
505
- ```
506
-
507
- ## Директивы (Core)
508
-
509
- ### Feature: CuiTextFieldControllerModule
510
- Описание: модуль с директивами управления полями (`cuiTextField*`). Экспортируется входными компонентами.
511
- Публичный API:
512
- - Экспортирует: `CuiTextFieldIconLeftDirective`, `CuiTextFieldIdDirective`, `CuiTextFieldIsErrorDirective`, `CuiTextFieldPlaceholderDirective`, `CuiTextFieldSizeDirective`
513
- Пример:
514
- ```ts
515
- imports: [CuiTextFieldControllerModule]
516
- ```
517
-
518
- ### Feature: CuiTextFieldIconLeftDirective (`[cuiTextFieldIconLeft]`)
519
- Описание: задает иконку слева для текстовых полей.
520
- Публичный API:
521
- - Input: `cuiTextFieldIconLeft: CuiIcon`
522
- Пример:
523
- ```html
524
- <cui-input-text cuiTextFieldIconLeft="cuiIconSearch"></cui-input-text>
525
- ```
526
-
527
- ### Feature: CuiTextFieldIdDirective (`[cuiTextFieldId]`)
528
- Описание: прокидывает `id` внутрь поля.
529
- Публичный API:
530
- - Input: `cuiTextFieldId: string`
531
- Пример:
532
- ```html
533
- <cui-input-text cuiTextFieldId="search"></cui-input-text>
534
- ```
535
-
536
- ### Feature: CuiTextFieldIsErrorDirective (`[cuiTextFieldIsError]`)
537
- Описание: задает состояние ошибки для поля.
538
- Публичный API:
539
- - Input: `cuiTextFieldIsError: boolean`
540
- Пример:
541
- ```html
542
- <cui-input-text [cuiTextFieldIsError]="hasError"></cui-input-text>
543
- ```
544
-
545
- ### Feature: CuiTextFieldPlaceholderDirective (`[cuiTextFieldPlaceholder]`)
546
- Описание: задает placeholder для поля.
547
- Публичный API:
548
- - Input: `cuiTextFieldPlaceholder: string`
549
- Пример:
550
- ```html
551
- <cui-input-text cuiTextFieldPlaceholder="Введите текст"></cui-input-text>
552
- ```
553
-
554
- ### Feature: CuiTextFieldSizeDirective (`[cuiTextFieldSize]`)
555
- Описание: задает размер поля.
556
- Публичный API:
557
- - Input: `cuiTextFieldSize: 'sm' | 'md'`
558
- Пример:
559
- ```html
560
- <cui-input-text cuiTextFieldSize="md"></cui-input-text>
561
- ```
562
-
563
- ### Feature: CuiTextFieldController
564
- Описание: класс, агрегирующий параметры из `cuiTextField*` директив.
565
- Пример:
566
- ```ts
567
- const controller = inject(CUI_TEXT_FIELD_CONTROLLER);
568
- console.log(controller.size);
569
- ```
570
-
571
- ### Feature: CUI_TEXT_FIELD_CONTROLLER и CUI_TEXT_FILED_CONTROLLER_PROVIDER
572
- Описание: DI токен и провайдер, собирающие параметры из `cuiTextField*` директив в единый контроллер.
573
- Публичный API:
574
- - Токен: `CUI_TEXT_FIELD_CONTROLLER`
575
- - Провайдер: `CUI_TEXT_FILED_CONTROLLER_PROVIDER`
576
- - Токены директив: `CUI_TEXT_FIELD_ICON_LEFT`, `CUI_TEXT_FIELD_ID`, `CUI_TEXT_FIELD_IS_ERROR`, `CUI_TEXT_FIELD_PLACEHOLDER`, `CUI_TEXT_FIELD_SIZE`
577
- Пример:
578
- ```ts
579
- const controller = inject(CUI_TEXT_FIELD_CONTROLLER);
580
- console.log(controller.placeholder);
581
- ```
582
-
583
- ## Сервисы (Core)
584
-
585
- ### Feature: CuiThemeService
586
- Описание: сервис темы, хранит состояние в localStorage и выставляет `cuiTheme` через `CuiRootComponent`.
587
- Публичный API:
588
- - Методы: `next(theme: 'light' | 'dark')`, `switch()`
589
- - Токены/константы: `CUI_THEME`, `CUI_THEME_STORAGE_KEY`, `CUI_THEME_STORAGE_DEFAULT_KEY`, `CUI_DEFAULT_THEME`
590
- Пример:
591
- ```ts
592
- const theme = inject(CuiThemeService);
593
- theme.switch();
594
- ```
595
- Пример (дефолтная тема и ключ хранения):
596
- ```ts
597
- providers: [
598
- { provide: CUI_THEME, useValue: 'dark' },
599
- { provide: CUI_THEME_STORAGE_KEY, useValue: 'myThemeKey' }
600
- ]
601
- ```
602
-
603
- ## Интерфейсы и типы (Core)
604
-
605
- ### Feature: CuiOption
606
- Описание: модель опции для `cui-select`.
607
- Публичный API:
608
- - Поля: `label: string`, `value: unknown`, `isDisabled?: boolean`
609
- Пример:
610
- ```ts
611
- const options: CuiOption[] = [
612
- { label: 'Active', value: 'active' },
613
- { label: 'Archived', value: 'archived', isDisabled: true }
614
- ];
615
- ```
616
-
617
- ### Feature: CuiContextMenuItem
618
- Описание: модель элемента контекстного меню.
619
- Публичный API:
620
- - Поля: `label`, `icon?`, `color?`, `command?`
621
- Пример:
622
- ```ts
623
- const items: CuiContextMenuItem[] = [
624
- { label: 'Edit', icon: 'cuiIconEdit', command: () => onEdit() },
625
- { label: 'Delete', icon: 'cuiIconTrash', color: 'var(--cui-danger)' }
626
- ];
627
- ```
628
-
629
- ### Feature: CuiAppearance* types
630
- Описание: набор типов appearance для кнопок.
631
- Публичный API:
632
- - Значения: `action | secondary | outlined | outlined-gray | ghost | flat | destructive | link`
633
- Пример:
634
- ```ts
635
- const appearance: CuiAppearanceAction = 'action';
636
- ```
637
-
638
- ### Feature: CuiHintType
639
- Описание: тип подсказки `cui-hint`.
640
- Публичный API:
641
- - Значения: `info | error`
642
- Пример:
643
- ```ts
644
- const hintType: CuiHintType = 'error';
645
- ```
646
-
647
- ### Feature: CuiPosition* types
648
- Описание: позиции для алертов.
649
- Публичный API:
650
- - Значения: `center | right`
651
- Пример:
652
- ```ts
653
- const position: CuiPositionCenter = 'center';
654
- ```
655
-
656
- ### Feature: CuiResizing* types
657
- Описание: режимы ресайза для алертов.
658
- Публичный API:
659
- - Значения: `hug | fixed`
660
- Пример:
661
- ```ts
662
- const resizing: CuiResizingFixed = 'fixed';
663
- ```
664
-
665
- ### Feature: CuiShapeRounded
666
- Описание: shape тип для кнопок.
667
- Публичный API:
668
- - Значение: `rounded`
669
- Пример:
670
- ```ts
671
- const shape: CuiShapeRounded = 'rounded';
672
- ```
673
-
674
- ### Feature: CuiSize* types
675
- Описание: типы размеров.
676
- Публичный API:
677
- - Значения: `xxs | xs | sm | md`
678
- Пример:
679
- ```ts
680
- const size: CuiSizeSm = 'sm';
681
- ```
682
-
683
- ### Feature: CuiStatus
684
- Описание: статусы для уведомлений/баннеров.
685
- Публичный API:
686
- - Значения: `success | info | alert | error`
687
- Пример:
688
- ```ts
689
- const status: CuiStatus = 'success';
690
- ```
691
-
692
- ## Утилиты (Core)
693
-
694
- ### Feature: cuiRemoveSpaces
695
- Описание: удаляет все пробелы из строки.
696
- Публичный API:
697
- - Сигнатура: `(value: string) => string`
698
- Пример:
699
- ```ts
700
- cuiRemoveSpaces('a b c'); // "abc"
701
- ```
702
-
703
- ### Feature: cuiReplace
704
- Описание: безопасная замена всех вхождений подстроки.
705
- Публичный API:
706
- - Сигнатура: `(value: string, search: string, replace: string) => string`
707
- Пример:
708
- ```ts
709
- cuiReplace('a.b.c', '.', '-'); // "a-b-c"
710
- ```
711
-
712
- ## Темы и стили
713
-
714
- ### Feature: CSS переменные темы
715
- Описание: базовые и темные токены описаны в `projects/core/styles/theme.scss`. Темная тема задается через атрибут `cuiTheme="dark"`.
716
- Пример:
717
- ```scss
718
- :root {
719
- --cui-main-font: 'Inter', sans-serif;
720
- }
721
- [cuiTheme='dark'] {
722
- --cui-base-0: var(--cui-slate-900);
723
- }
724
- ```
725
-
726
- ### Feature: SCSS переменные и миксины
727
- Описание: `projects/core/styles/global.scss` форвардит миксины и переменные (`mixins/*`, `variables/*`).
728
- Пример:
729
- ```scss
730
- @use '@cuby-ui/core/styles/global' as cui;
731
-
732
- .btn-reset {
733
- @include cui.cui-clear-button();
734
- }
735
- ```
736
-
737
- ## Рецепты (How-to)
738
-
739
- ### Feature: Рецепт - показать alert
740
- Описание: использовать `CuiAlertService` и убедиться, что есть `cui-root`.
741
- Пример:
742
- ```ts
743
- const alerts = inject(CuiAlertService);
744
- alerts.open('Все ок', { status: 'success', label: 'Готово' }).subscribe();
745
- ```
746
-
747
- ### Feature: Рецепт - открыть диалог с данными
748
- Описание: открыть компонент и прочитать `data` через `CUI_DIALOG_CONTEXT`.
749
- Пример:
750
- ```ts
751
- dialogs.open(EditDialogComponent, { size: 'xl', data: { id: 42 } }).subscribe();
752
- ```
753
- ```ts
754
- const context = inject<CuiDialogContext<{ id: number }>>(CUI_DIALOG_CONTEXT);
755
- console.log(context.data.id);
756
- ```
757
-
758
- ### Feature: Рецепт - использовать `cui-select` с ошибкой
759
- Описание: задать опции и состояние ошибки через `cuiTextFieldIsError`.
760
- Пример:
761
- ```html
762
- <cui-select
763
- [options]="options"
764
- [formControl]="control"
765
- [cuiTextFieldIsError]="hasError"
766
- ></cui-select>
767
- ```
768
-
769
- ### Feature: Рецепт - переопределить дефолтные опции кнопки
770
- Описание: использовать `CUI_BUTTON_OPTIONS` в провайдерах.
771
- Пример:
772
- ```ts
773
- providers: [
774
- { provide: CUI_BUTTON_OPTIONS, useValue: { appearance: 'secondary', size: 'md', shape: 'rounded' } }
775
- ]
776
- ```
777
-
778
- ### Feature: Рецепт - переключение темы
779
- Описание: вызвать `switch()` у `CuiThemeService`.
780
- Пример:
781
- ```ts
782
- inject(CuiThemeService).switch();
783
- ```
784
-
785
- ## Анти-паттерны
786
- - Анти-паттерн: использовать `CuiAlertService.open()` без подписки. Описание: Observable ленивый, без `subscribe()` алерт не создается.
787
- - Анти-паттерн: использовать `cui-select` или `cui-context-menu` без `cui-root`. Описание: оверлей некуда монтировать.
788
- - Анти-паттерн: передавать `ElementRef` вместо `HTMLElement` в `target`. Описание: компонент ожидает `HTMLElement`.
789
- - Анти-паттерн: передавать строку вместо `CuiTime` в `cui-input-time`. Описание: компонент ожидает `CuiTime`.
790
-
791
- ## FAQ / типовые ошибки
792
- - Вопрос: почему не открывается диалог? Ответ: проверьте, что вы подписались на `open()` и в DOM есть `cui-root`.
793
- - Вопрос: почему не видно placeholder в `cui-input-text`? Ответ: используйте `cuiTextFieldPlaceholder`, а не нативный `placeholder`.
794
- - Вопрос: почему select не закрывается? Ответ: убедитесь, что есть `cui-root` и не блокируется событие клика снаружи.
795
-
796
- ## Структура репозитория
797
- - `projects/core` - UI компоненты, стили, темы.
798
- - `projects/cdk` - утилиты, директивы, сервисы.
799
- - `projects/icons` - SVG иконки и типы.
800
- - `projects/test` - sandbox приложение с примерами.
801
- - `angular.json` - конфигурация Angular workspace.
802
-
803
- ## Линт и форматирование
804
- - Явных конфигураций ESLint/Prettier в репозитории нет. Ориентируйтесь на текущий стиль файлов и типичные правила Angular/TypeScript.
805
-
806
- ## Версии и совместимость
807
- - Angular: `>=15.0.0`
808
- - RxJS: `>=7.0.0`
809
- - `@maskito/*`: `^2.5.0` (input number/time)
810
- - `@tinkoff/ng-polymorpheus`: `^4.3.0` (dialog header)
811
- - Пакеты `@cuby-ui/*`: версия `0.0.177` (см. `projects/*/package.json`)
1
+ # Cuby UI - агентская документация (RU)
2
+
3
+ Документ для кодовых агентов. Описывает публичный API пакета `@cuby-ui/core`, а также примеры использования.
4
+
5
+ Критически важно:
6
+ - Оверлеи (`cui-dialogs`, `cui-alerts`, `cui-select`, `cui-context-menu`) требуют наличия `cui-root` в DOM.
7
+ - `open()` у `CuiAlertService` и `CuiDialogService` выполняется только после подписки на Observable.
8
+
9
+ ## Оглавление
10
+ - [Компоненты (Core)](#компоненты-core)
11
+ - [Директивы (Core)](#директивы-core)
12
+ - [Сервисы (Core)](#сервисы-core)
13
+ - [Интерфейсы и типы (Core)](#интерфейсы-и-типы-core)
14
+ - [Утилиты (Core)](#утилиты-core)
15
+ - [Темы и стили](#темы-и-стили)
16
+ - [Рецепты (How-to)](#рецепты-how-to)
17
+ - [Анти-паттерны](#анти-паттерны)
18
+ - [FAQ / типовые ошибки](#faq--типовые-ошибки)
19
+ - [Структура репозитория](#структура-репозитория)
20
+ - [Линт и форматирование](#линт-и-форматирование)
21
+ - [Версии и совместимость](#версии-и-совместимость)
22
+
23
+ ## Компоненты (Core)
24
+
25
+ ### Feature: CuiAccordionComponent (`cui-accordion`)
26
+ Описание: контейнер для набора `cui-accordion-item`, управляет только разметкой.
27
+ Публичный API:
28
+ - Модуль: `CuiAccordionModule`
29
+ - Inputs: нет
30
+ - Outputs: нет
31
+ Пример:
32
+ ```html
33
+ <cui-accordion>
34
+ <cui-accordion-item>Заголовок
35
+ <ng-container cuiAccordionItemContent>Контент</ng-container>
36
+ </cui-accordion-item>
37
+ </cui-accordion>
38
+ ```
39
+
40
+ ### Feature: CuiAccordionItemComponent (`cui-accordion-item`)
41
+ Описание: элемент аккордеона с кнопкой переключения и скрываемым контентом.
42
+ Публичный API:
43
+ - Модуль: `CuiAccordionModule`
44
+ - Inputs: `isOpen: boolean` (по умолчанию `true`)
45
+ - Outputs: `isOpenChange: EventEmitter<boolean>`
46
+ - Контент: тело передается через `cuiAccordionItemContent`
47
+ Пример:
48
+ ```html
49
+ <cui-accordion-item [(isOpen)]="isOpen">
50
+ Заголовок
51
+ <ng-container cuiAccordionItemContent>Тело</ng-container>
52
+ </cui-accordion-item>
53
+ ```
54
+
55
+ ### Feature: CuiAlertService
56
+ Описание: сервис для показа алертов поверх UI, построен на `CuiPopoverService`.
57
+ Публичный API:
58
+ - Методы: `open(content: string, options?: Partial<CuiAlertOptions>)`, `closeAll()`
59
+ - Опции: `label`, `needAutoClose`, `isCloseable`, `position`, `resizing`, `status`, `mode`
60
+ - Типы: `CuiAlertOptions`, `CuiAlertPosition`, `CuiAlertResizing`
61
+ - Константы/токены: `CUI_ALERT_DEFAULT_OPTIONS`, `CUI_ALERT_OPTIONS`, `CUI_ALERTS`, `CUI_ALERT_CONTEXT`
62
+ Пример:
63
+ ```ts
64
+ const alerts = inject(CuiAlertService);
65
+
66
+ alerts.open('Задача создана', {
67
+ status: 'success',
68
+ label: 'Готово',
69
+ position: 'right',
70
+ }).subscribe();
71
+ ```
72
+ Пример (переопределение дефолтов):
73
+ ```ts
74
+ providers: [
75
+ { provide: CUI_ALERT_OPTIONS, useValue: { position: 'center', needAutoClose: false } }
76
+ ]
77
+ ```
78
+
79
+ ### Feature: CuiAlertsComponent (`cui-alerts`)
80
+ Описание: контейнер для отрисовки списка алертов. Обычно не нужен напрямую, используется в `cui-root`.
81
+ Публичный API:
82
+ - Модуль: `CuiAlertModule`
83
+ - Inputs/Outputs: нет
84
+ Пример:
85
+ ```html
86
+ <cui-alerts></cui-alerts>
87
+ ```
88
+
89
+ ### Feature: CuiAlertComponent (`cui-alert`)
90
+ Описание: рендер одного алерта, требует `CUI_ALERT_CONTEXT`. Обычно используется только контейнером.
91
+ Публичный API:
92
+ - Модуль: `CuiAlertModule`
93
+ - Inputs/Outputs: нет
94
+ Пример:
95
+ ```ts
96
+ providers: [{ provide: CUI_ALERT_CONTEXT, useValue: alertContext }]
97
+ ```
98
+
99
+ ### Feature: CuiBadgeComponent (`cui-badge`)
100
+ Описание: бейдж с цветом и размером; опциональная иконка слева — через проекцию с атрибутом `cuiBadgeIcon`.
101
+ Публичный API:
102
+ - Модуль: `CuiBadgeModule`
103
+ - Inputs: `color`, `size`, `variant`
104
+ - `color`: `light-blue | yellow | green | gray | dark-gray | red | violet` (и др. из `CuiBadgeColor`)
105
+ - `size`: `sm | md`
106
+ Пример:
107
+ ```html
108
+ <cui-badge color="green" size="md">
109
+ <cui-svg cuiBadgeIcon icon="cuiIconCheckSm" />
110
+ Online
111
+ </cui-badge>
112
+ ```
113
+
114
+ Цвет иконки по умолчанию совпадает с акцентом баджа (`--cui-badge-accent`). Свой цвет — через input `color` у `cui-svg`.
115
+
116
+ ### Feature: CuiBannerComponent (`cui-banner`)
117
+ Описание: баннер для статуса/уведомлений с действием и закрытием.
118
+ Публичный API:
119
+ - Модуль: `CuiBannerModule`
120
+ - Inputs: `status`, `isCloseable`, `label`, `actionButtonText`
121
+ - Outputs: `actionButtonClicked`, `closed`
122
+ - Типы: `CuiBannerOptions`, `CuiBannerIconOptions`
123
+ - Константы/токены: `CUI_BANNER_DEFAULT_OPTIONS`, `CUI_BANNER_OPTIONS`
124
+ Пример:
125
+ ```html
126
+ <cui-banner
127
+ label="Сохранено"
128
+ status="success"
129
+ actionButtonText="Отменить"
130
+ (actionButtonClicked)="onUndo()"
131
+ (closed)="onDismiss()"
132
+ >
133
+ Запись обновлена
134
+ </cui-banner>
135
+ ```
136
+
137
+ ### Feature: CuiBreadcrumbsComponent (`cui-breadcrumbs`)
138
+ Описание: контейнер хлебных крошек, использует `*cuiItem`.
139
+ Публичный API:
140
+ - Модуль: `CuiBreadcrumbsModule`
141
+ - Inputs/Outputs: нет
142
+ Пример:
143
+ ```html
144
+ <cui-breadcrumbs>
145
+ <a cuiBreadcrumb *cuiItem>Главная</a>
146
+ <a cuiBreadcrumb *cuiItem>Каталог</a>
147
+ <a cuiBreadcrumb *cuiItem>Товар</a>
148
+ </cui-breadcrumbs>
149
+ ```
150
+
151
+ ### Feature: CuiBreadcrumbComponent (`[cuiBreadcrumb]`)
152
+ Описание: элемент хлебных крошек (обычно `a`), стиль задается директивой.
153
+ Публичный API:
154
+ - Модуль: `CuiBreadcrumbsModule`
155
+ - Inputs: `isLast: boolean` (если нужно вручную пометить последний)
156
+ Пример:
157
+ ```html
158
+ <a cuiBreadcrumb *cuiItem [isLast]="true">Текущая</a>
159
+ ```
160
+
161
+ ### Feature: CuiButtonComponent (`button[cuiButton], a[cuiButton]`)
162
+ Описание: кнопка с набором appearance/size/shape и иконками.
163
+ Публичный API:
164
+ - Модуль: `CuiButtonModule`
165
+ - Inputs: `appearance`, `size`, `shape`, `disabled`, `isLoaderShown`, `icon`, `iconRight`
166
+ - `appearance`: `action | secondary | outlined | outlined-gray | ghost | flat | destructive | link`
167
+ - `size`: `xxs | xs | sm | md`
168
+ - Типы: `CuiButtonOptions`
169
+ - Константы/токены: `CUI_BUTTON_DEFAULT_OPTIONS`, `CUI_BUTTON_OPTIONS`
170
+ Пример:
171
+ ```html
172
+ <button
173
+ cuiButton
174
+ appearance="secondary"
175
+ size="sm"
176
+ icon="cuiIconPlus"
177
+ [isLoaderShown]="isSaving"
178
+ >
179
+ Создать
180
+ </button>
181
+ ```
182
+
183
+ ### Feature: CuiButtonGroupComponent (`cui-button-group`)
184
+ Описание: группировка кнопок `cuiButton` в одну линию.
185
+ Публичный API:
186
+ - Модуль: `CuiButtonGroupModule`
187
+ - Inputs/Outputs: нет
188
+ Пример:
189
+ ```html
190
+ <cui-button-group>
191
+ <button cuiButton icon="cuiIconPlus"></button>
192
+ <button cuiButton icon="cuiIconCheck"></button>
193
+ </cui-button-group>
194
+ ```
195
+
196
+ ### Feature: CuiCheckboxComponent (`input[type="checkbox"][cuiCheckbox]`)
197
+ Описание: стилизованный checkbox, логика остается нативной.
198
+ Публичный API:
199
+ - Модуль: `CuiCheckboxModule`
200
+ - Inputs/Outputs: нет
201
+ Пример:
202
+ ```html
203
+ <input cuiCheckbox type="checkbox" [formControl]="flagControl">
204
+ ```
205
+
206
+ ### Feature: CuiContextMenuComponent (`cui-context-menu[items][target]`)
207
+ Описание: контекстное меню, привязанное к `target`, рендерится в `cui-root`.
208
+ Публичный API:
209
+ - Модуль: `CuiContextMenuModule`
210
+ - Inputs: `items: CuiContextMenuItem[]`, `target: HTMLElement`
211
+ Пример:
212
+ ```html
213
+ <button cuiButton cuiElement #btn="elementRef">...</button>
214
+ <cui-context-menu [target]="btn.nativeElement" [items]="menuItems"></cui-context-menu>
215
+ ```
216
+
217
+ ### Feature: CuiDialogService
218
+ Описание: сервис модальных диалогов. Контент может быть компонентом, шаблоном или строкой.
219
+ Публичный API:
220
+ - Методы: `open(content, options?)`, `closeAll()`
221
+ - Опции: `size: 'xl' | 'auto'`, `data`, `dismissible`, `injector`
222
+ - Типы: `CuiDialogOptions`, `CuiDialogContext`, `CuiDialogSize`
223
+ - Константы/токены: `CUI_DIALOG_DEFAULT_OPTIONS`, `CUI_DIALOG_OPTIONS`, `CUI_DIALOGS`, `CUI_DIALOG_CONTEXT`
224
+ Пример:
225
+ ```ts
226
+ const dialogs = inject(CuiDialogService);
227
+
228
+ dialogs.open(ModalComponent, { size: 'xl', data: { id: 123 } })
229
+ .subscribe(result => console.log(result));
230
+ ```
231
+
232
+ ### Feature: CuiDialogsComponent (`cui-dialogs`)
233
+ Описание: контейнер для всех открытых диалогов. Обычно используется через `cui-root`.
234
+ Публичный API:
235
+ - Модуль: `CuiDialogModule`
236
+ - Inputs/Outputs: нет
237
+ Пример:
238
+ ```html
239
+ <cui-dialogs></cui-dialogs>
240
+ ```
241
+
242
+ ### Feature: CuiDialogComponent (`cui-dialog`)
243
+ Описание: базовый компонент диалога, получает контекст из `CUI_DIALOG_CONTEXT`.
244
+ Публичный API:
245
+ - Модуль: `CuiDialogModule`
246
+ - Inputs/Outputs: нет
247
+ Пример:
248
+ ```ts
249
+ const context = inject<CuiDialogContext<MyData>>(CUI_DIALOG_CONTEXT);
250
+ context.completeWith({ ok: true });
251
+ ```
252
+
253
+ ### Feature: CuiDialogHeaderComponent (`header[cuiDialogHeader][heading]`)
254
+ Описание: шапка диалога с заголовком (Polymorpheus) и кнопкой закрытия.
255
+ Публичный API:
256
+ - Модуль: `CuiDialogModule`
257
+ - Inputs: `heading`, `headingContext`, `subheading`
258
+ - Outputs: `closed`
259
+ Пример:
260
+ ```html
261
+ <header
262
+ cuiDialogHeader
263
+ [heading]="'Редактирование'"
264
+ [subheading]="'Поля обязательны'"
265
+ (closed)="context.completeWith()"
266
+ ></header>
267
+ ```
268
+
269
+ ### Feature: CuiDialogActionsComponent (`cui-dialog-actions`)
270
+ Описание: контейнер для футера/кнопок диалога.
271
+ Публичный API:
272
+ - Модуль: `CuiDialogModule`
273
+ - Inputs/Outputs: нет
274
+ Пример:
275
+ ```html
276
+ <cui-dialog-actions>
277
+ <button cuiButton>Сохранить</button>
278
+ <button cuiButton appearance="secondary">Отмена</button>
279
+ </cui-dialog-actions>
280
+ ```
281
+
282
+ ### Feature: CuiFormFieldComponent (`cui-form-field`)
283
+ Описание: обертка для поля формы, собирает `cuiLabel`, поле и `cui-hint`.
284
+ Публичный API:
285
+ - Модуль: `CuiFormFieldModule`
286
+ - Inputs/Outputs: нет
287
+ Пример:
288
+ ```html
289
+ <cui-form-field>
290
+ <label cuiLabel for="name">Имя</label>
291
+ <cui-input-text cuiTextFieldId="name"></cui-input-text>
292
+ <cui-hint>Введите полное имя</cui-hint>
293
+ </cui-form-field>
294
+ ```
295
+
296
+ ### Feature: CuiHintComponent (`cui-hint`)
297
+ Описание: текстовая подсказка под полем.
298
+ Публичный API:
299
+ - Модуль: `CuiHintModule`
300
+ - Inputs: `hintType: 'info' | 'error'`
301
+ Пример:
302
+ ```html
303
+ <cui-hint hintType="error">Поле обязательно</cui-hint>
304
+ ```
305
+
306
+ ### Feature: CuiIconButtonComponent (`button[cuiIconButton][icon], a[cuiIconButton][icon]`)
307
+ Описание: иконка-кнопка с цветом и hover цветом.
308
+ Публичный API:
309
+ - Модуль: `CuiIconButtonModule`
310
+ - Inputs: `icon`, `color`, `hoverColor`
311
+ Пример:
312
+ ```html
313
+ <button
314
+ cuiIconButton
315
+ icon="cuiIconTrash"
316
+ color="var(--cui-danger)"
317
+ hoverColor="var(--cui-red-600)"
318
+ ></button>
319
+ ```
320
+
321
+ ### Feature: CuiInputNumberComponent (`cui-input-number`)
322
+ Описание: числовой инпут с маской (maskito), поддерживает min/max/precision.
323
+ Публичный API:
324
+ - Модуль: `CuiInputNumberModule`
325
+ - Inputs: `precision`, `min`, `max`
326
+ - Значение: `number | null` через ControlValueAccessor
327
+ Пример:
328
+ ```html
329
+ <cui-input-number
330
+ [formControl]="priceControl"
331
+ [precision]="2"
332
+ [min]="0"
333
+ [max]="9999"
334
+ cuiTextFieldPlaceholder="Цена"
335
+ cuiTextFieldIconLeft="cuiIconSearch"
336
+ ></cui-input-number>
337
+ ```
338
+
339
+ ### Feature: CuiInputPasswordComponent (`cui-input-password`)
340
+ Описание: парольный инпут с кнопкой показать/скрыть.
341
+ Публичный API:
342
+ - Модуль: `CuiInputPasswordModule`
343
+ - Inputs: нет (используются `cuiTextField*` директивы)
344
+ Пример:
345
+ ```html
346
+ <cui-input-password
347
+ [formControl]="passwordControl"
348
+ cuiTextFieldId="password"
349
+ cuiTextFieldPlaceholder="Пароль"
350
+ ></cui-input-password>
351
+ ```
352
+
353
+ ### Feature: CuiInputTextComponent (`cui-input-text`)
354
+ Описание: текстовый инпут с кнопкой очистки.
355
+ Публичный API:
356
+ - Модуль: `CuiInputModule` (важно: имя модуля именно такое)
357
+ - Inputs: нет (используются `cuiTextField*` директивы)
358
+ Пример:
359
+ ```html
360
+ <cui-input-text
361
+ [formControl]="searchControl"
362
+ cuiTextFieldId="search"
363
+ cuiTextFieldPlaceholder="Поиск"
364
+ cuiTextFieldIconLeft="cuiIconSearch"
365
+ ></cui-input-text>
366
+ ```
367
+
368
+ ### Feature: CuiInputTimeComponent (`cui-input-time`)
369
+ Описание: ввод времени с маской, значение - `CuiTime`.
370
+ Публичный API:
371
+ - Модуль: `CuiInputTimeModule`
372
+ - Inputs: `mode: CuiTimeMode` (по умолчанию `HH:MM`)
373
+ - Типы: `CuiInputTimeOptions`
374
+ - Константы/токены: `CUI_INPUT_TIME_DEFAULT_OPTIONS`, `CUI_INPUT_TIME_OPTIONS`
375
+ Пример:
376
+ ```html
377
+ <cui-input-time
378
+ [formControl]="timeControl"
379
+ mode="HH:MM:SS"
380
+ cuiTextFieldPlaceholder="Время"
381
+ ></cui-input-time>
382
+ ```
383
+
384
+ ### Feature: CuiLabelComponent (`label[cuiLabel]`)
385
+ Описание: стилизованный label с возможностью показать звездочку.
386
+ Публичный API:
387
+ - Модуль: `CuiLabelModule`
388
+ - Inputs: `isRequired: boolean`
389
+ Пример:
390
+ ```html
391
+ <label cuiLabel [isRequired]="true" for="email">Email</label>
392
+ ```
393
+
394
+ ### Feature: CuiNotificationComponent (`cui-notification`)
395
+ Описание: уведомление со статусом и иконкой, опционально с кнопкой закрытия.
396
+ Публичный API:
397
+ - Модуль: `CuiNotificationModule`
398
+ - Inputs: `status`, `mode`, `isCloseable`
399
+ - Outputs: `closed`
400
+ - Типы: `CuiNotificationOptions`, `CuiNotificationIcons`, `CuiNotificationIconOptions`
401
+ - Константы/токены: `CUI_NOTIFICATION_DEFAULT_OPTIONS`, `CUI_NOTIFICATION_OPTIONS`, `CUI_NOTIFICATION_ICONS`, `CUI_NOTIFICATION_ICON_OPTIONS`, `CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE`, `CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE`
402
+ Пример:
403
+ ```html
404
+ <cui-notification status="success" mode="light" [isCloseable]="true" (closed)="onClosed()">
405
+ Успешно сохранено
406
+ </cui-notification>
407
+ ```
408
+
409
+ ### Feature: CuiRadioComponent (`input[type="radio"][cuiRadio]`)
410
+ Описание: стилизованный radio, логика остается нативной.
411
+ Публичный API:
412
+ - Модуль: `CuiRadioModule`
413
+ - Inputs/Outputs: нет
414
+ Пример:
415
+ ```html
416
+ <input cuiRadio type="radio" [formControl]="choiceControl" value="a">
417
+ ```
418
+
419
+ ### Feature: CuiRootComponent (`cui-root`)
420
+ Описание: корневой контейнер UI, включает `cui-dialogs` и `cui-alerts`, устанавливает атрибут `cuiTheme`.
421
+ Публичный API:
422
+ - Модуль: `CuiRootModule`
423
+ - Inputs/Outputs: нет
424
+ - Константа: `CUI_ROOT_SELECTOR`
425
+ Пример:
426
+ ```html
427
+ <cui-root>
428
+ <app-root-content></app-root-content>
429
+ </cui-root>
430
+ ```
431
+
432
+ ### Feature: CuiSelectComponent (`cui-select[options]`)
433
+ Описание: селект с выпадающим списком, использует `cui-root` для оверлея.
434
+ Публичный API:
435
+ - Модуль: `CuiSelectModule`
436
+ - Inputs: `options: CuiOption[]`, `defaultOptionText?: string`
437
+ - Значение: `unknown` через ControlValueAccessor
438
+ Пример:
439
+ ```html
440
+ <cui-select
441
+ [options]="statusOptions"
442
+ [formControl]="statusControl"
443
+ cuiTextFieldId="status"
444
+ cuiTextFieldPlaceholder="Статус"
445
+ ></cui-select>
446
+ ```
447
+
448
+ ### Feature: CuiSvgComponent (`cui-svg[icon]`)
449
+ Описание: рендер SVG по имени иконки или по сырому SVG string.
450
+ Публичный API:
451
+ - Модуль: `CuiSvgModule`
452
+ - Inputs: `icon`, `width`, `height`, `strokeWidth`, `color`
453
+ Пример:
454
+ ```html
455
+ <cui-svg icon="cuiIconCheck" [width]="16" [height]="16" color="var(--cui-success)"></cui-svg>
456
+ ```
457
+
458
+ ### Feature: CuiTabsComponent (`cui-tabs`)
459
+ Описание: контейнер табов, управляет активным индексом.
460
+ Публичный API:
461
+ - Модуль: `CuiTabsModule`
462
+ - Inputs: `activeItemIndex: number`
463
+ - Outputs: `activeItemIndexChange`
464
+ Пример:
465
+ ```html
466
+ <cui-tabs [(activeItemIndex)]="tabIndex">
467
+ <button cuiTab>Общее</button>
468
+ <button cuiTab>Настройки</button>
469
+ </cui-tabs>
470
+ ```
471
+
472
+ ### Feature: CuiTabComponent (`button[cuiTab]`)
473
+ Описание: кнопка таба, эмитит событие активации.
474
+ Публичный API:
475
+ - Модуль: `CuiTabsModule`
476
+ - Inputs/Outputs: нет
477
+ Пример:
478
+ ```html
479
+ <button cuiTab>Таб</button>
480
+ ```
481
+
482
+ ### Feature: CuiTextareaComponent (`textarea[cuiTextarea]`)
483
+ Описание: стилизованный textarea с авто-ресайзом.
484
+ Публичный API:
485
+ - Модуль: `CuiTextareaModule`
486
+ - Inputs: `rows`, `noBordersAndPaddings`
487
+ Пример:
488
+ ```html
489
+ <textarea
490
+ cuiTextarea
491
+ [rows]="3"
492
+ [noBordersAndPaddings]="false"
493
+ [cuiTextFieldIsError]="true"
494
+ ></textarea>
495
+ ```
496
+
497
+ ### Feature: CuiToggleComponent (`input[type="checkbox"][cuiToggle]`)
498
+ Описание: стилизованный toggle на базе checkbox.
499
+ Публичный API:
500
+ - Модуль: `CuiToggleModule`
501
+ - Inputs/Outputs: нет
502
+ Пример:
503
+ ```html
504
+ <input cuiToggle type="checkbox" [formControl]="toggleControl">
505
+ ```
506
+
507
+ ## Директивы (Core)
508
+
509
+ ### Feature: CuiTextFieldControllerModule
510
+ Описание: модуль с директивами управления полями (`cuiTextField*`). Экспортируется входными компонентами.
511
+ Публичный API:
512
+ - Экспортирует: `CuiTextFieldIconLeftDirective`, `CuiTextFieldIdDirective`, `CuiTextFieldIsErrorDirective`, `CuiTextFieldPlaceholderDirective`, `CuiTextFieldSizeDirective`
513
+ Пример:
514
+ ```ts
515
+ imports: [CuiTextFieldControllerModule]
516
+ ```
517
+
518
+ ### Feature: CuiTextFieldIconLeftDirective (`[cuiTextFieldIconLeft]`)
519
+ Описание: задает иконку слева для текстовых полей.
520
+ Публичный API:
521
+ - Input: `cuiTextFieldIconLeft: CuiIcon`
522
+ Пример:
523
+ ```html
524
+ <cui-input-text cuiTextFieldIconLeft="cuiIconSearch"></cui-input-text>
525
+ ```
526
+
527
+ ### Feature: CuiTextFieldIdDirective (`[cuiTextFieldId]`)
528
+ Описание: прокидывает `id` внутрь поля.
529
+ Публичный API:
530
+ - Input: `cuiTextFieldId: string`
531
+ Пример:
532
+ ```html
533
+ <cui-input-text cuiTextFieldId="search"></cui-input-text>
534
+ ```
535
+
536
+ ### Feature: CuiTextFieldIsErrorDirective (`[cuiTextFieldIsError]`)
537
+ Описание: задает состояние ошибки для поля.
538
+ Публичный API:
539
+ - Input: `cuiTextFieldIsError: boolean`
540
+ Пример:
541
+ ```html
542
+ <cui-input-text [cuiTextFieldIsError]="hasError"></cui-input-text>
543
+ ```
544
+
545
+ ### Feature: CuiTextFieldPlaceholderDirective (`[cuiTextFieldPlaceholder]`)
546
+ Описание: задает placeholder для поля.
547
+ Публичный API:
548
+ - Input: `cuiTextFieldPlaceholder: string`
549
+ Пример:
550
+ ```html
551
+ <cui-input-text cuiTextFieldPlaceholder="Введите текст"></cui-input-text>
552
+ ```
553
+
554
+ ### Feature: CuiTextFieldSizeDirective (`[cuiTextFieldSize]`)
555
+ Описание: задает размер поля.
556
+ Публичный API:
557
+ - Input: `cuiTextFieldSize: 'sm' | 'md'`
558
+ Пример:
559
+ ```html
560
+ <cui-input-text cuiTextFieldSize="md"></cui-input-text>
561
+ ```
562
+
563
+ ### Feature: CuiTextFieldController
564
+ Описание: класс, агрегирующий параметры из `cuiTextField*` директив.
565
+ Пример:
566
+ ```ts
567
+ const controller = inject(CUI_TEXT_FIELD_CONTROLLER);
568
+ console.log(controller.size);
569
+ ```
570
+
571
+ ### Feature: CUI_TEXT_FIELD_CONTROLLER и CUI_TEXT_FILED_CONTROLLER_PROVIDER
572
+ Описание: DI токен и провайдер, собирающие параметры из `cuiTextField*` директив в единый контроллер.
573
+ Публичный API:
574
+ - Токен: `CUI_TEXT_FIELD_CONTROLLER`
575
+ - Провайдер: `CUI_TEXT_FILED_CONTROLLER_PROVIDER`
576
+ - Токены директив: `CUI_TEXT_FIELD_ICON_LEFT`, `CUI_TEXT_FIELD_ID`, `CUI_TEXT_FIELD_IS_ERROR`, `CUI_TEXT_FIELD_PLACEHOLDER`, `CUI_TEXT_FIELD_SIZE`
577
+ Пример:
578
+ ```ts
579
+ const controller = inject(CUI_TEXT_FIELD_CONTROLLER);
580
+ console.log(controller.placeholder);
581
+ ```
582
+
583
+ ## Сервисы (Core)
584
+
585
+ ### Feature: CuiThemeService
586
+ Описание: сервис темы, хранит состояние в localStorage и выставляет `cuiTheme` через `CuiRootComponent`.
587
+ Публичный API:
588
+ - Методы: `next(theme: 'light' | 'dark')`, `switch()`
589
+ - Токены/константы: `CUI_THEME`, `CUI_THEME_STORAGE_KEY`, `CUI_THEME_STORAGE_DEFAULT_KEY`, `CUI_DEFAULT_THEME`
590
+ Пример:
591
+ ```ts
592
+ const theme = inject(CuiThemeService);
593
+ theme.switch();
594
+ ```
595
+ Пример (дефолтная тема и ключ хранения):
596
+ ```ts
597
+ providers: [
598
+ { provide: CUI_THEME, useValue: 'dark' },
599
+ { provide: CUI_THEME_STORAGE_KEY, useValue: 'myThemeKey' }
600
+ ]
601
+ ```
602
+
603
+ ## Интерфейсы и типы (Core)
604
+
605
+ ### Feature: CuiOption
606
+ Описание: модель опции для `cui-select`.
607
+ Публичный API:
608
+ - Поля: `label: string`, `value: unknown`, `isDisabled?: boolean`
609
+ Пример:
610
+ ```ts
611
+ const options: CuiOption[] = [
612
+ { label: 'Active', value: 'active' },
613
+ { label: 'Archived', value: 'archived', isDisabled: true }
614
+ ];
615
+ ```
616
+
617
+ ### Feature: CuiContextMenuItem
618
+ Описание: модель элемента контекстного меню.
619
+ Публичный API:
620
+ - Поля: `label`, `icon?`, `color?`, `command?`
621
+ Пример:
622
+ ```ts
623
+ const items: CuiContextMenuItem[] = [
624
+ { label: 'Edit', icon: 'cuiIconEdit', command: () => onEdit() },
625
+ { label: 'Delete', icon: 'cuiIconTrash', color: 'var(--cui-danger)' }
626
+ ];
627
+ ```
628
+
629
+ ### Feature: CuiAppearance* types
630
+ Описание: набор типов appearance для кнопок.
631
+ Публичный API:
632
+ - Значения: `action | secondary | outlined | outlined-gray | ghost | flat | destructive | link`
633
+ Пример:
634
+ ```ts
635
+ const appearance: CuiAppearanceAction = 'action';
636
+ ```
637
+
638
+ ### Feature: CuiHintType
639
+ Описание: тип подсказки `cui-hint`.
640
+ Публичный API:
641
+ - Значения: `info | error`
642
+ Пример:
643
+ ```ts
644
+ const hintType: CuiHintType = 'error';
645
+ ```
646
+
647
+ ### Feature: CuiPosition* types
648
+ Описание: позиции для алертов.
649
+ Публичный API:
650
+ - Значения: `center | right`
651
+ Пример:
652
+ ```ts
653
+ const position: CuiPositionCenter = 'center';
654
+ ```
655
+
656
+ ### Feature: CuiResizing* types
657
+ Описание: режимы ресайза для алертов.
658
+ Публичный API:
659
+ - Значения: `hug | fixed`
660
+ Пример:
661
+ ```ts
662
+ const resizing: CuiResizingFixed = 'fixed';
663
+ ```
664
+
665
+ ### Feature: CuiShapeRounded
666
+ Описание: shape тип для кнопок.
667
+ Публичный API:
668
+ - Значение: `rounded`
669
+ Пример:
670
+ ```ts
671
+ const shape: CuiShapeRounded = 'rounded';
672
+ ```
673
+
674
+ ### Feature: CuiSize* types
675
+ Описание: типы размеров.
676
+ Публичный API:
677
+ - Значения: `xxs | xs | sm | md`
678
+ Пример:
679
+ ```ts
680
+ const size: CuiSizeSm = 'sm';
681
+ ```
682
+
683
+ ### Feature: CuiStatus
684
+ Описание: статусы для уведомлений/баннеров.
685
+ Публичный API:
686
+ - Значения: `success | info | alert | error`
687
+ Пример:
688
+ ```ts
689
+ const status: CuiStatus = 'success';
690
+ ```
691
+
692
+ ## Утилиты (Core)
693
+
694
+ ### Feature: cuiRemoveSpaces
695
+ Описание: удаляет все пробелы из строки.
696
+ Публичный API:
697
+ - Сигнатура: `(value: string) => string`
698
+ Пример:
699
+ ```ts
700
+ cuiRemoveSpaces('a b c'); // "abc"
701
+ ```
702
+
703
+ ### Feature: cuiReplace
704
+ Описание: безопасная замена всех вхождений подстроки.
705
+ Публичный API:
706
+ - Сигнатура: `(value: string, search: string, replace: string) => string`
707
+ Пример:
708
+ ```ts
709
+ cuiReplace('a.b.c', '.', '-'); // "a-b-c"
710
+ ```
711
+
712
+ ## Темы и стили
713
+
714
+ ### Feature: CSS переменные темы
715
+ Описание: базовые и темные токены описаны в `projects/core/styles/theme.scss`. Темная тема задается через атрибут `cuiTheme="dark"`.
716
+ Пример:
717
+ ```scss
718
+ :root {
719
+ --cui-main-font: 'Inter', sans-serif;
720
+ }
721
+ [cuiTheme='dark'] {
722
+ --cui-base-0: var(--cui-slate-900);
723
+ }
724
+ ```
725
+
726
+ ### Feature: SCSS переменные и миксины
727
+ Описание: `projects/core/styles/global.scss` форвардит миксины и переменные (`mixins/*`, `variables/*`).
728
+ Пример:
729
+ ```scss
730
+ @use '@cuby-ui/core/styles/global' as cui;
731
+
732
+ .btn-reset {
733
+ @include cui.cui-clear-button();
734
+ }
735
+ ```
736
+
737
+ ## Рецепты (How-to)
738
+
739
+ ### Feature: Рецепт - показать alert
740
+ Описание: использовать `CuiAlertService` и убедиться, что есть `cui-root`.
741
+ Пример:
742
+ ```ts
743
+ const alerts = inject(CuiAlertService);
744
+ alerts.open('Все ок', { status: 'success', label: 'Готово' }).subscribe();
745
+ ```
746
+
747
+ ### Feature: Рецепт - открыть диалог с данными
748
+ Описание: открыть компонент и прочитать `data` через `CUI_DIALOG_CONTEXT`.
749
+ Пример:
750
+ ```ts
751
+ dialogs.open(EditDialogComponent, { size: 'xl', data: { id: 42 } }).subscribe();
752
+ ```
753
+ ```ts
754
+ const context = inject<CuiDialogContext<{ id: number }>>(CUI_DIALOG_CONTEXT);
755
+ console.log(context.data.id);
756
+ ```
757
+
758
+ ### Feature: Рецепт - использовать `cui-select` с ошибкой
759
+ Описание: задать опции и состояние ошибки через `cuiTextFieldIsError`.
760
+ Пример:
761
+ ```html
762
+ <cui-select
763
+ [options]="options"
764
+ [formControl]="control"
765
+ [cuiTextFieldIsError]="hasError"
766
+ ></cui-select>
767
+ ```
768
+
769
+ ### Feature: Рецепт - переопределить дефолтные опции кнопки
770
+ Описание: использовать `CUI_BUTTON_OPTIONS` в провайдерах.
771
+ Пример:
772
+ ```ts
773
+ providers: [
774
+ { provide: CUI_BUTTON_OPTIONS, useValue: { appearance: 'secondary', size: 'md', shape: 'rounded' } }
775
+ ]
776
+ ```
777
+
778
+ ### Feature: Рецепт - переключение темы
779
+ Описание: вызвать `switch()` у `CuiThemeService`.
780
+ Пример:
781
+ ```ts
782
+ inject(CuiThemeService).switch();
783
+ ```
784
+
785
+ ## Анти-паттерны
786
+ - Анти-паттерн: использовать `CuiAlertService.open()` без подписки. Описание: Observable ленивый, без `subscribe()` алерт не создается.
787
+ - Анти-паттерн: использовать `cui-select` или `cui-context-menu` без `cui-root`. Описание: оверлей некуда монтировать.
788
+ - Анти-паттерн: передавать `ElementRef` вместо `HTMLElement` в `target`. Описание: компонент ожидает `HTMLElement`.
789
+ - Анти-паттерн: передавать строку вместо `CuiTime` в `cui-input-time`. Описание: компонент ожидает `CuiTime`.
790
+
791
+ ## FAQ / типовые ошибки
792
+ - Вопрос: почему не открывается диалог? Ответ: проверьте, что вы подписались на `open()` и в DOM есть `cui-root`.
793
+ - Вопрос: почему не видно placeholder в `cui-input-text`? Ответ: используйте `cuiTextFieldPlaceholder`, а не нативный `placeholder`.
794
+ - Вопрос: почему select не закрывается? Ответ: убедитесь, что есть `cui-root` и не блокируется событие клика снаружи.
795
+
796
+ ## Структура репозитория
797
+ - `projects/core` - UI компоненты, стили, темы.
798
+ - `projects/cdk` - утилиты, директивы, сервисы.
799
+ - `projects/icons` - SVG иконки и типы.
800
+ - `projects/test` - sandbox приложение с примерами.
801
+ - `angular.json` - конфигурация Angular workspace.
802
+
803
+ ## Линт и форматирование
804
+ - Явных конфигураций ESLint/Prettier в репозитории нет. Ориентируйтесь на текущий стиль файлов и типичные правила Angular/TypeScript.
805
+
806
+ ## Версии и совместимость
807
+ - Angular: `>=15.0.0`
808
+ - RxJS: `>=7.0.0`
809
+ - `@maskito/*`: `^2.5.0` (input number/time)
810
+ - `@tinkoff/ng-polymorpheus`: `^4.3.0` (dialog header)
811
+ - Пакеты `@cuby-ui/*`: версия `0.0.177` (см. `projects/*/package.json`)