@koobiq/components 20.4.1 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (771) hide show
  1. package/accordion/accordion-trigger.scss +3 -10
  2. package/accordion/accordion.scss +4 -6
  3. package/actions-panel/actions-panel-container.scss +45 -1
  4. package/alert/alert.component.scss +3 -2
  5. package/app-switcher/_app-switcher-theme.scss +0 -4
  6. package/app-switcher/app-switcher-dropdown-app.scss +3 -2
  7. package/app-switcher/app-switcher-dropdown-site.scss +2 -1
  8. package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
  9. package/app-switcher/app-switcher-tokens.scss +15 -0
  10. package/app-switcher/app-switcher.scss +14 -4
  11. package/autocomplete/autocomplete.scss +7 -6
  12. package/badge/badge.component.scss +5 -8
  13. package/breadcrumbs/breadcrumbs.scss +25 -10
  14. package/button/_button-base.scss +30 -7
  15. package/button/_button-theme.scss +16 -0
  16. package/button/button-group.scss +7 -0
  17. package/button/button-tokens.scss +0 -2
  18. package/button/button.scss +34 -2
  19. package/button-toggle/_button-toggle-theme.scss +7 -2
  20. package/button-toggle/button-toggle.scss +65 -15
  21. package/checkbox/_checkbox-theme.scss +4 -3
  22. package/checkbox/checkbox.scss +3 -6
  23. package/clamped-text/clamped-text.scss +6 -2
  24. package/code-block/code-block-tokens.scss +0 -224
  25. package/code-block/code-block.scss +20 -9
  26. package/content-panel/content-panel-aside.scss +3 -2
  27. package/content-panel/content-panel-container.scss +37 -0
  28. package/content-panel/content-panel.scss +4 -3
  29. package/core/highlight/_highlight-theme.scss +3 -1
  30. package/core/option/action-container.scss +2 -2
  31. package/core/option/action.scss +2 -1
  32. package/core/option/option.scss +2 -1
  33. package/core/pop-up/_pop-up.scss +0 -37
  34. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
  35. package/core/styles/_core.scss +3 -0
  36. package/core/styles/_koobiq-theme.scss +5 -6
  37. package/core/styles/common/_animation.scss +44 -16
  38. package/core/styles/common/_groups-mixins.scss +21 -19
  39. package/core/styles/common/_groups.scss +4 -32
  40. package/core/styles/common/_index.scss +0 -2
  41. package/core/styles/common/_link.scss +117 -0
  42. package/core/styles/common/_list.scss +0 -26
  43. package/core/styles/common/_overlay.scss +8 -10
  44. package/core/styles/common/_rtl.scss +0 -14
  45. package/core/styles/common/_select.scss +33 -15
  46. package/core/styles/common/_squircle.scss +63 -0
  47. package/core/styles/common/_tokens.scss +0 -11
  48. package/core/styles/common/_vendor-prefixes.scss +0 -20
  49. package/core/styles/functions/_timing.scss +0 -22
  50. package/core/styles/theming/_scrollbar-theme.scss +6 -1
  51. package/core/styles/theming/_theming.scss +13 -65
  52. package/core/styles/typography/_index.scss +0 -1
  53. package/core/styles/typography/_typography.scss +0 -143
  54. package/core/styles/visual/_body.scss +1 -6
  55. package/core/styles/visual/_layout.scss +0 -12
  56. package/datepicker/calendar-body.scss +3 -1
  57. package/datepicker/calendar-header.scss +0 -1
  58. package/datepicker/datepicker-content.scss +33 -1
  59. package/datepicker/datepicker-toggle.scss +0 -38
  60. package/dl/dl-tokens.scss +10 -0
  61. package/dl/dl.scss +113 -13
  62. package/dropdown/_dropdown-theme.scss +4 -16
  63. package/dropdown/dropdown-item.scss +4 -10
  64. package/dropdown/dropdown.scss +2 -1
  65. package/empty-state/_empty-state-theme.scss +10 -4
  66. package/empty-state/empty-state-tokens.scss +4 -4
  67. package/empty-state/empty-state.scss +4 -0
  68. package/fesm2022/koobiq-components-accordion.mjs +347 -229
  69. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
  71. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-alert.mjs +39 -39
  73. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
  75. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
  77. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-badge.mjs +46 -48
  79. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
  81. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
  83. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-button.mjs +332 -116
  85. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-checkbox.mjs +172 -132
  87. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
  89. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-code-block.mjs +755 -601
  91. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-content-panel.mjs +260 -143
  93. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-core.mjs +4342 -1595
  95. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
  97. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-divider.mjs +73 -36
  99. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-dl.mjs +447 -89
  101. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-dropdown.mjs +703 -599
  103. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
  105. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
  107. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-empty-state.mjs +116 -60
  109. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-file-upload.mjs +550 -290
  111. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-filter-bar.mjs +2810 -2538
  113. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-flag.mjs +79 -24
  115. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-form-field.mjs +389 -525
  117. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-icon.mjs +366 -136
  119. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
  121. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-input.mjs +601 -459
  123. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
  125. package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
  126. package/fesm2022/koobiq-components-link.mjs +328 -125
  127. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-list.mjs +583 -433
  129. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
  131. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-markdown.mjs +55 -78
  133. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-modal.mjs +853 -475
  135. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-navbar.mjs +895 -556
  137. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-notification-center.mjs +680 -310
  139. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
  141. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-popover.mjs +684 -285
  143. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
  145. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
  147. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-radio.mjs +450 -231
  149. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-resizer.mjs +127 -21
  151. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
  153. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
  154. package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
  155. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
  157. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-select.mjs +883 -693
  159. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-sidebar.mjs +207 -88
  161. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
  163. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-skeleton.mjs +815 -41
  165. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-split-button.mjs +109 -88
  167. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
  169. package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
  170. package/fesm2022/koobiq-components-splitter.mjs +890 -501
  171. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-table.mjs +63 -49
  173. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-tabs.mjs +1062 -603
  175. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-tags.mjs +886 -733
  177. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-textarea.mjs +213 -185
  179. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-time-range.mjs +299 -147
  181. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-timepicker.mjs +233 -245
  183. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-timezone.mjs +344 -142
  185. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-title.mjs +229 -145
  187. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-toast.mjs +486 -165
  189. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-toggle.mjs +177 -130
  191. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-tooltip.mjs +657 -214
  193. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-top-bar.mjs +61 -32
  195. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-tree-select.mjs +719 -488
  197. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-tree.mjs +1506 -558
  199. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-username.mjs +290 -135
  201. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  202. package/file-upload/dropzone.scss +31 -3
  203. package/file-upload/file-upload-tokens.scss +2 -22
  204. package/file-upload/file-upload.scss +6 -0
  205. package/file-upload/multiple-file-upload.component.scss +14 -12
  206. package/file-upload/single-file-upload.component.scss +3 -2
  207. package/filter-bar/filters.scss +7 -0
  208. package/filter-bar/pipes/base-pipe.scss +3 -3
  209. package/filter-bar/pipes/pipe-date.scss +8 -1
  210. package/flag/flag-tokens.scss +22 -0
  211. package/flag/flag.scss +34 -21
  212. package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
  213. package/form-field/_form-field-theme.scss +4 -9
  214. package/form-field/cleaner.scss +3 -1
  215. package/form-field/fieldset.scss +3 -4
  216. package/form-field/form-field.scss +26 -21
  217. package/form-field/password-toggle.scss +3 -1
  218. package/icon/_icon-button-theme.scss +7 -0
  219. package/icon/_icon-theme.scss +10 -7
  220. package/icon/icon-button.scss +0 -2
  221. package/icon/icon-tokens.scss +12 -9
  222. package/inline-edit/inline-edit.scss +40 -54
  223. package/input/input.scss +4 -0
  224. package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
  225. package/link/deprecated/link-tokens.scss +27 -0
  226. package/link/link-tokens.scss +6 -25
  227. package/link/link.scss +137 -0
  228. package/list/list.scss +3 -2
  229. package/loader-overlay/_loader-overlay-theme.scss +19 -10
  230. package/loader-overlay/loader-overlay-tokens.scss +0 -2
  231. package/loader-overlay/loader-overlay.scss +7 -1
  232. package/markdown/_markdown-theme.scss +16 -0
  233. package/markdown/markdown-tokens.scss +5 -0
  234. package/markdown/markdown.scss +2 -1
  235. package/modal/_modal-animation.scss +23 -14
  236. package/modal/modal-tokens.scss +2 -1
  237. package/modal/modal.scss +35 -31
  238. package/navbar/_navbar-item_horizontal.scss +8 -6
  239. package/navbar/_navbar-item_vertical.scss +18 -6
  240. package/navbar/_navbar-theme.scss +9 -1
  241. package/navbar/navbar-brand.scss +8 -6
  242. package/navbar/navbar-divider.scss +1 -1
  243. package/navbar/navbar-item.scss +8 -9
  244. package/navbar/navbar-toggle.scss +3 -3
  245. package/navbar/navbar-tokens.scss +14 -0
  246. package/navbar/navbar.scss +1 -2
  247. package/navbar/vertical-navbar.scss +2 -2
  248. package/notification-center/_notification-center-theme.scss +11 -6
  249. package/notification-center/notification-center-tokens.scss +33 -0
  250. package/notification-center/notification-center.scss +58 -20
  251. package/notification-center/notification-item.scss +15 -6
  252. package/package.json +112 -81
  253. package/popover/popover-tokens.scss +0 -2
  254. package/popover/popover.scss +41 -19
  255. package/prebuilt-themes/theme.css +1 -1
  256. package/progress-bar/_progress-bar-theme.scss +20 -3
  257. package/progress-bar/progress-bar-tokens.scss +3 -0
  258. package/progress-bar/progress-bar.scss +36 -8
  259. package/progress-spinner/progress-spinner.scss +4 -3
  260. package/radio/_radio-theme.scss +21 -4
  261. package/radio/radio-tokens.scss +7 -3
  262. package/radio/radio.scss +55 -8
  263. package/schematics/collection.json +399 -7
  264. package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
  265. package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
  266. package/schematics/migrations/accordion-state-saving-default/index.js +60 -0
  267. package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
  268. package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
  269. package/schematics/migrations/actions-panel-overlay-container/data.js +47 -0
  270. package/schematics/migrations/actions-panel-overlay-container/index.js +54 -0
  271. package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
  272. package/schematics/migrations/alert-signals/README.md +13 -7
  273. package/schematics/migrations/alert-signals/data.js +3 -0
  274. package/schematics/migrations/alert-signals/index.js +70 -203
  275. package/schematics/migrations/angular-animations-removal/README.md +46 -0
  276. package/schematics/migrations/angular-animations-removal/data.js +150 -0
  277. package/schematics/migrations/angular-animations-removal/index.js +20 -0
  278. package/schematics/migrations/angular-animations-removal/schema.json +15 -0
  279. package/schematics/migrations/app-switcher-signals/README.md +88 -0
  280. package/schematics/migrations/app-switcher-signals/data.js +136 -0
  281. package/schematics/migrations/app-switcher-signals/index.js +365 -0
  282. package/schematics/migrations/app-switcher-signals/schema.json +20 -0
  283. package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
  284. package/schematics/migrations/autocomplete-panel-width-auto/index.js +1 -1
  285. package/schematics/migrations/autocomplete-signals/README.md +92 -0
  286. package/schematics/migrations/autocomplete-signals/data.js +149 -0
  287. package/schematics/migrations/autocomplete-signals/index.js +706 -0
  288. package/schematics/migrations/autocomplete-signals/schema.json +20 -0
  289. package/schematics/migrations/badge-signals/README.md +77 -0
  290. package/schematics/migrations/badge-signals/data.js +109 -0
  291. package/schematics/migrations/badge-signals/index.js +693 -0
  292. package/schematics/migrations/badge-signals/schema.json +20 -0
  293. package/schematics/migrations/button-state-and-styles/README.md +129 -0
  294. package/schematics/migrations/button-state-and-styles/data.js +136 -0
  295. package/schematics/migrations/button-state-and-styles/index.js +220 -0
  296. package/schematics/migrations/button-state-and-styles/schema.json +20 -0
  297. package/schematics/migrations/button-supported-colors/README.md +73 -0
  298. package/schematics/migrations/button-supported-colors/data.js +106 -0
  299. package/schematics/migrations/button-supported-colors/index.js +260 -0
  300. package/schematics/migrations/button-supported-colors/schema.json +20 -0
  301. package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
  302. package/schematics/migrations/button-toggle-signals-and-aria/data.js +200 -0
  303. package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -0
  304. package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
  305. package/schematics/migrations/button-truncation/README.md +110 -0
  306. package/schematics/migrations/button-truncation/data.js +88 -0
  307. package/schematics/migrations/button-truncation/index.js +269 -0
  308. package/schematics/migrations/button-truncation/schema.json +20 -0
  309. package/schematics/migrations/checkbox-signals/README.md +76 -0
  310. package/schematics/migrations/checkbox-signals/data.js +114 -0
  311. package/schematics/migrations/checkbox-signals/index.js +634 -0
  312. package/schematics/migrations/checkbox-signals/schema.json +20 -0
  313. package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
  314. package/schematics/migrations/clamped-text-disclosure/data.js +101 -0
  315. package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
  316. package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
  317. package/schematics/migrations/code-block-signals/README.md +84 -0
  318. package/schematics/migrations/code-block-signals/data.js +121 -0
  319. package/schematics/migrations/code-block-signals/index.js +700 -0
  320. package/schematics/migrations/code-block-signals/schema.json +20 -0
  321. package/schematics/migrations/color-signals/README.md +46 -0
  322. package/schematics/migrations/color-signals/data.js +131 -0
  323. package/schematics/migrations/color-signals/index.js +19 -0
  324. package/schematics/migrations/color-signals/schema.json +20 -0
  325. package/schematics/migrations/core-mixins-removal/README.md +20 -0
  326. package/schematics/migrations/core-mixins-removal/data.js +27 -0
  327. package/schematics/migrations/core-mixins-removal/index.js +17 -0
  328. package/schematics/migrations/core-mixins-removal/schema.json +15 -0
  329. package/schematics/migrations/css-selectors/README.md +2 -2
  330. package/schematics/migrations/css-selectors/index.js +1 -1
  331. package/schematics/migrations/datepicker-signals/README.md +24 -0
  332. package/schematics/migrations/datepicker-signals/data.js +49 -0
  333. package/schematics/migrations/datepicker-signals/index.js +17 -0
  334. package/schematics/migrations/datepicker-signals/schema.json +15 -0
  335. package/schematics/migrations/deprecated-icons/README.md +2 -2
  336. package/schematics/migrations/deprecated-icons/index.js +1 -1
  337. package/schematics/migrations/design-tokens-v4/README.md +75 -0
  338. package/schematics/migrations/design-tokens-v4/index.js +59 -0
  339. package/schematics/migrations/design-tokens-v4/schema.json +15 -0
  340. package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
  341. package/schematics/migrations/divider-signals-and-aria/data.js +62 -0
  342. package/schematics/migrations/divider-signals-and-aria/index.js +211 -0
  343. package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
  344. package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
  345. package/schematics/migrations/dl-attribute-coercion/data.js +85 -0
  346. package/schematics/migrations/dl-attribute-coercion/index.js +161 -0
  347. package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
  348. package/schematics/migrations/dl-standalone-names/README.md +49 -0
  349. package/schematics/migrations/dl-standalone-names/data.js +44 -0
  350. package/schematics/migrations/dl-standalone-names/index.js +321 -0
  351. package/schematics/migrations/dl-standalone-names/schema.json +20 -0
  352. package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
  353. package/schematics/migrations/dropdown-demote-overlay/data.js +84 -0
  354. package/schematics/migrations/dropdown-demote-overlay/index.js +288 -0
  355. package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
  356. package/schematics/migrations/dropdown-signals/README.md +83 -0
  357. package/schematics/migrations/dropdown-signals/data.js +152 -0
  358. package/schematics/migrations/dropdown-signals/index.js +19 -0
  359. package/schematics/migrations/dropdown-signals/schema.json +20 -0
  360. package/schematics/migrations/empty-state-error-color/README.md +84 -0
  361. package/schematics/migrations/empty-state-error-color/data.js +85 -0
  362. package/schematics/migrations/empty-state-error-color/index.js +71 -0
  363. package/schematics/migrations/empty-state-error-color/schema.json +15 -0
  364. package/schematics/migrations/empty-state-size-attr/README.md +2 -2
  365. package/schematics/migrations/empty-state-size-attr/index.js +1 -1
  366. package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
  367. package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
  368. package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -0
  369. package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
  370. package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
  371. package/schematics/migrations/file-upload-deprecated-outputs/data.js +20 -0
  372. package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -0
  373. package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
  374. package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
  375. package/schematics/migrations/filter-bar-rename-action/data.js +151 -0
  376. package/schematics/migrations/filter-bar-rename-action/index.js +177 -0
  377. package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
  378. package/schematics/migrations/filter-bar-signals/README.md +27 -16
  379. package/schematics/migrations/filter-bar-signals/data.js +1 -2
  380. package/schematics/migrations/filter-bar-signals/index.js +100 -195
  381. package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
  382. package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
  383. package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -0
  384. package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
  385. package/schematics/migrations/flag-inner-html/README.md +67 -0
  386. package/schematics/migrations/flag-inner-html/data.js +58 -0
  387. package/schematics/migrations/flag-inner-html/index.js +61 -0
  388. package/schematics/migrations/flag-inner-html/schema.json +15 -0
  389. package/schematics/migrations/form-field-signals/README.md +125 -0
  390. package/schematics/migrations/form-field-signals/data.js +288 -0
  391. package/schematics/migrations/form-field-signals/index.js +382 -0
  392. package/schematics/migrations/form-field-signals/schema.json +20 -0
  393. package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
  394. package/schematics/migrations/icon-semantics-and-api/data.js +97 -0
  395. package/schematics/migrations/icon-semantics-and-api/index.js +64 -0
  396. package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
  397. package/schematics/migrations/icons-replacement/README.md +5 -5
  398. package/schematics/migrations/icons-replacement/index.js +1 -1
  399. package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
  400. package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
  401. package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -0
  402. package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
  403. package/schematics/migrations/input-number-surface/README.md +140 -0
  404. package/schematics/migrations/input-number-surface/data.js +135 -0
  405. package/schematics/migrations/input-number-surface/index.js +292 -0
  406. package/schematics/migrations/input-number-surface/schema.json +20 -0
  407. package/schematics/migrations/input-signals/README.md +20 -0
  408. package/schematics/migrations/input-signals/data.js +30 -0
  409. package/schematics/migrations/input-signals/index.js +17 -0
  410. package/schematics/migrations/input-signals/schema.json +15 -0
  411. package/schematics/migrations/link-deprecated-path/README.md +144 -0
  412. package/schematics/migrations/link-deprecated-path/index.js +19 -0
  413. package/schematics/migrations/link-deprecated-path/schema.json +20 -0
  414. package/schematics/migrations/link-signals/README.md +71 -0
  415. package/schematics/migrations/link-signals/data.js +116 -0
  416. package/schematics/migrations/link-signals/index.js +415 -0
  417. package/schematics/migrations/link-signals/schema.json +20 -0
  418. package/schematics/migrations/list-signals/README.md +22 -0
  419. package/schematics/migrations/list-signals/data.js +35 -0
  420. package/schematics/migrations/list-signals/index.js +17 -0
  421. package/schematics/migrations/list-signals/schema.json +15 -0
  422. package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
  423. package/schematics/migrations/list-tree-multiple-input/data.js +74 -0
  424. package/schematics/migrations/list-tree-multiple-input/index.js +221 -0
  425. package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
  426. package/schematics/migrations/loader-overlay-signals/README.md +62 -0
  427. package/schematics/migrations/loader-overlay-signals/data.js +101 -0
  428. package/schematics/migrations/loader-overlay-signals/index.js +697 -0
  429. package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
  430. package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
  431. package/schematics/migrations/loader-overlay-size-attr/index.js +1 -1
  432. package/schematics/migrations/locale-configuration-providers/README.md +163 -0
  433. package/schematics/migrations/locale-configuration-providers/data.js +257 -0
  434. package/schematics/migrations/locale-configuration-providers/index.js +294 -0
  435. package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
  436. package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
  437. package/schematics/migrations/mandatory-peer-dependencies/index.js +42 -0
  438. package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
  439. package/schematics/migrations/markdown-signals/README.md +58 -0
  440. package/schematics/migrations/markdown-signals/data.js +79 -0
  441. package/schematics/migrations/markdown-signals/index.js +639 -0
  442. package/schematics/migrations/markdown-signals/schema.json +20 -0
  443. package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
  444. package/schematics/migrations/modal-dialog-semantics/data.js +110 -0
  445. package/schematics/migrations/modal-dialog-semantics/index.js +58 -0
  446. package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
  447. package/schematics/migrations/modal-signals/README.md +88 -0
  448. package/schematics/migrations/modal-signals/data.js +132 -0
  449. package/schematics/migrations/modal-signals/index.js +19 -0
  450. package/schematics/migrations/modal-signals/schema.json +20 -0
  451. package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
  452. package/schematics/migrations/navbar-signals-and-aria/data.js +198 -0
  453. package/schematics/migrations/navbar-signals-and-aria/index.js +568 -0
  454. package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
  455. package/schematics/migrations/new-icons-pack/README.md +10 -10
  456. package/schematics/migrations/new-icons-pack/index.js +1 -1
  457. package/schematics/migrations/notification-center-signals/README.md +67 -0
  458. package/schematics/migrations/notification-center-signals/data.js +66 -0
  459. package/schematics/migrations/notification-center-signals/index.js +61 -0
  460. package/schematics/migrations/notification-center-signals/schema.json +15 -0
  461. package/schematics/migrations/option-signals/README.md +37 -0
  462. package/schematics/migrations/option-signals/data.js +86 -0
  463. package/schematics/migrations/option-signals/index.js +19 -0
  464. package/schematics/migrations/option-signals/schema.json +20 -0
  465. package/schematics/migrations/popover-leave-delay/README.md +51 -0
  466. package/schematics/migrations/popover-leave-delay/data.js +61 -0
  467. package/schematics/migrations/popover-leave-delay/index.js +54 -0
  468. package/schematics/migrations/popover-leave-delay/schema.json +15 -0
  469. package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
  470. package/schematics/migrations/progress-bar-percentage-and-aria/data.js +76 -0
  471. package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -0
  472. package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
  473. package/schematics/migrations/progress-spinner-signals/README.md +72 -0
  474. package/schematics/migrations/progress-spinner-signals/data.js +83 -0
  475. package/schematics/migrations/progress-spinner-signals/index.js +694 -0
  476. package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
  477. package/schematics/migrations/query-list-signals/README.md +32 -0
  478. package/schematics/migrations/query-list-signals/data.js +70 -0
  479. package/schematics/migrations/query-list-signals/index.js +17 -0
  480. package/schematics/migrations/query-list-signals/schema.json +15 -0
  481. package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
  482. package/schematics/migrations/radio-signals-and-aria/data.js +163 -0
  483. package/schematics/migrations/radio-signals-and-aria/index.js +39 -0
  484. package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
  485. package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
  486. package/schematics/migrations/read-state-dwell-handlers/data.js +45 -0
  487. package/schematics/migrations/read-state-dwell-handlers/index.js +215 -0
  488. package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
  489. package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
  490. package/schematics/migrations/scrollbar-deprecated-path/index.js +20 -0
  491. package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
  492. package/schematics/migrations/select-signal-inputs/README.md +61 -0
  493. package/schematics/migrations/select-signal-inputs/data.js +99 -0
  494. package/schematics/migrations/select-signal-inputs/index.js +57 -0
  495. package/schematics/migrations/select-signal-inputs/schema.json +15 -0
  496. package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
  497. package/schematics/migrations/sidepanel-non-modal-behavior/data.js +111 -0
  498. package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -0
  499. package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
  500. package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
  501. package/schematics/migrations/signal-inputs-subclasses/data.js +69 -0
  502. package/schematics/migrations/signal-inputs-subclasses/index.js +17 -0
  503. package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
  504. package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
  505. package/schematics/migrations/split-button-optional-disabled/data.js +53 -0
  506. package/schematics/migrations/split-button-optional-disabled/index.js +57 -0
  507. package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
  508. package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
  509. package/schematics/migrations/splitter-deprecated-path/index.js +20 -0
  510. package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
  511. package/schematics/migrations/state-saving-default/README.md +67 -0
  512. package/schematics/migrations/state-saving-default/data.js +88 -0
  513. package/schematics/migrations/state-saving-default/index.js +62 -0
  514. package/schematics/migrations/state-saving-default/schema.json +15 -0
  515. package/schematics/migrations/table-cell-content/README.md +55 -0
  516. package/schematics/migrations/table-cell-content/data.js +66 -0
  517. package/schematics/migrations/table-cell-content/index.js +66 -0
  518. package/schematics/migrations/table-cell-content/schema.json +15 -0
  519. package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
  520. package/schematics/migrations/tabs-signals-and-aria/data.js +139 -0
  521. package/schematics/migrations/tabs-signals-and-aria/index.js +65 -0
  522. package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
  523. package/schematics/migrations/tag-list-cleaner/README.md +58 -0
  524. package/schematics/migrations/tag-list-cleaner/data.js +42 -0
  525. package/schematics/migrations/tag-list-cleaner/index.js +196 -0
  526. package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
  527. package/schematics/migrations/tag-slots/README.md +41 -0
  528. package/schematics/migrations/tag-slots/index.js +190 -0
  529. package/schematics/migrations/tag-slots/schema.json +20 -0
  530. package/schematics/migrations/tags-signals/README.md +85 -0
  531. package/schematics/migrations/tags-signals/data.js +103 -0
  532. package/schematics/migrations/tags-signals/index.js +673 -0
  533. package/schematics/migrations/tags-signals/schema.json +20 -0
  534. package/schematics/migrations/textarea-signals/README.md +72 -0
  535. package/schematics/migrations/textarea-signals/data.js +121 -0
  536. package/schematics/migrations/textarea-signals/index.js +379 -0
  537. package/schematics/migrations/textarea-signals/schema.json +20 -0
  538. package/schematics/migrations/time-range-title-for/README.md +164 -0
  539. package/schematics/migrations/time-range-title-for/data.js +139 -0
  540. package/schematics/migrations/time-range-title-for/index.js +163 -0
  541. package/schematics/migrations/time-range-title-for/schema.json +20 -0
  542. package/schematics/migrations/timepicker-signals/README.md +78 -0
  543. package/schematics/migrations/timepicker-signals/data.js +82 -0
  544. package/schematics/migrations/timepicker-signals/index.js +709 -0
  545. package/schematics/migrations/timepicker-signals/schema.json +20 -0
  546. package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
  547. package/schematics/migrations/timezone-grouping-utils/data.js +101 -0
  548. package/schematics/migrations/timezone-grouping-utils/index.js +64 -0
  549. package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
  550. package/schematics/migrations/title-encapsulation/README.md +49 -0
  551. package/schematics/migrations/title-encapsulation/data.js +69 -0
  552. package/schematics/migrations/title-encapsulation/index.js +57 -0
  553. package/schematics/migrations/title-encapsulation/schema.json +15 -0
  554. package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
  555. package/schematics/migrations/toast-stack-and-defaults/data.js +79 -0
  556. package/schematics/migrations/toast-stack-and-defaults/index.js +53 -0
  557. package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
  558. package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
  559. package/schematics/migrations/tooltip-pointer-events-and-types/data.js +89 -0
  560. package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -0
  561. package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
  562. package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
  563. package/schematics/migrations/top-bar-container-selectors/data.js +56 -0
  564. package/schematics/migrations/top-bar-container-selectors/index.js +84 -0
  565. package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
  566. package/schematics/migrations/tree-select-signals/README.md +61 -0
  567. package/schematics/migrations/tree-select-signals/data.js +106 -0
  568. package/schematics/migrations/tree-select-signals/index.js +58 -0
  569. package/schematics/migrations/tree-select-signals/schema.json +15 -0
  570. package/schematics/migrations/tree-signals/README.md +82 -0
  571. package/schematics/migrations/tree-signals/data.js +123 -0
  572. package/schematics/migrations/tree-signals/index.js +54 -0
  573. package/schematics/migrations/tree-signals/schema.json +15 -0
  574. package/schematics/migrations/tree-state-saving-default/README.md +66 -0
  575. package/schematics/migrations/tree-state-saving-default/data.js +78 -0
  576. package/schematics/migrations/tree-state-saving-default/index.js +60 -0
  577. package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
  578. package/schematics/migrations/username-pipe-injection/README.md +59 -0
  579. package/schematics/migrations/username-pipe-injection/data.js +78 -0
  580. package/schematics/migrations/username-pipe-injection/index.js +58 -0
  581. package/schematics/migrations/username-pipe-injection/schema.json +15 -0
  582. package/schematics/migrations/v20-upgrade/README.md +36 -16
  583. package/schematics/migrations/v20-upgrade/data.js +124 -77
  584. package/schematics/migrations/v20-upgrade/index.js +6 -213
  585. package/schematics/migrations/v21-upgrade/README.md +271 -0
  586. package/schematics/migrations/v21-upgrade/data.js +1371 -0
  587. package/schematics/migrations/v21-upgrade/index.js +94 -0
  588. package/schematics/migrations/v21-upgrade/schema.json +20 -0
  589. package/schematics/migrations/zoneless-change-detection/README.md +30 -0
  590. package/schematics/migrations/zoneless-change-detection/data.js +29 -0
  591. package/schematics/migrations/zoneless-change-detection/index.js +20 -0
  592. package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
  593. package/schematics/migrations.json +392 -2
  594. package/schematics/ng-add/index.js +515 -14
  595. package/schematics/ng-add/schema.json +15 -0
  596. package/schematics/utils/deprecated-path-migration.js +61 -0
  597. package/schematics/utils/package-config.js +9 -105
  598. package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
  599. package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
  600. package/scrollbar/native-scrollbar.scss +68 -0
  601. package/scrollbar/scrollbar-tokens.scss +13 -22
  602. package/scrollbar/scrollbar-track.scss +94 -0
  603. package/scrollbar/scrollbar-viewport.scss +33 -0
  604. package/scrollbar/scrollbar.scss +24 -0
  605. package/search-expandable/search-expandable-tokens.scss +4 -0
  606. package/search-expandable/search-expandable.scss +4 -2
  607. package/select/_select-theme.scss +3 -16
  608. package/select/select.scss +0 -6
  609. package/sidebar/sidebar.scss +20 -0
  610. package/sidepanel/_sidepanel-theme.scss +1 -1
  611. package/sidepanel/sidepanel-tokens.scss +7 -1
  612. package/sidepanel/sidepanel.scss +41 -5
  613. package/skeleton/skeleton-presets.scss +350 -0
  614. package/skeleton/skeleton-tokens.scss +127 -0
  615. package/skeleton/skeleton.scss +53 -45
  616. package/split-button/_split-button-theme.scss +4 -4
  617. package/split-button/split-button.scss +2 -6
  618. package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
  619. package/splitter/deprecated/splitter.scss +51 -0
  620. package/splitter/splitter-tokens.scss +19 -0
  621. package/splitter/splitter.scss +148 -28
  622. package/table/_table-theme.scss +13 -12
  623. package/table/table-tokens.scss +8 -0
  624. package/table/table.scss +47 -22
  625. package/tabs/_tabs-common.scss +14 -14
  626. package/tabs/_tabs-theme.scss +4 -5
  627. package/tabs/tab-body.scss +49 -1
  628. package/tabs/tab-header.scss +2 -1
  629. package/tags/tag-list.scss +4 -0
  630. package/tags/tag.scss +19 -1
  631. package/time-range/time-range.scss +9 -0
  632. package/timezone/timezone-option.component.scss +4 -7
  633. package/timezone/timezone-select.component.scss +3 -0
  634. package/toast/_toast-theme.scss +1 -4
  635. package/toast/toast-container.component.scss +19 -13
  636. package/toast/toast-tokens.scss +12 -6
  637. package/toast/toast.component.scss +42 -19
  638. package/toggle/_toggle-theme.scss +4 -10
  639. package/toggle/toggle.scss +67 -26
  640. package/tooltip/_tooltip-theme.scss +7 -1
  641. package/tooltip/tooltip-tokens.scss +1 -2
  642. package/tooltip/tooltip.scss +55 -9
  643. package/top-bar/top-bar-tokens.scss +13 -2
  644. package/top-bar/top-bar.scss +24 -19
  645. package/tree/_tree-theme.scss +0 -1
  646. package/tree/toggle.scss +5 -9
  647. package/tree/tree-option.scss +2 -4
  648. package/tree/tree-tokens.scss +2 -1
  649. package/tree/tree.scss +3 -5
  650. package/tree-select/_tree-select-theme.scss +4 -15
  651. package/tree-select/tree-select-tokens.scss +16 -0
  652. package/tree-select/tree-select.scss +0 -6
  653. package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
  654. package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
  655. package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
  656. package/types/koobiq-components-app-switcher.d.ts +406 -0
  657. package/types/koobiq-components-autocomplete.d.ts +443 -0
  658. package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
  659. package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
  660. package/types/koobiq-components-button-toggle.d.ts +340 -0
  661. package/types/koobiq-components-button.d.ts +296 -0
  662. package/types/koobiq-components-checkbox.d.ts +172 -0
  663. package/types/koobiq-components-clamped-text.d.ts +184 -0
  664. package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +114 -79
  665. package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
  666. package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
  667. package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
  668. package/types/koobiq-components-divider.d.ts +43 -0
  669. package/types/koobiq-components-dl.d.ts +235 -0
  670. package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
  671. package/types/koobiq-components-ellipsis-center.d.ts +85 -0
  672. package/types/koobiq-components-empty-state.d.ts +106 -0
  673. package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
  674. package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
  675. package/types/koobiq-components-flag.d.ts +68 -0
  676. package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
  677. package/types/koobiq-components-icon.d.ts +333 -0
  678. package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
  679. package/types/koobiq-components-input.d.ts +477 -0
  680. package/types/koobiq-components-link-deprecated.d.ts +101 -0
  681. package/types/koobiq-components-link.d.ts +176 -0
  682. package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
  683. package/types/koobiq-components-loader-overlay.d.ts +101 -0
  684. package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
  685. package/types/koobiq-components-modal.d.ts +666 -0
  686. package/types/koobiq-components-navbar.d.ts +569 -0
  687. package/types/koobiq-components-notification-center.d.ts +500 -0
  688. package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
  689. package/types/koobiq-components-popover.d.ts +468 -0
  690. package/types/koobiq-components-progress-bar.d.ts +67 -0
  691. package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
  692. package/types/koobiq-components-radio.d.ts +294 -0
  693. package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
  694. package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
  695. package/types/koobiq-components-scrollbar.d.ts +154 -0
  696. package/types/koobiq-components-search-expandable.d.ts +164 -0
  697. package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
  698. package/types/koobiq-components-sidebar.d.ts +152 -0
  699. package/types/koobiq-components-sidepanel.d.ts +436 -0
  700. package/types/koobiq-components-skeleton.d.ts +234 -0
  701. package/types/koobiq-components-split-button.d.ts +65 -0
  702. package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
  703. package/types/koobiq-components-splitter.d.ts +406 -0
  704. package/types/koobiq-components-table.d.ts +44 -0
  705. package/types/koobiq-components-tabs.d.ts +888 -0
  706. package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
  707. package/types/koobiq-components-textarea.d.ts +178 -0
  708. package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
  709. package/types/koobiq-components-timepicker.d.ts +223 -0
  710. package/types/koobiq-components-timezone.d.ts +266 -0
  711. package/types/koobiq-components-title.d.ts +184 -0
  712. package/types/koobiq-components-toast.d.ts +289 -0
  713. package/types/koobiq-components-toggle.d.ts +121 -0
  714. package/types/koobiq-components-tooltip.d.ts +610 -0
  715. package/types/koobiq-components-top-bar.d.ts +61 -0
  716. package/types/koobiq-components-tree-select.d.ts +667 -0
  717. package/types/koobiq-components-tree.d.ts +1290 -0
  718. package/types/koobiq-components-username.d.ts +340 -0
  719. package/username/_username-theme.scss +35 -0
  720. package/username/username.scss +10 -34
  721. package/app-switcher/index.d.ts +0 -276
  722. package/autocomplete/index.d.ts +0 -286
  723. package/button/index.d.ts +0 -153
  724. package/button-toggle/index.d.ts +0 -162
  725. package/checkbox/index.d.ts +0 -163
  726. package/clamped-text/index.d.ts +0 -146
  727. package/core/styles/_tokens.scss +0 -7
  728. package/core/styles/common/_clearfix.scss +0 -13
  729. package/core/styles/common/_popup.scss +0 -6
  730. package/core/styles/functions/_index.scss +0 -3
  731. package/core/styles/functions/_number.scss +0 -60
  732. package/core/styles/functions/_string.scss +0 -18
  733. package/core/styles/theming/scrollbar-tokens.scss +0 -25
  734. package/core/styles/typography/_typography-utils.scss +0 -84
  735. package/divider/index.d.ts +0 -20
  736. package/dl/index.d.ts +0 -45
  737. package/ellipsis-center/index.d.ts +0 -71
  738. package/empty-state/index.d.ts +0 -45
  739. package/flag/index.d.ts +0 -44
  740. package/icon/index.d.ts +0 -200
  741. package/input/index.d.ts +0 -354
  742. package/link/index.d.ts +0 -56
  743. package/loader-overlay/index.d.ts +0 -57
  744. package/modal/index.d.ts +0 -339
  745. package/navbar/index.d.ts +0 -372
  746. package/notification-center/index.d.ts +0 -323
  747. package/popover/index.d.ts +0 -182
  748. package/prebuilt-themes/dark-theme.css +0 -1
  749. package/prebuilt-themes/light-theme.css +0 -1
  750. package/progress-bar/index.d.ts +0 -31
  751. package/radio/index.d.ts +0 -203
  752. package/search-expandable/index.d.ts +0 -101
  753. package/sidebar/index.d.ts +0 -94
  754. package/sidepanel/index.d.ts +0 -272
  755. package/skeleton/index.d.ts +0 -26
  756. package/split-button/index.d.ts +0 -46
  757. package/table/index.d.ts +0 -25
  758. package/tabs/index.d.ts +0 -677
  759. package/textarea/index.d.ts +0 -138
  760. package/timepicker/index.d.ts +0 -197
  761. package/timezone/index.d.ts +0 -125
  762. package/title/index.d.ts +0 -139
  763. package/toast/index.d.ts +0 -187
  764. package/toggle/index.d.ts +0 -104
  765. package/tooltip/index.d.ts +0 -335
  766. package/top-bar/index.d.ts +0 -33
  767. package/tree/index.d.ts +0 -802
  768. package/tree-select/index.d.ts +0 -475
  769. package/username/index.d.ts +0 -194
  770. /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
  771. /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "koobiq-components-tags-signals",
4
+ "title": "Koobiq components tags signals migration",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Name of the project to migrate. If omitted, the migration runs over the whole tree.",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ }
13
+ },
14
+ "fix": {
15
+ "type": "boolean",
16
+ "default": true,
17
+ "description": "When true, applies all auto-fix replacements. When false, prints what would change without writing."
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,72 @@
1
+ # textarea-signals
2
+
3
+ Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for
4
+ `21.0.0-0`). Migrates `KbqTextarea` consumers to its signal-based inputs.
5
+
6
+ ## Background
7
+
8
+ The `KbqFormFieldControl` members of `KbqTextarea` — `value`, `id`, `placeholder`, `required`,
9
+ `disabled`, `focused`, `empty` and `errorState` — are signals, migrated by `form-field-signals`: reads
10
+ become calls, a write to `value` becomes `.set()`, a write to the rest is reported. This schematic
11
+ covers the four inputs the textarea owns.
12
+
13
+ `canGrow` was the odd one:
14
+
15
+ ```ts
16
+ get canGrow(): boolean {
17
+ return !this.maxRowLimitReached && this._canGrow;
18
+ }
19
+ ```
20
+
21
+ It reported `false` once the textarea hit `maxRows`, even though the consumer had asked for growth.
22
+ The folded value is an internal `growing` computed now, and `canGrow()` reports what was bound. At the
23
+ row limit the element keeps its own scrollbar rather than gaining a native resize handle:
24
+ `kbq-textarea_max-row-limit-reached` sets `resize: unset`, which follows `kbq-textarea-resizable` in
25
+ the stylesheet and wins on source order.
26
+
27
+ ## What it rewrites
28
+
29
+ | Before | After |
30
+ | ----------------------------- | ------------------------------- |
31
+ | `textarea.maxRows` | `textarea.maxRows()` |
32
+ | `textarea.maxRowLimitReached` | `textarea.maxRowLimitReached()` |
33
+
34
+ On receivers explicitly typed `KbqTextarea`. Already-migrated reads are left alone, so the schematic
35
+ is idempotent. There is no template pass: `kbqTextarea` is an attribute on a native `<textarea>`, so
36
+ a reference variable is not tied to an element name the schematic can match.
37
+
38
+ ## What it does _not_ do
39
+
40
+ | Pattern | Manual migration |
41
+ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
42
+ | `.canGrow` | `canGrow()`, and expect what was bound — not `false` at the row limit |
43
+ | `.freeRowsHeight` | `freeRowsHeight()`, and expect `undefined` when unbound |
44
+ | `.canGrow = …` / `.maxRows = …` / `.freeRowsHeight = …` | Bind them; the inputs are read-only |
45
+ | `.grow()` / a detached `.grow` | Protected now; a layout change it cannot see is measured at the next value or input change |
46
+ | `viewChild(KbqTextarea)` | The query returns the instance, so a read is a double call |
47
+
48
+ ## Notes with no call site to point at
49
+
50
+ - **`maxRows` and `freeRowsHeight` report `number | undefined`.** Both were declared non-nullable
51
+ while an unbound `maxRows` held `undefined`, and `maxRowLimitReached` compared against it —
52
+ `rowsCount > undefined` is false, which is why unlimited growth worked at all. `freeRowsHeight`
53
+ differs: `ngOnInit` used to assign the measured line height into the input, so an unbound read came
54
+ back with a number. It stays `undefined` now, which is why the migration reports those reads rather
55
+ than rewriting them.
56
+ - **`freeRowsHeight` no longer writes itself.** It defaulted to the measured line height by assigning
57
+ its own input in `ngOnInit`; the fallback is a computed now, so binding it later actually takes
58
+ effect instead of being overwritten on the next init.
59
+ - **The `kbq-textarea_max-row-limit-reached` class follows the row count directly.** It is derived
60
+ from a signal written inside `runOutsideAngular`, so the class used to wait for an unrelated change
61
+ detection pass to appear.
62
+ - **Generated ids come from the CDK `_IdGenerator`** instead of a module-level counter. The shape is
63
+ unchanged for a default `APP_ID` - the CDK omits the app id when it is `ng` - and the per-prefix
64
+ counter still starts at 0, so a real app keeps getting `kbq-textarea-0`.
65
+
66
+ ## Running it manually
67
+
68
+ ```
69
+ ng generate @koobiq/components:textarea-signals --project my-app
70
+ ```
71
+
72
+ Pass `--fix=false` to see what it would change without writing.
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Data for the `textarea-signals` migration.
5
+ *
6
+ * The `KbqFormFieldControl` members of `KbqTextarea` (`value`, `id`, `placeholder`, `required`, `disabled`,
7
+ * `focused`, `empty`, `errorState`) are signals too, but `form-field-signals` migrates them. This migration
8
+ * covers the inputs that belong to the textarea itself.
9
+ *
10
+ * - `textarea.canGrow` → a signal whose value changed: the getter folded in the row limit (warn)
11
+ * - `textarea.freeRowsHeight` → a signal whose value changed: the textarea used to write the measured
12
+ * line height into it on init, so an unbound read came back with a number (warn)
13
+ * - `textarea.maxRows` / `maxRowLimitReached` → calls (value unchanged — auto-fixed)
14
+ * - `textarea.grow` → protected, so a call or a detached reference no longer compiles (warn)
15
+ */
16
+ /** Members whose value is unchanged; a read must become a call. Auto-fixed. */
17
+ const SIGNAL_MEMBERS = ['maxRows', 'maxRowLimitReached'];
18
+ /** TypeScript type annotation that marks a receiver as a textarea. */
19
+ const TEXTAREA_TYPE = 'KbqTextarea';
20
+ /** `exportAs` a template reference variable has to carry to point at the textarea. */
21
+ const TEXTAREA_EXPORT_AS = 'kbqTextarea';
22
+ /** Signal-API methods reachable on a signal; a read followed by one is already migrated. */
23
+ const SIGNAL_API_METHODS = new Set(['set', 'update', 'asReadonly', 'subscribe']);
24
+ /** Reported for a value-changed member read through a template reference, which is not auto-fixed. */
25
+ const templateManualMessage = (members) => `Read through a template reference variable and left untouched, because the value changed as well ` +
26
+ `as the shape: ${[...members].join(', ')}. Migrate those bindings by hand.`;
27
+ /** Reported when a template names the textarea but cannot be parsed, so nothing in it was inspected. */
28
+ const UNPARSEABLE_TEMPLATE_MESSAGE = 'This template names `kbqTextarea` but could not be parsed, so it was left untouched. Migrate reads ' +
29
+ 'through its template reference variables by hand.';
30
+ /** Import specifier that marks a file as a textarea consumer. */
31
+ const TEXTAREA_PACKAGE = '@koobiq/components/textarea';
32
+ /**
33
+ * Read-only `InputSignal`s whose value also changed, so a mechanical `()` append would compile and hand
34
+ * back something else.
35
+ *
36
+ * `canGrow`: the getter used to return `!maxRowLimitReached && bound`, so it reported `false` once the
37
+ * textarea hit `maxRows` even though the consumer had asked for growth. It reports what was bound now.
38
+ *
39
+ * `freeRowsHeight`: `ngOnInit` used to assign the measured line height into the input, so an unbound
40
+ * textarea read back a number once the first microtask had run. The fallback is a private computed now
41
+ * and the input stays `undefined`, which turns `gap + 'px'` at a call site into `"undefined" + "px"` with no
42
+ * diagnostic.
43
+ */
44
+ const VALUE_CHANGED_MEMBERS = ['canGrow', 'freeRowsHeight'];
45
+ /**
46
+ * Reported for a read of a member that still compiles after a mechanical `()` append but hands back a
47
+ * different value than it did before.
48
+ */
49
+ const valueChangedMessage = (members) => {
50
+ const names = [...members];
51
+ const lines = [
52
+ `${names.join(' and ')} ${names.length > 1 ? 'are' : 'is a'} read-only InputSignal` +
53
+ `${names.length > 1 ? 's' : ''} whose value also changed, so appending \`()\` compiles and ` +
54
+ 'hands back something else. Migrate by hand.'
55
+ ];
56
+ if (names.includes('canGrow')) {
57
+ lines.push('`canGrow` used to return `!maxRowLimitReached && bound`, so it reported false once the ' +
58
+ 'textarea hit `maxRows` even though the consumer had asked for growth; it reports what ' +
59
+ 'was bound now.');
60
+ }
61
+ if (names.includes('freeRowsHeight')) {
62
+ lines.push('`freeRowsHeight` used to be assigned the measured line height in `ngOnInit`, so an unbound ' +
63
+ 'textarea read back a number; the fallback is internal now and the input stays ' +
64
+ '`undefined`, which turns `gap + "px"` into `"undefined" + "px"` with no diagnostic.');
65
+ }
66
+ return lines.join(' ');
67
+ };
68
+ const TEXTAREA_ANCHOR = '\\bKbqTextarea\\b';
69
+ const warnPatterns = [
70
+ {
71
+ anchor: TEXTAREA_ANCHOR,
72
+ pattern: '\\.\\s*(?:freeRowsHeight|maxRows|canGrow)\\s*=[^=]',
73
+ message: 'KbqTextarea.canGrow, maxRows and freeRowsHeight are read-only signal inputs now, so a ' +
74
+ 'programmatic write no longer compiles. Bind them in the template instead. `freeRowsHeight` in ' +
75
+ 'particular used to be written by the textarea itself on init, which is why the automated ' +
76
+ 'migration skipped it.'
77
+ },
78
+ {
79
+ anchor: TEXTAREA_ANCHOR,
80
+ pattern: '\\.\\s*grow\\b',
81
+ message: 'KbqTextarea.grow is protected now, so a call - `textarea.grow()` - and a detached reference - ' +
82
+ '`setTimeout(textarea.grow, 0)` - no longer compile. The textarea already re-measures on every ' +
83
+ 'value change and whenever one of its inputs changes; a layout change it cannot see, such as a width ' +
84
+ 'change, is measured at the next one.'
85
+ },
86
+ {
87
+ anchor: TEXTAREA_ANCHOR,
88
+ pattern: '(?:viewChild|ViewChild|contentChild|ContentChild)[^\\n;]*\\bKbqTextarea\\b',
89
+ message: 'A KbqTextarea view/content query returns the directive instance, whose `maxRows` and ' +
90
+ '`maxRowLimitReached` are now signals — reading one is a double call, e.g. ' +
91
+ '`this.textarea().maxRows()`. Verify query reads manually.'
92
+ }
93
+ ];
94
+ /** Printed once per project, after the per-file reports. */
95
+ const SUMMARY = [
96
+ ' `maxRows` and `freeRowsHeight` report `number | undefined` instead of `number`. Both were declared ' +
97
+ 'non-nullable while an unbound textarea held `undefined`, and `maxRowLimitReached` compared against ' +
98
+ 'it — `rowsCount > undefined` is false, which is why unlimited growth worked at all.',
99
+ ' `freeRowsHeight` no longer writes itself. It defaulted to the measured line height by assigning its ' +
100
+ 'own input in `ngOnInit`; the fallback is a computed now, so binding it later actually takes effect ' +
101
+ 'instead of being overwritten on the next init.',
102
+ ' The `kbq-textarea_max-row-limit-reached` class follows the row count directly. It is derived from a ' +
103
+ 'signal written inside `runOutsideAngular`, so the class used to wait for an unrelated change ' +
104
+ 'detection pass to appear.',
105
+ ' Generated ids come from the CDK `_IdGenerator` instead of a module-level counter. The shape is ' +
106
+ 'unchanged for a default `APP_ID`: the CDK omits the app id when it is `ng`, and the per-prefix ' +
107
+ 'counter still starts at 0, so a real app keeps getting `kbq-textarea-0`. Only an app that sets ' +
108
+ '`APP_ID` explicitly sees it in the id, and the counter is shared per prefix rather than per module.'
109
+ ];
110
+
111
+ exports.SIGNAL_API_METHODS = SIGNAL_API_METHODS;
112
+ exports.SIGNAL_MEMBERS = SIGNAL_MEMBERS;
113
+ exports.SUMMARY = SUMMARY;
114
+ exports.TEXTAREA_EXPORT_AS = TEXTAREA_EXPORT_AS;
115
+ exports.TEXTAREA_PACKAGE = TEXTAREA_PACKAGE;
116
+ exports.TEXTAREA_TYPE = TEXTAREA_TYPE;
117
+ exports.UNPARSEABLE_TEMPLATE_MESSAGE = UNPARSEABLE_TEMPLATE_MESSAGE;
118
+ exports.VALUE_CHANGED_MEMBERS = VALUE_CHANGED_MEMBERS;
119
+ exports.templateManualMessage = templateManualMessage;
120
+ exports.valueChangedMessage = valueChangedMessage;
121
+ exports.warnPatterns = warnPatterns;
@@ -0,0 +1,379 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var ts = require('typescript');
6
+ var utils_ast = require('../../utils/ast.js');
7
+ var utils_messages = require('../../utils/messages.js');
8
+ var utils_packageConfig = require('../../package-config-BhU2TfC8.js');
9
+ var utils_typescript = require('../../utils/typescript.js');
10
+ var migrations_textareaSignals_data = require('./data.js');
11
+ require('@angular-devkit/schematics');
12
+ require('@schematics/angular/utility');
13
+
14
+ const LABEL = '[textarea-signals]';
15
+ const TS_EXT = '.ts';
16
+ const HTML_EXT = '.html';
17
+ /** Applies text-span edits to `content`, right-to-left, so earlier edits don't shift later offsets. */
18
+ function applyEdits(content, edits) {
19
+ const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
20
+ let result = content;
21
+ for (const { start, end, text } of sorted) {
22
+ result = result.slice(0, start) + text + result.slice(end);
23
+ }
24
+ return result;
25
+ }
26
+ const isFunctionLike = (node) => ts.isFunctionDeclaration(node) ||
27
+ ts.isMethodDeclaration(node) ||
28
+ ts.isConstructorDeclaration(node) ||
29
+ ts.isArrowFunction(node) ||
30
+ ts.isFunctionExpression(node) ||
31
+ ts.isGetAccessorDeclaration(node) ||
32
+ ts.isSetAccessorDeclaration(node);
33
+ /** Walks up from `node` to the nearest ancestor matching `predicate`. */
34
+ function findAncestor(node, predicate) {
35
+ let current = node.parent;
36
+ while (current) {
37
+ if (predicate(current))
38
+ return current;
39
+ current = current.parent;
40
+ }
41
+ return undefined;
42
+ }
43
+ /** Whether a type annotation refers to `typeName`. */
44
+ function isTypeReference(type, typeName) {
45
+ return !!type && ts.isTypeReferenceNode(type) && ts.isIdentifier(type.typeName) && type.typeName.text === typeName;
46
+ }
47
+ const FIELD_MODIFIERS = new Set([
48
+ ts.SyntaxKind.PrivateKeyword,
49
+ ts.SyntaxKind.PublicKeyword,
50
+ ts.SyntaxKind.ProtectedKeyword,
51
+ ts.SyntaxKind.ReadonlyKeyword
52
+ ]);
53
+ /**
54
+ * Collects the receivers annotated with `typeName`, by explicit annotation only (no cross-package type
55
+ * resolution): method/function params, class fields (incl. `@ViewChild(KbqTextarea) x: KbqTextarea` and constructor
56
+ * parameter-properties) and typed locals.
57
+ */
58
+ function collectReceivers(sourceFile, typeName) {
59
+ const receivers = [];
60
+ const add = (text, scope) => receivers.push({ text, start: scope.getStart(sourceFile), end: scope.getEnd() });
61
+ const visit = (node) => {
62
+ if (ts.isParameter(node) && ts.isIdentifier(node.name) && isTypeReference(node.type, typeName)) {
63
+ add(node.name.text, findAncestor(node, isFunctionLike) ?? sourceFile);
64
+ // A constructor parameter-property is also a class field, reachable as `this.<name>`.
65
+ if (node.modifiers?.some((modifier) => FIELD_MODIFIERS.has(modifier.kind))) {
66
+ const owner = findAncestor(node, ts.isClassDeclaration);
67
+ if (owner)
68
+ add(`this.${node.name.text}`, owner);
69
+ }
70
+ }
71
+ else if (ts.isPropertyDeclaration(node) &&
72
+ ts.isIdentifier(node.name) &&
73
+ isTypeReference(node.type, typeName)) {
74
+ const owner = findAncestor(node, ts.isClassDeclaration);
75
+ if (owner)
76
+ add(`this.${node.name.text}`, owner);
77
+ }
78
+ else if (ts.isVariableDeclaration(node) &&
79
+ ts.isIdentifier(node.name) &&
80
+ isTypeReference(node.type, typeName)) {
81
+ add(node.name.text, findAncestor(node, isFunctionLike) ?? sourceFile);
82
+ }
83
+ node.forEachChild(visit);
84
+ };
85
+ visit(sourceFile);
86
+ return receivers;
87
+ }
88
+ /** Whether a property access on a receiver is within one of the receiver's scopes. */
89
+ function inReceiverScope(node, sourceFile, receivers) {
90
+ const receiverText = node.expression.getText(sourceFile);
91
+ const start = node.getStart(sourceFile);
92
+ const end = node.getEnd();
93
+ return receivers.some((r) => r.text === receiverText && start >= r.start && end <= r.end);
94
+ }
95
+ /** Binary operators that make their left operand a write target rather than a read. */
96
+ const ASSIGNMENT_OPERATORS = new Set([
97
+ ts.SyntaxKind.EqualsToken,
98
+ ts.SyntaxKind.PlusEqualsToken,
99
+ ts.SyntaxKind.MinusEqualsToken,
100
+ ts.SyntaxKind.AsteriskEqualsToken,
101
+ ts.SyntaxKind.AsteriskAsteriskEqualsToken,
102
+ ts.SyntaxKind.SlashEqualsToken,
103
+ ts.SyntaxKind.PercentEqualsToken,
104
+ ts.SyntaxKind.LessThanLessThanEqualsToken,
105
+ ts.SyntaxKind.GreaterThanGreaterThanEqualsToken,
106
+ ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken,
107
+ ts.SyntaxKind.AmpersandEqualsToken,
108
+ ts.SyntaxKind.BarEqualsToken,
109
+ ts.SyntaxKind.CaretEqualsToken,
110
+ ts.SyntaxKind.BarBarEqualsToken,
111
+ ts.SyntaxKind.AmpersandAmpersandEqualsToken,
112
+ ts.SyntaxKind.QuestionQuestionEqualsToken
113
+ ]);
114
+ /** Unary operators that write their operand back. Every other prefix operator is a plain read. */
115
+ const INCREMENT_OPERATORS = new Set([ts.SyntaxKind.PlusPlusToken, ts.SyntaxKind.MinusMinusToken]);
116
+ /** Whether `node` sits on the left of a destructuring assignment, where it is written rather than read. */
117
+ function isDestructuringTarget(node) {
118
+ let current = node;
119
+ while (ts.isPropertyAssignment(current.parent) ||
120
+ ts.isShorthandPropertyAssignment(current.parent) ||
121
+ ts.isSpreadAssignment(current.parent) ||
122
+ ts.isSpreadElement(current.parent) ||
123
+ ts.isObjectLiteralExpression(current.parent) ||
124
+ ts.isArrayLiteralExpression(current.parent)) {
125
+ current = current.parent;
126
+ }
127
+ return (ts.isBinaryExpression(current.parent) &&
128
+ current.parent.left === current &&
129
+ ASSIGNMENT_OPERATORS.has(current.parent.operatorToken.kind));
130
+ }
131
+ /** Classifies a matched property access and appends the resulting edit(s). */
132
+ function classifyAccess(node, edits) {
133
+ const parent = node.parent;
134
+ // Already migrated: `x.maxRows()` — leave alone (idempotent).
135
+ if (ts.isCallExpression(parent) && parent.expression === node)
136
+ return;
137
+ // Write target, in every shape. Each migrated member is an `input()` or a read-only `computed`, so a
138
+ // write has no mechanical translation: it is left untouched and becomes the read-only error the
139
+ // consumer fixes by hand. Appending `()` to it would produce unparseable TypeScript instead.
140
+ if (ts.isBinaryExpression(parent) && parent.left === node && ASSIGNMENT_OPERATORS.has(parent.operatorToken.kind))
141
+ return;
142
+ // `x.maxRows++` / `--x.maxRows` and `delete x.maxRows` are writes too. Only the increment operators
143
+ // count: a `PrefixUnaryExpression` is also how `!x.maxRowLimitReached` is spelled, and that is a read.
144
+ if (ts.isPostfixUnaryExpression(parent) && parent.operand === node)
145
+ return;
146
+ if (ts.isPrefixUnaryExpression(parent) && parent.operand === node && INCREMENT_OPERATORS.has(parent.operator))
147
+ return;
148
+ if (ts.isDeleteExpression(parent))
149
+ return;
150
+ if (isDestructuringTarget(node))
151
+ return;
152
+ // Read (incl. optional chain `x?.maxRows`): append `()`.
153
+ edits.push({ start: node.getEnd(), end: node.getEnd(), text: '()' });
154
+ }
155
+ /** Collects edits for every read/write of a value-safe signal member on a known textarea receiver. */
156
+ function collectAccessEdits(sourceFile, receivers) {
157
+ const edits = [];
158
+ const visit = (node) => {
159
+ if (ts.isPropertyAccessExpression(node) &&
160
+ ts.isIdentifier(node.name) &&
161
+ migrations_textareaSignals_data.SIGNAL_MEMBERS.includes(node.name.text) &&
162
+ inReceiverScope(node, sourceFile, receivers)) {
163
+ classifyAccess(node, edits);
164
+ }
165
+ node.forEachChild(visit);
166
+ };
167
+ visit(sourceFile);
168
+ return edits;
169
+ }
170
+ /** Collects the members read on a textarea receiver that need manual migration. */
171
+ function collectValueChangedAccess(sourceFile, receivers) {
172
+ const valueChanged = new Set();
173
+ const visit = (node) => {
174
+ if (ts.isPropertyAccessExpression(node) &&
175
+ ts.isIdentifier(node.name) &&
176
+ migrations_textareaSignals_data.VALUE_CHANGED_MEMBERS.includes(node.name.text) &&
177
+ inReceiverScope(node, sourceFile, receivers)) {
178
+ valueChanged.add(node.name.text);
179
+ }
180
+ node.forEachChild(visit);
181
+ };
182
+ visit(sourceFile);
183
+ return valueChanged;
184
+ }
185
+ /** Pass A — rewrite value-safe programmatic reads of textarea signal members in TypeScript code. */
186
+ function migrateTsExpressions(content, fileName) {
187
+ const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
188
+ const receivers = collectReceivers(sourceFile, migrations_textareaSignals_data.TEXTAREA_TYPE);
189
+ if (receivers.length === 0)
190
+ return content;
191
+ const edits = collectAccessEdits(sourceFile, receivers);
192
+ return edits.length > 0 ? applyEdits(content, edits) : content;
193
+ }
194
+ /** Emits precise, receiver-scoped warnings for the members that can't be auto-fixed. */
195
+ function warnReceiverMembers(context, filePath, content) {
196
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
197
+ const receivers = collectReceivers(sourceFile, migrations_textareaSignals_data.TEXTAREA_TYPE);
198
+ if (receivers.length === 0)
199
+ return;
200
+ const valueChanged = collectValueChangedAccess(sourceFile, receivers);
201
+ if (valueChanged.size > 0) {
202
+ utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_textareaSignals_data.valueChangedMessage(valueChanged)}`]);
203
+ }
204
+ }
205
+ function logWarnings(context, filePath, content) {
206
+ for (const { anchor, pattern, message } of migrations_textareaSignals_data.warnPatterns) {
207
+ if (!new RegExp(anchor).test(content) || !new RegExp(pattern).test(content))
208
+ continue;
209
+ utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
210
+ }
211
+ }
212
+ function escapeRegExp(value) {
213
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
214
+ }
215
+ /**
216
+ * Matches `<ref>.<member>` where the access is neither already a call nor a signal-API call. A template can
217
+ * only read these, so an assignment never needs excluding. The dot is matched with the whitespace around it
218
+ * - Angular's expression grammar allows `t . maxRows` and a binding wrapped over two lines - and that
219
+ * whitespace is captured so the rewrite keeps the layout.
220
+ */
221
+ function memberAccessPattern(ref, members) {
222
+ const methods = [...migrations_textareaSignals_data.SIGNAL_API_METHODS].join('|');
223
+ return new RegExp(`\\b(${escapeRegExp(ref)})(\\s*\\.\\s*)(${members.join('|')})\\b(?!\\s*\\()(?!\\s*\\.\\s*(?:${methods})\\b)`, 'g');
224
+ }
225
+ /** Reference variables bound to the textarea: `#t="kbqTextarea"` on any element. */
226
+ class TemplateCollector {
227
+ constructor() {
228
+ this.refs = new Set();
229
+ }
230
+ visitElement(element) {
231
+ for (const attr of element.attrs ?? []) {
232
+ if (typeof attr.name !== 'string' || attr.value !== migrations_textareaSignals_data.TEXTAREA_EXPORT_AS)
233
+ continue;
234
+ if (attr.name.startsWith('#'))
235
+ this.refs.add(attr.name.slice(1));
236
+ else if (attr.name.startsWith('ref-'))
237
+ this.refs.add(attr.name.slice(4));
238
+ }
239
+ this.visitChildren(element);
240
+ }
241
+ visitBlock(block) {
242
+ this.visitChildren(block);
243
+ }
244
+ visitChildren(node) {
245
+ utils_ast.visitAll(this, node.children ?? []);
246
+ }
247
+ visitAttribute() { }
248
+ visitText() { }
249
+ visitComment() { }
250
+ visitExpansion() { }
251
+ visitExpansionCase() { }
252
+ visitBlockParameter() { }
253
+ visitLetDeclaration() { }
254
+ }
255
+ /** Pass B - rewrite reads through a textarea reference variable and report the ones that changed value. */
256
+ async function migrateTemplate(template) {
257
+ const untouched = { content: template, changed: false, manual: new Set(), unparseable: false };
258
+ if (!template.includes(migrations_textareaSignals_data.TEXTAREA_EXPORT_AS))
259
+ return untouched;
260
+ const parsed = await utils_typescript.parseTemplate(template);
261
+ if (!parsed.tree)
262
+ return { ...untouched, unparseable: true };
263
+ const collector = new TemplateCollector();
264
+ utils_ast.visitAll(collector, parsed.tree.rootNodes);
265
+ const refs = [...collector.refs];
266
+ if (refs.length === 0)
267
+ return untouched;
268
+ const manual = new Set();
269
+ let content = template;
270
+ let changed = false;
271
+ for (const ref of refs) {
272
+ for (const match of template.matchAll(memberAccessPattern(ref, migrations_textareaSignals_data.VALUE_CHANGED_MEMBERS))) {
273
+ manual.add(match[3]);
274
+ }
275
+ const next = content.replace(memberAccessPattern(ref, migrations_textareaSignals_data.SIGNAL_MEMBERS), '$1$2$3()');
276
+ if (next !== content) {
277
+ content = next;
278
+ changed = true;
279
+ }
280
+ }
281
+ return { content, changed, manual, unparseable: false };
282
+ }
283
+ /** Pass B (inline) - the same, inside inline component templates. */
284
+ async function migrateInlineTemplates(content, fileName) {
285
+ const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
286
+ const manual = new Set();
287
+ let result = content;
288
+ let changed = false;
289
+ let unparseable = false;
290
+ // Splice right-to-left so earlier offsets stay valid.
291
+ for (const { start, end } of utils_typescript.collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start)) {
292
+ const migrated = await migrateTemplate(result.slice(start, end));
293
+ migrated.manual.forEach((member) => manual.add(member));
294
+ unparseable ||= migrated.unparseable;
295
+ if (migrated.changed) {
296
+ result = result.slice(0, start) + migrated.content + result.slice(end);
297
+ changed = true;
298
+ }
299
+ }
300
+ return { content: result, changed, manual, unparseable };
301
+ }
302
+ /**
303
+ * A `.ts` file is a textarea consumer if it names any of the exported symbols or imports the package. There
304
+ * is no element to look for: `kbqTextarea` is an attribute on a native `<textarea>`.
305
+ */
306
+ function referencesTextarea(content) {
307
+ return /\bKbqTextarea\w*\b/.test(content) || content.includes(migrations_textareaSignals_data.TEXTAREA_PACKAGE);
308
+ }
309
+ function textareaSignals(options) {
310
+ return async (tree, context) => {
311
+ const { project } = options;
312
+ // `ng update` runs a migration with no options at all, and `migrations.json` declares no schema, so
313
+ // the schema default never reaches the rule: without this the migration would only ever report.
314
+ const fix = options.fix ?? true;
315
+ const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
316
+ const root = projectDefinition?.root ?? '';
317
+ const rootDir = root ? tree.getDir(root) : tree.root;
318
+ const tsPaths = [];
319
+ const htmlPaths = [];
320
+ utils_packageConfig.visitProjectFiles(rootDir, (filePath) => {
321
+ if (filePath.endsWith(TS_EXT))
322
+ tsPaths.push(filePath);
323
+ else if (filePath.endsWith(HTML_EXT))
324
+ htmlPaths.push(filePath);
325
+ });
326
+ let touched = 0;
327
+ let consumers = 0;
328
+ const commit = (filePath, original, updated) => {
329
+ if (updated === original)
330
+ return;
331
+ touched++;
332
+ if (fix) {
333
+ tree.overwrite(filePath, updated);
334
+ }
335
+ else {
336
+ utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
337
+ }
338
+ };
339
+ const report = (filePath, message) => utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
340
+ for (const filePath of tsPaths) {
341
+ const original = tree.read(filePath)?.toString();
342
+ if (!original || !referencesTextarea(original))
343
+ continue;
344
+ consumers++;
345
+ logWarnings(context, filePath, original);
346
+ warnReceiverMembers(context, filePath, original);
347
+ const inline = await migrateInlineTemplates(migrateTsExpressions(original, filePath), filePath);
348
+ if (inline.manual.size > 0)
349
+ report(filePath, migrations_textareaSignals_data.templateManualMessage(inline.manual));
350
+ if (inline.unparseable)
351
+ report(filePath, migrations_textareaSignals_data.UNPARSEABLE_TEMPLATE_MESSAGE);
352
+ commit(filePath, original, inline.content);
353
+ }
354
+ for (const filePath of htmlPaths) {
355
+ const original = tree.read(filePath)?.toString();
356
+ if (!original)
357
+ continue;
358
+ const migrated = await migrateTemplate(original);
359
+ if (!migrated.changed && migrated.manual.size === 0 && !migrated.unparseable)
360
+ continue;
361
+ consumers++;
362
+ if (migrated.manual.size > 0)
363
+ report(filePath, migrations_textareaSignals_data.templateManualMessage(migrated.manual));
364
+ if (migrated.unparseable)
365
+ report(filePath, migrations_textareaSignals_data.UNPARSEABLE_TEMPLATE_MESSAGE);
366
+ commit(filePath, original, migrated.content);
367
+ }
368
+ // Nothing here uses the textarea, so the summary would only be noise.
369
+ if (consumers === 0)
370
+ return;
371
+ utils_messages.logMessage(context.logger, [
372
+ `${LABEL} processed tree under "${root || '<workspace root>'}", ` +
373
+ `${fix ? 'updated' : 'would update'} ${touched} file(s).`,
374
+ ...migrations_textareaSignals_data.SUMMARY
375
+ ]);
376
+ };
377
+ }
378
+
379
+ exports.default = textareaSignals;
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "koobiq-components-textarea-signals",
4
+ "title": "Koobiq components textarea signals migration",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Name of the project to migrate. If omitted, the migration runs over the whole tree.",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ }
13
+ },
14
+ "fix": {
15
+ "type": "boolean",
16
+ "default": true,
17
+ "description": "When true, applies all auto-fix replacements. When false, prints what would change without writing."
18
+ }
19
+ }
20
+ }