@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,47 @@
1
+ # divider-signals-and-aria
2
+
3
+ Migration schematic invoked automatically by `ng update @koobiq/components`.
4
+ Reports what the divider review changed for a consumer: the two inputs that became signals, and the
5
+ separator semantics the component now renders itself. It never writes to the tree.
6
+
7
+ It reads `.ts` and `.html`. In TypeScript it resolves the receiver's declared type before reporting
8
+ anything, so only a member access on something annotated `KbqDivider` counts — `vertical` and
9
+ `paddings` are ordinary property names, and a file that renders a divider is very likely to contain
10
+ unrelated ones. Declarations of other types are tracked too, so an inner one shadowing a divider
11
+ receiver is seen to shadow it. The trade is that the type has to be written down: a receiver whose
12
+ type is only inferred is not recognised.
13
+
14
+ ## Background
15
+
16
+ | Member / behaviour | Before | After |
17
+ | ------------------- | ------------- | -------------------------------------------- |
18
+ | `vertical` | accessor pair | `InputSignalWithTransform<boolean, unknown>` |
19
+ | `paddings` | accessor pair | `InputSignalWithTransform<boolean, unknown>` |
20
+ | `decorative` | — | new input, renders `role="presentation"` |
21
+ | separator semantics | none | `role="separator"` + `aria-orientation` |
22
+
23
+ Both inputs kept their names, so `[vertical]` and `[paddings]` bindings are unchanged; only TypeScript
24
+ that reads or writes them through a component reference is affected.
25
+
26
+ ## What it does _not_ do
27
+
28
+ Nothing is rewritten. A read of a signal input becomes a call, a write becomes a template binding, and
29
+ whether a duplicated `role` should be deleted or replaced by `decorative` depends on what the divider
30
+ is for.
31
+
32
+ | Pattern | Manual migration |
33
+ | ------------------------------------ | --------------------------------------------------------------------- |
34
+ | `.vertical = …` / `.paddings = …` | Bind `[vertical]` / `[paddings]` — a signal input takes no assignment |
35
+ | `.vertical` / `.paddings` | Read them as calls |
36
+ | `<kbq-divider role="…">` | Drop it; the component renders `role="separator"` |
37
+ | `<kbq-divider aria-orientation="…">` | Drop it; it follows `vertical` |
38
+ | `<kbq-divider aria-hidden="true">` | Still honoured; `decorative` says the same thing through the input |
39
+
40
+ A comparison (`d.vertical === true`) is reported as a read, not a write. It keeps compiling after the
41
+ migration and quietly compares against the signal itself, so it is the case most worth looking at.
42
+
43
+ ## Running it manually
44
+
45
+ ```
46
+ ng generate @koobiq/components:divider-signals-and-aria --project my-app
47
+ ```
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Data for the `divider-signals-and-aria` migration.
5
+ *
6
+ * The divider review changed two things a consumer can notice:
7
+ *
8
+ * - `vertical` and `paddings` are signal inputs instead of accessor pairs, so a read is a call and a
9
+ * write is a template binding. Both kept their names, so no template needs migrating.
10
+ * - The host carries `role="separator"` and, when vertical, `aria-orientation="vertical"`, with a
11
+ * `decorative` input that swaps to `role="presentation"`. Hand-rolled attributes are duplicates.
12
+ *
13
+ * Warn-only. A read that becomes a call and a hand-rolled attribute that becomes a duplicate are both
14
+ * decisions about the call site, not rewrites that can be derived from it.
15
+ */
16
+ /** Import specifier that marks a file as a divider consumer. */
17
+ const DIVIDER_PACKAGE = '@koobiq/components/divider';
18
+ /** The class a receiver has to be annotated with for its member access to be a divider's. */
19
+ const DIVIDER_TYPE_NAME = 'KbqDivider';
20
+ /** Identifier and element shapes that mark a file worth parsing at all. */
21
+ const DIVIDER_TYPE = '\\bKbqDivider\\w*\\b|\\bkbq-divider\\b';
22
+ /** The inputs that stopped being accessor pairs. */
23
+ const SIGNAL_INPUTS = ['vertical', 'paddings'];
24
+ const WRITE_MESSAGE = 'KbqDivider.vertical and KbqDivider.paddings are signal inputs and take no assignment. Bind ' +
25
+ '[vertical] / [paddings] in the template instead; both kept their names, so the binding itself ' +
26
+ 'is unchanged.';
27
+ const READ_MESSAGE = 'KbqDivider.vertical and KbqDivider.paddings are signal-backed: read them as calls, ' +
28
+ 'divider.vertical() and divider.paddings().';
29
+ /**
30
+ * Template warnings. The element name carries the scope here, so unlike the member access on the
31
+ * TypeScript side these need no receiver to resolve — the attribute is on `<kbq-divider>` or it is not.
32
+ */
33
+ const templateWarnPatterns = [
34
+ {
35
+ pattern: '<kbq-divider[^>]*\\b(?:role|aria-orientation)\\s*=',
36
+ message: 'kbq-divider renders role="separator" itself, plus aria-orientation="vertical" when vertical, ' +
37
+ 'so a hand-rolled role or aria-orientation on the element is a duplicate. Drop it, or set ' +
38
+ '`decorative` for a divider that only repeats a boundary the layout already conveys.'
39
+ },
40
+ {
41
+ pattern: '<kbq-divider[^>]*\\baria-hidden\\s*=',
42
+ message: 'A hand-rolled aria-hidden on kbq-divider still works and is left alone, but `decorative` says ' +
43
+ 'the same thing through the component: it renders role="presentation" instead of "separator".'
44
+ }
45
+ ];
46
+ /** Printed once per project, after the per-file reports. */
47
+ const SUMMARY = [
48
+ ' Both inputs kept their names, so [vertical] and [paddings] bindings are unchanged - only ' +
49
+ 'TypeScript that reads or writes them through a component reference is affected.',
50
+ ' The host renders role="separator", and aria-orientation="vertical" when vertical, so a ' +
51
+ 'hand-rolled one on the element is a duplicate. A divider that only repeats a boundary the ' +
52
+ 'layout already conveys should set decorative instead.'
53
+ ];
54
+
55
+ exports.DIVIDER_PACKAGE = DIVIDER_PACKAGE;
56
+ exports.DIVIDER_TYPE = DIVIDER_TYPE;
57
+ exports.DIVIDER_TYPE_NAME = DIVIDER_TYPE_NAME;
58
+ exports.READ_MESSAGE = READ_MESSAGE;
59
+ exports.SIGNAL_INPUTS = SIGNAL_INPUTS;
60
+ exports.SUMMARY = SUMMARY;
61
+ exports.WRITE_MESSAGE = WRITE_MESSAGE;
62
+ exports.templateWarnPatterns = templateWarnPatterns;
@@ -0,0 +1,211 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var ts = require('typescript');
6
+ var utils_messages = require('../../utils/messages.js');
7
+ var utils_packageConfig = require('../../package-config-BhU2TfC8.js');
8
+ var migrations_dividerSignalsAndAria_data = require('./data.js');
9
+ require('@angular-devkit/schematics');
10
+ require('@schematics/angular/utility');
11
+
12
+ const LABEL = '[divider-signals-and-aria]';
13
+ const TS_EXT = '.ts';
14
+ const HTML_EXT = '.html';
15
+ /** A file is worth parsing if it imports the package, names the component, or renders one. */
16
+ function referencesDivider(content) {
17
+ return content.includes(migrations_dividerSignalsAndAria_data.DIVIDER_PACKAGE) || new RegExp(migrations_dividerSignalsAndAria_data.DIVIDER_TYPE).test(content);
18
+ }
19
+ const isFunctionLike = (node) => ts.isFunctionDeclaration(node) ||
20
+ ts.isMethodDeclaration(node) ||
21
+ ts.isConstructorDeclaration(node) ||
22
+ ts.isArrowFunction(node) ||
23
+ ts.isFunctionExpression(node) ||
24
+ ts.isGetAccessorDeclaration(node) ||
25
+ ts.isSetAccessorDeclaration(node);
26
+ /** Nodes that confine a `let`/`const` declared inside them. */
27
+ const isBlockScopeContainer = (node) => ts.isBlock(node) ||
28
+ ts.isSourceFile(node) ||
29
+ ts.isModuleBlock(node) ||
30
+ ts.isCaseBlock(node) ||
31
+ ts.isForStatement(node) ||
32
+ ts.isForInStatement(node) ||
33
+ ts.isForOfStatement(node);
34
+ const FIELD_MODIFIERS = new Set([
35
+ ts.SyntaxKind.PrivateKeyword,
36
+ ts.SyntaxKind.PublicKeyword,
37
+ ts.SyntaxKind.ProtectedKeyword,
38
+ ts.SyntaxKind.ReadonlyKeyword
39
+ ]);
40
+ /** Walks up from `node` to the nearest ancestor matching `predicate`. */
41
+ function findAncestor(node, predicate) {
42
+ let current = node.parent;
43
+ while (current) {
44
+ if (predicate(current))
45
+ return current;
46
+ current = current.parent;
47
+ }
48
+ return undefined;
49
+ }
50
+ /** Whether a type annotation names `KbqDivider`. Explicit annotations only — no cross-package resolution. */
51
+ const isDividerType = (type) => !!type &&
52
+ ts.isTypeReferenceNode(type) &&
53
+ ts.isIdentifier(type.typeName) &&
54
+ type.typeName.text === migrations_dividerSignalsAndAria_data.DIVIDER_TYPE_NAME;
55
+ /**
56
+ * Scope a local is visible in: a `let`/`const` is confined to its nearest block, a `var` to the whole
57
+ * function. Giving a block-scoped local the whole function would let an access elsewhere match it even
58
+ * where the name refers to a different, shadowing declaration.
59
+ */
60
+ function variableScope(node, sourceFile) {
61
+ const blockScoped = !!(node.parent.flags & ts.NodeFlags.BlockScoped);
62
+ return findAncestor(node, blockScoped ? isBlockScopeContainer : isFunctionLike) ?? sourceFile;
63
+ }
64
+ /**
65
+ * Collects the receivers annotated `KbqDivider` — method/function params, class fields (including
66
+ * `@ViewChild(KbqDivider) x!: KbqDivider` and constructor parameter-properties) and typed locals.
67
+ *
68
+ * `vertical` and `paddings` are ordinary property names that plenty of unrelated objects carry, so the
69
+ * receiver is what makes an access the divider's. Params and locals of any other type are collected as
70
+ * well, so that a nested declaration reusing the name is seen to shadow the divider one.
71
+ */
72
+ function collectReceivers(sourceFile) {
73
+ const receivers = [];
74
+ const add = (text, scope, isDivider) => receivers.push({ text, start: scope.getStart(sourceFile), end: scope.getEnd(), isDivider });
75
+ const visit = (node) => {
76
+ if (ts.isParameter(node) && ts.isIdentifier(node.name)) {
77
+ const isDivider = isDividerType(node.type);
78
+ add(node.name.text, findAncestor(node, isFunctionLike) ?? sourceFile, isDivider);
79
+ // A constructor parameter-property is also a class field, reachable as `this.<name>`.
80
+ if (isDivider && node.modifiers?.some((modifier) => FIELD_MODIFIERS.has(modifier.kind))) {
81
+ const owner = findAncestor(node, ts.isClassDeclaration);
82
+ if (owner)
83
+ add(`this.${node.name.text}`, owner, true);
84
+ }
85
+ }
86
+ else if (ts.isPropertyDeclaration(node) && ts.isIdentifier(node.name)) {
87
+ const owner = isDividerType(node.type) && findAncestor(node, ts.isClassDeclaration);
88
+ if (owner)
89
+ add(`this.${node.name.text}`, owner, true);
90
+ }
91
+ else if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {
92
+ add(node.name.text, variableScope(node, sourceFile), isDividerType(node.type));
93
+ }
94
+ node.forEachChild(visit);
95
+ };
96
+ visit(sourceFile);
97
+ return receivers;
98
+ }
99
+ /**
100
+ * Whether a property access resolves to a divider receiver. The innermost enclosing declaration wins: a
101
+ * nested param or local shadows an outer one of the same name.
102
+ */
103
+ function isDividerAccess(node, sourceFile, receivers) {
104
+ const receiverText = node.expression.getText(sourceFile);
105
+ const start = node.getStart(sourceFile);
106
+ const end = node.getEnd();
107
+ let innermost;
108
+ for (const receiver of receivers) {
109
+ if (receiver.text !== receiverText || start < receiver.start || end > receiver.end)
110
+ continue;
111
+ if (!innermost || receiver.start > innermost.start)
112
+ innermost = receiver;
113
+ }
114
+ return !!innermost?.isDivider;
115
+ }
116
+ /**
117
+ * Whether the access is the target of an assignment — plain (`=`) or compound (`+=`, `||=`, `??=`, ...).
118
+ * Asking the AST rather than the operator's spelling is what keeps a comparison (`===`) on the read side,
119
+ * where it belongs: it stays legal after the migration and silently compares against the signal itself.
120
+ */
121
+ function isAssignmentTarget(node) {
122
+ const parent = node.parent;
123
+ if (ts.isBinaryExpression(parent) && parent.left === node) {
124
+ // The assignment operators are contiguous in `SyntaxKind` and the comparisons sit well below
125
+ // them, so the range covers `=` through `??=` without catching `==` / `===` / `>=`.
126
+ const operator = parent.operatorToken.kind;
127
+ return operator >= ts.SyntaxKind.FirstAssignment && operator <= ts.SyntaxKind.LastAssignment;
128
+ }
129
+ return ((ts.isPostfixUnaryExpression(parent) || ts.isPrefixUnaryExpression(parent)) &&
130
+ (parent.operator === ts.SyntaxKind.PlusPlusToken || parent.operator === ts.SyntaxKind.MinusMinusToken));
131
+ }
132
+ /** The already-migrated shape — `divider.vertical()` needs no report. */
133
+ const isCallee = (node) => ts.isCallExpression(node.parent) && node.parent.expression === node;
134
+ /** Reports the member accesses that resolve to a `KbqDivider`, split into writes and reads. */
135
+ function reportMemberAccess(context, filePath, content) {
136
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
137
+ const receivers = collectReceivers(sourceFile);
138
+ let writes = false;
139
+ let reads = false;
140
+ const visit = (node) => {
141
+ if (ts.isPropertyAccessExpression(node) &&
142
+ migrations_dividerSignalsAndAria_data.SIGNAL_INPUTS.includes(node.name.text) &&
143
+ !isCallee(node) &&
144
+ isDividerAccess(node, sourceFile, receivers)) {
145
+ if (isAssignmentTarget(node))
146
+ writes = true;
147
+ else
148
+ reads = true;
149
+ }
150
+ node.forEachChild(visit);
151
+ };
152
+ visit(sourceFile);
153
+ let reported = 0;
154
+ for (const message of [writes ? migrations_dividerSignalsAndAria_data.WRITE_MESSAGE : undefined, reads ? migrations_dividerSignalsAndAria_data.READ_MESSAGE : undefined]) {
155
+ if (!message)
156
+ continue;
157
+ reported++;
158
+ utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
159
+ }
160
+ return reported;
161
+ }
162
+ /** Reports every pattern that matches, one line per pattern. */
163
+ function reportPatterns(context, filePath, content, patterns) {
164
+ let reported = 0;
165
+ for (const { pattern, message } of patterns) {
166
+ if (!new RegExp(pattern).test(content))
167
+ continue;
168
+ reported++;
169
+ utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
170
+ }
171
+ return reported;
172
+ }
173
+ /**
174
+ * Reports the `KbqDivider` inputs that became signals, the hand-rolled separator attributes the component
175
+ * now renders itself. Never writes: a read becomes a call, a write becomes a binding, and whether a
176
+ * duplicate attribute should be deleted or replaced by `decorative` is a decision.
177
+ */
178
+ function dividerSignalsAndAria(options) {
179
+ return async (tree, context) => {
180
+ const { project } = options;
181
+ const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
182
+ const root = projectDefinition?.root ?? '';
183
+ const rootDir = root ? tree.getDir(root) : tree.root;
184
+ let consumers = 0;
185
+ let reported = 0;
186
+ utils_packageConfig.visitProjectFiles(rootDir, (filePath, entry) => {
187
+ const isTs = filePath.endsWith(TS_EXT);
188
+ const isHtml = filePath.endsWith(HTML_EXT);
189
+ if (!isTs && !isHtml)
190
+ return;
191
+ const content = entry?.content.toString();
192
+ if (!content || !referencesDivider(content))
193
+ return;
194
+ consumers++;
195
+ // An inline template lives in the `.ts` file, so the element patterns apply to both.
196
+ reported += reportPatterns(context, filePath, content, migrations_dividerSignalsAndAria_data.templateWarnPatterns);
197
+ if (isTs)
198
+ reported += reportMemberAccess(context, filePath, content);
199
+ });
200
+ // Nothing here renders a divider, so the summary would only be noise.
201
+ if (consumers === 0)
202
+ return;
203
+ utils_messages.logMessage(context.logger, [
204
+ `${LABEL} processed kbq-divider under "${root || '<workspace root>'}", ` +
205
+ `${consumers} file(s) reference the component, ${reported} report(s) emitted.`,
206
+ ...migrations_dividerSignalsAndAria_data.SUMMARY
207
+ ]);
208
+ };
209
+ }
210
+
211
+ exports.default = dividerSignalsAndAria;
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "koobiq-components-divider-signals-and-aria",
4
+ "title": "Koobiq components divider review migration",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Name of the project to inspect. If omitted, the migration runs over the whole tree.",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ }
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,59 @@
1
+ # dl-attribute-coercion
2
+
3
+ Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for
4
+ `21.0.0-0`). Reports the `<kbq-dl>` attributes and bindings whose coercion changed. It never writes to
5
+ the tree.
6
+
7
+ ## Background
8
+
9
+ `KbqDlComponent` was already fully signal-based, so the review had nothing to migrate. What it found
10
+ were the four inputs that never got a coercion transform, next to siblings that had one:
11
+
12
+ ```ts
13
+ readonly verticalBreakpoint = input(400, { transform: numberAttribute });
14
+ readonly dtMinWidth = input<number | undefined>(); // no transform
15
+ readonly wide = input(false); // no transform
16
+ ```
17
+
18
+ So `<kbq-dl wide>` passed the empty string — falsy — and the attribute did nothing, while
19
+ `<kbq-dl resizable>` right next to it worked.
20
+
21
+ `vertical` is tri-state: `null` means "decide from `verticalBreakpoint`". `booleanAttribute` would
22
+ have folded that into `false`, so it uses a transform that preserves `null`.
23
+
24
+ ## What it does _not_ do
25
+
26
+ Nothing is rewritten. Whether markup relied on a valueless `wide` being ignored is a decision the
27
+ call site owns, and so is what a non-numeric width was meant to say.
28
+
29
+ | Pattern | Manual migration |
30
+ | -------------------------------------------- | ---------------------------------------------------------------------- |
31
+ | `<kbq-dl wide>` / `<kbq-dl wide="">` | Remove it if the markup was relying on it being ignored |
32
+ | `<kbq-dl vertical>` / `<kbq-dl vertical="">` | Rewrite as `[vertical]="false"` — see below |
33
+ | `wide="false"` / `vertical="false"` | Meant true, means false now — drop the attribute to keep it true |
34
+ | `<kbq-dl dtMinWidth>` and the other widths | A value that is not a finite number reports `undefined`, not `0` |
35
+ | `<kbq-dl dtWidth>` | Same, but its empty state is `null`; it also skipped the min clamp |
36
+ | `[wide]` / `[vertical]` / `[dtMinWidth]` … | The bound value goes through the transform — check what it resolves to |
37
+
38
+ `<kbq-dl vertical>` is the one that looks inert and is not. The untransformed input held `''`, which
39
+ is not `null`, so the breakpoint branch never ran and the list stayed pinned horizontal. Deleting the
40
+ attribute hands that decision back to `verticalBreakpoint`; `[vertical]="false"` preserves the
41
+ behavior.
42
+
43
+ A numeric literal is not reported: `Math.max` applies `ToNumber` to its arguments, so
44
+ `<kbq-dl dtMinWidth="120">` produced `120` on either side of the change.
45
+
46
+ ## Notes with no call site to point at
47
+
48
+ - `dtWidth` is an aliased input plus a `linkedSignal` and an explicit `dtWidthChange` output rather
49
+ than a `model()`, because `model()` takes no `transform`. `[(dtWidth)]` is unchanged; only code that
50
+ typed the member as `ModelSignal<number | null>` has to say `WritableSignal<number | null>`.
51
+ - `dtMinWidth` and `ddMinWidth` report `number | undefined`, which is what an unbound
52
+ description list always held. A value that is not a finite number reads as `undefined` rather than
53
+ as `NaN`, so `?? fallback` at a call site fires.
54
+
55
+ ## Running it manually
56
+
57
+ ```
58
+ ng generate @koobiq/components:dl-attribute-coercion --project my-app
59
+ ```
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Data for the `dl-attribute-coercion` migration.
5
+ *
6
+ * `KbqDlComponent` was already fully signal-based; the review found the four inputs that never got a
7
+ * coercion transform, so a static attribute reached them as a string and a binding reached them raw.
8
+ *
9
+ * - `<kbq-dl wide>` and `<kbq-dl wide="">` passed the empty string, which is falsy - the attribute did
10
+ * nothing, and it means true now
11
+ * - `<kbq-dl wide="false">` passed a non-empty string, which is truthy - it meant true, and means false now
12
+ * - `vertical` is tri-state, so it keeps `null` through a transform that preserves it rather than
13
+ * `booleanAttribute`, which would fold "decide from the breakpoint" into false
14
+ * - `dtMinWidth` and `ddMinWidth` reached the layout arithmetic as strings; a value that is
15
+ * not a finite number now reads as `undefined` rather than reaching it at all
16
+ *
17
+ * Warn-only: every one of these is a template change, and which markup relied on the old reading is a
18
+ * decision the call site owns.
19
+ */
20
+ /** Import specifier that marks a file as a description list consumer. */
21
+ const DL_PACKAGE = '@koobiq/components/dl';
22
+ /** Element selector of the description list. */
23
+ const DL_ELEMENT = 'kbq-dl';
24
+ /** Boolean-ish inputs that gained a coercion transform. */
25
+ const BOOLEAN_ATTRIBUTES = ['wide', 'vertical'];
26
+ /** Numeric inputs that gained a coercion transform. */
27
+ const NUMERIC_ATTRIBUTES = ['dtMinWidth', 'ddMinWidth', 'dtWidth'];
28
+ /** `dtWidth` is the one numeric input whose "no width" state is `null` rather than `undefined`. */
29
+ const NULL_FALLBACK_ATTRIBUTES = ['dtWidth'];
30
+ /**
31
+ * A static `wide` / `vertical` that used to be ignored, because the empty string is falsy. The advice
32
+ * differs per attribute: `wide` really was inert, while `vertical` pinned the horizontal layout by not
33
+ * being `null`, so deleting it hands the decision back to `verticalBreakpoint`.
34
+ */
35
+ const falsyBooleanMessage = (attribute, line) => `Line ${line}: a valueless (or empty) \`${attribute}\` on <kbq-dl> used to pass the empty string, ` +
36
+ 'which is falsy, so it did nothing. It is coerced now and the attribute means true. ' +
37
+ (attribute === 'vertical'
38
+ ? 'Write `[vertical]="false"` to keep the previous behavior: an unrecognised `vertical` was not ' +
39
+ '`null`, so the list stayed pinned horizontal and never switched at `verticalBreakpoint` - ' +
40
+ 'deleting the attribute hands that decision back to the breakpoint.'
41
+ : 'Remove it if the markup was relying on it being ignored.');
42
+ /** A static `wide="false"` / `vertical="false"`: a non-empty string, so it used to be truthy. */
43
+ const truthyBooleanMessage = (attribute, value, line) => `Line ${line}: \`${attribute}="${value}"\` on <kbq-dl> used to pass a non-empty string, which is ` +
44
+ `truthy, so it meant *true*. It is coerced now, and \`booleanAttribute("${value}")\` is ` +
45
+ `${value === 'false' ? 'false' : 'true'}. This is the form whose meaning inverts.`;
46
+ /** A static numeric attribute that is not a finite number: it used to reach the arithmetic as a string. */
47
+ const numericAttributeMessage = (attribute, line) => {
48
+ const fallback = NULL_FALLBACK_ATTRIBUTES.includes(attribute) ? '`null`' : '`undefined`';
49
+ return (`Line ${line}: \`${attribute}\` on <kbq-dl> holds a value that is not a finite number. It used to ` +
50
+ `reach the layout arithmetic as a string, where \`Math.max(0, "")\` made it 0; it reports ${fallback} ` +
51
+ 'now, and the layout falls back to the measured term width. A numeric literal behaves as before.' +
52
+ (NULL_FALLBACK_ATTRIBUTES.includes(attribute)
53
+ ? ' `dtWidth` also skipped the clamp against `dtMinWidth` entirely while it held a string, ' +
54
+ 'so a column could render narrower than its own minimum.'
55
+ : ''));
56
+ };
57
+ /** A binding: the transform changes what the bound value means, with no compile error to point at it. */
58
+ const boundAttributeMessage = (attributes, line) => `Line ${line}: ${[...attributes].map((name) => `\`[${name}]\``).join(', ')} on <kbq-dl> now runs the ` +
59
+ 'bound value through a coercion. `[vertical]="undefined"` used to leave the input `undefined`, which ' +
60
+ 'is not `null`, so the list stayed pinned horizontal; it is `null` now and the breakpoint decides. ' +
61
+ 'On `wide`, every falsy non-boolean inverts: `0` and `""` were falsy and are `true` now. A numeric ' +
62
+ 'binding that resolves to a non-number reads as `undefined` instead of reaching the arithmetic.';
63
+ /** Reported when a template renders the element but cannot be parsed, so nothing in it was inspected. */
64
+ const UNPARSEABLE_TEMPLATE_MESSAGE = 'This template renders <kbq-dl> but could not be parsed, so none of its attributes were inspected. ' +
65
+ 'Check them by hand. If every template is reported this way, `@angular/compiler` could not be loaded ' +
66
+ 'from this install.';
67
+ /** Printed once per project, after the per-file reports. */
68
+ const SUMMARY = [
69
+ ' `vertical` keeps `null` as its default - the state that lets the list decide from ' +
70
+ '`verticalBreakpoint` - so it is coerced with a transform that preserves null rather than with ' +
71
+ '`booleanAttribute`, which would have folded it into false.',
72
+ ' `dtMinWidth` and `ddMinWidth` report `number | undefined`. A value that is not a ' +
73
+ 'finite number reads as `undefined` rather than as `NaN`, so `?? fallback` at a call site fires.'
74
+ ];
75
+
76
+ exports.BOOLEAN_ATTRIBUTES = BOOLEAN_ATTRIBUTES;
77
+ exports.DL_ELEMENT = DL_ELEMENT;
78
+ exports.DL_PACKAGE = DL_PACKAGE;
79
+ exports.NUMERIC_ATTRIBUTES = NUMERIC_ATTRIBUTES;
80
+ exports.SUMMARY = SUMMARY;
81
+ exports.UNPARSEABLE_TEMPLATE_MESSAGE = UNPARSEABLE_TEMPLATE_MESSAGE;
82
+ exports.boundAttributeMessage = boundAttributeMessage;
83
+ exports.falsyBooleanMessage = falsyBooleanMessage;
84
+ exports.numericAttributeMessage = numericAttributeMessage;
85
+ exports.truthyBooleanMessage = truthyBooleanMessage;
@@ -0,0 +1,161 @@
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_dlAttributeCoercion_data = require('./data.js');
11
+ require('@angular-devkit/schematics');
12
+ require('@schematics/angular/utility');
13
+
14
+ const LABEL = '[dl-attribute-coercion]';
15
+ const TS_EXT = '.ts';
16
+ const HTML_EXT = '.html';
17
+ /** A file is a description list consumer if it renders the element or imports the package. */
18
+ function referencesDl(content) {
19
+ return content.includes(`<${migrations_dlAttributeCoercion_data.DL_ELEMENT}`) || content.includes(migrations_dlAttributeCoercion_data.DL_PACKAGE);
20
+ }
21
+ /**
22
+ * The four attribute-name syntaxes that carry an Angular expression rather than a literal, with the
23
+ * bound name captured: `[x]`, `bind-x`, `[(x)]` and `bindon-x`.
24
+ *
25
+ * The HTML parser reports the name exactly as written, so the two-way forms have to be matched in
26
+ * full - stripping a leading `[` and a trailing `]` off `[(dtWidth)]` leaves `(dtWidth)`, which
27
+ * matches no input and was silently skipped.
28
+ */
29
+ const BINDING_SYNTAX = /^(?:\[\(([^()\]]+)\)\]|\[([^\[\]]+)\]|bindon-(.+)|bind-(.+))$/;
30
+ /**
31
+ * Walks a template's HTML AST collecting what changed meaning on every `<kbq-dl>`.
32
+ *
33
+ * An AST rather than a regular expression over the markup: the previous pattern matched the attribute
34
+ * names anywhere inside the opening tag, so `class="my-list vertical"` and `title="Very wide list"`
35
+ * were reported, `<kbq-dl-other wide>` matched on the unanchored element name, and an attribute value
36
+ * containing `>` cut the tag short and hid everything after it.
37
+ */
38
+ class DlCollector {
39
+ constructor() {
40
+ this.findings = [];
41
+ }
42
+ visitElement(element) {
43
+ if (element.name === migrations_dlAttributeCoercion_data.DL_ELEMENT)
44
+ this.inspect(element);
45
+ this.visitChildren(element);
46
+ }
47
+ visitBlock(block) {
48
+ this.visitChildren(block);
49
+ }
50
+ visitChildren(node) {
51
+ utils_ast.visitAll(this, node.children ?? []);
52
+ }
53
+ visitAttribute() { }
54
+ visitText() { }
55
+ visitComment() { }
56
+ visitExpansion() { }
57
+ visitExpansionCase() { }
58
+ visitBlockParameter() { }
59
+ visitLetDeclaration() { }
60
+ inspect(element) {
61
+ const line = (element.startSourceSpan?.start.line ?? 0) + 1;
62
+ const bound = new Set();
63
+ for (const attr of element.attrs ?? []) {
64
+ if (typeof attr.name !== 'string')
65
+ continue;
66
+ const binding = BINDING_SYNTAX.exec(attr.name);
67
+ const name = binding ? (binding[1] ?? binding[2] ?? binding[3] ?? binding[4]) : attr.name;
68
+ const isBinding = binding !== null;
69
+ const value = typeof attr.value === 'string' ? attr.value : '';
70
+ if (!migrations_dlAttributeCoercion_data.BOOLEAN_ATTRIBUTES.includes(name) && !migrations_dlAttributeCoercion_data.NUMERIC_ATTRIBUTES.includes(name))
71
+ continue;
72
+ if (isBinding) {
73
+ bound.add(name);
74
+ continue;
75
+ }
76
+ if (migrations_dlAttributeCoercion_data.BOOLEAN_ATTRIBUTES.includes(name)) {
77
+ // The empty string covers both `wide` and `wide=""`: they are the same value, and the
78
+ // previous pattern reported the first while excluding the second.
79
+ this.findings.push(value === '' ? migrations_dlAttributeCoercion_data.falsyBooleanMessage(name, line) : migrations_dlAttributeCoercion_data.truthyBooleanMessage(name, value, line));
80
+ continue;
81
+ }
82
+ // A numeric literal reached the arithmetic as a string and coerced there, so it behaves
83
+ // exactly as before; only a value that is not a finite number changed meaning.
84
+ if (!Number.isFinite(Number(value === '' ? NaN : value))) {
85
+ this.findings.push(migrations_dlAttributeCoercion_data.numericAttributeMessage(name, line));
86
+ }
87
+ }
88
+ if (bound.size > 0)
89
+ this.findings.push(migrations_dlAttributeCoercion_data.boundAttributeMessage(bound, line));
90
+ }
91
+ }
92
+ /** Collects the findings of one template, or reports that it could not be parsed. */
93
+ async function inspectTemplate(template) {
94
+ if (!template.includes(`<${migrations_dlAttributeCoercion_data.DL_ELEMENT}`))
95
+ return { findings: [], unparseable: false };
96
+ const parsed = await utils_typescript.parseTemplate(template);
97
+ if (!parsed.tree)
98
+ return { findings: [], unparseable: true };
99
+ const collector = new DlCollector();
100
+ utils_ast.visitAll(collector, parsed.tree.rootNodes);
101
+ return { findings: collector.findings, unparseable: false };
102
+ }
103
+ /** The same, over every inline template in a `.ts` file. */
104
+ async function inspectInlineTemplates(content, fileName) {
105
+ const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
106
+ const findings = [];
107
+ let unparseable = false;
108
+ for (const { start, end } of utils_typescript.collectInlineTemplateRanges(sourceFile)) {
109
+ const inspected = await inspectTemplate(content.slice(start, end));
110
+ findings.push(...inspected.findings);
111
+ unparseable ||= inspected.unparseable;
112
+ }
113
+ return { findings, unparseable };
114
+ }
115
+ /**
116
+ * Reports the `<kbq-dl>` attributes whose coercion changed. Never writes: whether markup relied on a
117
+ * valueless `wide` being ignored is a decision the call site owns, and so is what a non-numeric width
118
+ * was meant to say.
119
+ *
120
+ * Both `.ts` and `.html` are visited, because the element is written in templates of either kind.
121
+ */
122
+ function dlAttributeCoercion(options) {
123
+ return async (tree, context) => {
124
+ const { project } = options;
125
+ const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
126
+ const root = projectDefinition?.root ?? '';
127
+ const rootDir = root ? tree.getDir(root) : tree.root;
128
+ const paths = [];
129
+ utils_packageConfig.visitProjectFiles(rootDir, (filePath) => {
130
+ if (filePath.endsWith(TS_EXT) || filePath.endsWith(HTML_EXT))
131
+ paths.push(filePath);
132
+ });
133
+ let consumers = 0;
134
+ let reported = 0;
135
+ for (const filePath of paths) {
136
+ const content = tree.read(filePath)?.toString();
137
+ if (!content || !referencesDl(content))
138
+ continue;
139
+ consumers++;
140
+ const { findings, unparseable } = filePath.endsWith(HTML_EXT)
141
+ ? await inspectTemplate(content)
142
+ : await inspectInlineTemplates(content, filePath);
143
+ if (unparseable)
144
+ utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_dlAttributeCoercion_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
145
+ for (const finding of findings) {
146
+ reported++;
147
+ utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${finding}`]);
148
+ }
149
+ }
150
+ // Nothing here uses the description list, so the summary would only be noise.
151
+ if (consumers === 0)
152
+ return;
153
+ utils_messages.logMessage(context.logger, [
154
+ `${LABEL} processed kbq-dl under "${root || '<workspace root>'}", ` +
155
+ `${consumers} file(s) reference the component, ${reported} attribute(s) reported.`,
156
+ ...migrations_dlAttributeCoercion_data.SUMMARY
157
+ ]);
158
+ };
159
+ }
160
+
161
+ exports.default = dlAttributeCoercion;
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "koobiq-components-dl-attribute-coercion",
4
+ "title": "Koobiq components description list review migration",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Name of the project to inspect. If omitted, the migration runs over the whole tree.",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ }
13
+ }
14
+ }
15
+ }