@koobiq/components 21.0.0 → 21.1.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 (378) hide show
  1. package/badge/_badge-theme.scss +31 -0
  2. package/breadcrumbs/breadcrumbs.scss +5 -1
  3. package/checkbox/_checkbox-theme.scss +0 -17
  4. package/checkbox/checkbox-tokens.scss +0 -4
  5. package/code-block/_code-block-theme.scss +7 -6
  6. package/code-block/code-block-tokens.scss +8 -4
  7. package/code-block/code-block.scss +54 -32
  8. package/content-panel/content-panel-header.scss +2 -3
  9. package/content-panel/content-panel.scss +3 -0
  10. package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
  11. package/fesm2022/koobiq-components-accordion.mjs +4 -4
  12. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  13. package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
  14. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  15. package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
  16. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  17. package/fesm2022/koobiq-components-badge.mjs +2 -2
  18. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  19. package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
  20. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
  22. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  23. package/fesm2022/koobiq-components-checkbox.mjs +18 -8
  24. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
  26. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-code-block.mjs +106 -394
  28. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-content-panel.mjs +4 -4
  30. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-core.mjs +300 -37
  32. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-datepicker.mjs +151 -60
  34. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-divider.mjs +3 -3
  36. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-dropdown.mjs +3 -3
  38. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-file-upload.mjs +17 -8
  40. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-filter-bar.mjs +124 -41
  42. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-flag.mjs +3 -3
  44. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-form-field.mjs +90 -27
  46. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-icon.mjs +38 -17
  48. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
  50. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-input.mjs +76 -17
  52. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-list.mjs +1 -1
  54. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-modal.mjs +3 -3
  56. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-navbar.mjs +86 -25
  58. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  59. package/fesm2022/koobiq-components-notification-center.mjs +4 -4
  60. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  61. package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
  62. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  63. package/fesm2022/koobiq-components-popover.mjs +86 -7
  64. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  65. package/fesm2022/koobiq-components-radio.mjs +41 -19
  66. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  67. package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
  68. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  69. package/fesm2022/koobiq-components-select.mjs +49 -12
  70. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
  72. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-splitter.mjs +49 -25
  74. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-tabs.mjs +30 -11
  76. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-tags.mjs +1 -1
  78. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-textarea.mjs +28 -11
  80. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-time-range.mjs +2 -2
  82. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-timepicker.mjs +71 -16
  84. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  86. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-toast.mjs +2 -2
  88. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-toggle.mjs +25 -9
  90. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-tooltip.mjs +90 -17
  92. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-top-bar.mjs +27 -7
  94. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-tree-select.mjs +24 -9
  96. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-tree.mjs +288 -109
  98. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  99. package/file-upload/_file-upload-theme.scss +0 -12
  100. package/file-upload/file-upload-tokens.scss +0 -1
  101. package/file-upload/file-upload.scss +0 -1
  102. package/filter-bar/_filter-bar-theme.scss +7 -8
  103. package/filter-bar/filter-bar.scss +0 -1
  104. package/filter-bar/pipes/base-pipe.scss +36 -2
  105. package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
  106. package/form-field/_fieldset-theme.scss +2 -7
  107. package/form-field/_form-field-theme.scss +9 -22
  108. package/form-field/_hint-theme.scss +20 -0
  109. package/form-field/fieldset-tokens.scss +0 -1
  110. package/form-field/fieldset.scss +0 -3
  111. package/form-field/form-field-tokens.scss +1 -1
  112. package/form-field/form-field.scss +9 -0
  113. package/form-field/hint-tokens.scss +3 -0
  114. package/modal/modal.scss +2 -0
  115. package/navbar/_navbar-item_vertical.scss +48 -2
  116. package/navbar/_navbar-theme.scss +11 -3
  117. package/navbar/navbar-item.scss +17 -0
  118. package/navbar/navbar-tokens.scss +3 -0
  119. package/package.json +4 -4
  120. package/popover/popover.scss +1 -1
  121. package/radio/_radio-theme.scss +0 -30
  122. package/radio/radio-tokens.scss +0 -2
  123. package/schematics/collection.json +94 -89
  124. package/schematics/migrations/accordion-state-saving-default/{index.js → index.cjs} +5 -4
  125. package/schematics/migrations/actions-panel-overlay-container/{index.js → index.cjs} +5 -4
  126. package/schematics/migrations/alert-signals/{index.js → index.cjs} +14 -13
  127. package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
  128. package/schematics/migrations/app-switcher-signals/{index.js → index.cjs} +7 -6
  129. package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
  130. package/schematics/migrations/autocomplete-signals/{index.js → index.cjs} +7 -6
  131. package/schematics/migrations/badge-signals/{index.js → index.cjs} +7 -6
  132. package/schematics/migrations/button-state-and-styles/{index.js → index.cjs} +7 -6
  133. package/schematics/migrations/button-supported-colors/{index.js → index.cjs} +7 -6
  134. package/schematics/migrations/button-toggle-signals-and-aria/{index.js → index.cjs} +7 -6
  135. package/schematics/migrations/button-truncation/{index.js → index.cjs} +7 -6
  136. package/schematics/migrations/checkbox-signals/{index.js → index.cjs} +9 -8
  137. package/schematics/migrations/clamped-text-disclosure/{index.js → index.cjs} +5 -4
  138. package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
  139. package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
  140. package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
  141. package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
  142. package/schematics/migrations/code-block-signals/{index.js → index.cjs} +7 -6
  143. package/schematics/migrations/color-signals/index.cjs +20 -0
  144. package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
  145. package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
  146. package/schematics/migrations/datepicker-signals/index.cjs +18 -0
  147. package/schematics/migrations/deprecated-icons/README.md +21 -5
  148. package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +15 -28
  149. package/schematics/migrations/deprecated-icons/schema.json +1 -1
  150. package/schematics/migrations/design-tokens-v4/{index.js → index.cjs} +3 -2
  151. package/schematics/migrations/divider-signals-and-aria/{index.js → index.cjs} +5 -4
  152. package/schematics/migrations/dl-attribute-coercion/{index.js → index.cjs} +7 -6
  153. package/schematics/migrations/dl-standalone-names/{index.js → index.cjs} +11 -10
  154. package/schematics/migrations/dropdown-demote-overlay/{index.js → index.cjs} +7 -6
  155. package/schematics/migrations/dropdown-signals/index.cjs +20 -0
  156. package/schematics/migrations/empty-state-error-color/{index.js → index.cjs} +5 -4
  157. package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
  158. package/schematics/migrations/file-upload-cva-and-primitives/{index.js → index.cjs} +5 -4
  159. package/schematics/migrations/file-upload-deprecated-outputs/{index.js → index.cjs} +5 -4
  160. package/schematics/migrations/filter-bar-rename-action/{index.js → index.cjs} +5 -4
  161. package/schematics/migrations/filter-bar-signals/{index.js → index.cjs} +16 -15
  162. package/schematics/migrations/filter-bar-state-saving-default/{index.js → index.cjs} +5 -4
  163. package/schematics/migrations/flag-inner-html/{index.js → index.cjs} +5 -4
  164. package/schematics/migrations/form-field-signals/{index.js → index.cjs} +18 -17
  165. package/schematics/migrations/icon-semantics-and-api/{data.js → data.cjs} +4 -4
  166. package/schematics/migrations/icon-semantics-and-api/{index.js → index.cjs} +6 -5
  167. package/schematics/migrations/icons-replacement/README.md +16 -2
  168. package/schematics/migrations/icons-replacement/{index.js → index.cjs} +21 -18
  169. package/schematics/migrations/icons-replacement/schema.json +12 -3
  170. package/schematics/migrations/inline-edit-a11y-and-types/{index.js → index.cjs} +5 -4
  171. package/schematics/migrations/input-number-surface/{index.js → index.cjs} +5 -4
  172. package/schematics/migrations/input-signals/index.cjs +18 -0
  173. package/schematics/migrations/link-deprecated-path/{index.js → index.cjs} +4 -3
  174. package/schematics/migrations/link-signals/{index.js → index.cjs} +5 -4
  175. package/schematics/migrations/list-signals/index.cjs +18 -0
  176. package/schematics/migrations/list-tree-multiple-input/{index.js → index.cjs} +7 -6
  177. package/schematics/migrations/loader-overlay-signals/{index.js → index.cjs} +7 -6
  178. package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
  179. package/schematics/migrations/locale-configuration-providers/{index.js → index.cjs} +5 -4
  180. package/schematics/migrations/mandatory-peer-dependencies/{index.js → index.cjs} +3 -2
  181. package/schematics/migrations/markdown-signals/{index.js → index.cjs} +7 -6
  182. package/schematics/migrations/modal-dialog-semantics/{index.js → index.cjs} +5 -4
  183. package/schematics/migrations/modal-signals/index.cjs +20 -0
  184. package/schematics/migrations/navbar-signals-and-aria/{index.js → index.cjs} +7 -6
  185. package/schematics/migrations/new-icons-pack/README.md +37 -25
  186. package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +29 -38
  187. package/schematics/migrations/new-icons-pack/replacement.json +2 -14
  188. package/schematics/migrations/new-icons-pack/schema.json +3 -3
  189. package/schematics/migrations/notification-center-signals/{index.js → index.cjs} +5 -4
  190. package/schematics/migrations/option-signals/index.cjs +20 -0
  191. package/schematics/migrations/popover-leave-delay/{index.js → index.cjs} +5 -4
  192. package/schematics/migrations/progress-bar-percentage-and-aria/{index.js → index.cjs} +5 -4
  193. package/schematics/migrations/progress-spinner-signals/{index.js → index.cjs} +7 -6
  194. package/schematics/migrations/query-list-signals/index.cjs +18 -0
  195. package/schematics/migrations/radio-signals-and-aria/{index.js → index.cjs} +9 -8
  196. package/schematics/migrations/read-state-dwell-handlers/{index.js → index.cjs} +5 -4
  197. package/schematics/migrations/scrollbar-deprecated-path/{index.js → index.cjs} +4 -3
  198. package/schematics/migrations/select-signal-inputs/{index.js → index.cjs} +5 -4
  199. package/schematics/migrations/sidepanel-non-modal-behavior/{index.js → index.cjs} +5 -4
  200. package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
  201. package/schematics/migrations/split-button-optional-disabled/{index.js → index.cjs} +5 -4
  202. package/schematics/migrations/splitter-deprecated-path/{index.js → index.cjs} +4 -3
  203. package/schematics/migrations/state-saving-default/{index.js → index.cjs} +5 -4
  204. package/schematics/migrations/table-cell-content/{index.js → index.cjs} +5 -4
  205. package/schematics/migrations/tabs-signals-and-aria/{index.js → index.cjs} +5 -4
  206. package/schematics/migrations/tag-list-cleaner/{index.js → index.cjs} +7 -6
  207. package/schematics/migrations/tag-slots/{index.js → index.cjs} +6 -5
  208. package/schematics/migrations/tags-signals/{index.js → index.cjs} +7 -6
  209. package/schematics/migrations/textarea-signals/{index.js → index.cjs} +7 -6
  210. package/schematics/migrations/time-range-title-for/{index.js → index.cjs} +5 -4
  211. package/schematics/migrations/timepicker-signals/{index.js → index.cjs} +7 -6
  212. package/schematics/migrations/timezone-grouping-utils/{index.js → index.cjs} +5 -4
  213. package/schematics/migrations/title-encapsulation/{index.js → index.cjs} +5 -4
  214. package/schematics/migrations/toast-stack-and-defaults/{index.js → index.cjs} +5 -4
  215. package/schematics/migrations/tooltip-pointer-events-and-types/{index.js → index.cjs} +5 -4
  216. package/schematics/migrations/top-bar-container-selectors/{index.js → index.cjs} +5 -4
  217. package/schematics/migrations/tree-select-signals/{index.js → index.cjs} +5 -4
  218. package/schematics/migrations/tree-signals/{index.js → index.cjs} +5 -4
  219. package/schematics/migrations/tree-state-saving-default/{index.js → index.cjs} +5 -4
  220. package/schematics/migrations/username-pipe-injection/{index.js → index.cjs} +5 -4
  221. package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +7 -7
  222. package/schematics/migrations/v20-upgrade/index.cjs +19 -0
  223. package/schematics/migrations/v21-upgrade/{data.js → data.cjs} +22 -22
  224. package/schematics/migrations/v21-upgrade/{index.js → index.cjs} +11 -10
  225. package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
  226. package/schematics/migrations.json +87 -82
  227. package/schematics/ng-add/{index.js → index.cjs} +15 -289
  228. package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
  229. package/schematics/utils/custom-data.cjs +64 -0
  230. package/schematics/utils/{deprecated-path-migration.js → deprecated-path-migration.cjs} +4 -3
  231. package/schematics/utils/html-config.cjs +148 -0
  232. package/schematics/utils/{icon-migration.js → icon-migration.cjs} +11 -5
  233. package/schematics/utils/list-item-pattern.cjs +16 -0
  234. package/schematics/utils/{messages.js → messages.cjs} +4 -0
  235. package/schematics/utils/package-config.cjs +99 -0
  236. package/schematics/utils/project-files.cjs +25 -0
  237. package/schematics/utils/replacement-driver.cjs +337 -0
  238. package/schematics/utils/safe-rule.cjs +23 -0
  239. package/schematics/utils/signal-members-migration.cjs +779 -0
  240. package/schematics/utils/tag-patterns.cjs +21 -0
  241. package/schematics/utils/template-ref-access.cjs +155 -0
  242. package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
  243. package/schematics/utils/warn-only-migration.cjs +52 -0
  244. package/schematics/utils/workspace-styles.cjs +123 -0
  245. package/select/select.scss +7 -0
  246. package/tabs/_tabs-common.scss +23 -0
  247. package/textarea/textarea-tokens.scss +4 -1
  248. package/toast/toast.component.scss +1 -0
  249. package/toggle/_toggle-theme.scss +0 -17
  250. package/tooltip/tooltip.scss +1 -1
  251. package/top-bar/top-bar-tokens.scss +1 -0
  252. package/top-bar/top-bar.scss +10 -0
  253. package/types/koobiq-components-accordion.d.ts +25 -0
  254. package/types/koobiq-components-button-toggle.d.ts +6 -0
  255. package/types/koobiq-components-checkbox.d.ts +30 -0
  256. package/types/koobiq-components-clamped-text.d.ts +16 -3
  257. package/types/koobiq-components-code-block.d.ts +55 -14
  258. package/types/koobiq-components-core.d.ts +226 -13
  259. package/types/koobiq-components-datepicker.d.ts +28 -1
  260. package/types/koobiq-components-divider.d.ts +28 -10
  261. package/types/koobiq-components-dropdown.d.ts +19 -0
  262. package/types/koobiq-components-filter-bar.d.ts +79 -6
  263. package/types/koobiq-components-flag.d.ts +18 -0
  264. package/types/koobiq-components-form-field.d.ts +87 -6
  265. package/types/koobiq-components-icon.d.ts +15 -0
  266. package/types/koobiq-components-inline-edit.d.ts +8 -1
  267. package/types/koobiq-components-input.d.ts +22 -3
  268. package/types/koobiq-components-list.d.ts +6 -0
  269. package/types/koobiq-components-modal.d.ts +7 -0
  270. package/types/koobiq-components-navbar.d.ts +71 -7
  271. package/types/koobiq-components-notification-center.d.ts +13 -0
  272. package/types/koobiq-components-overflow-items.d.ts +26 -2
  273. package/types/koobiq-components-popover.d.ts +38 -3
  274. package/types/koobiq-components-radio.d.ts +30 -0
  275. package/types/koobiq-components-search-expandable.d.ts +10 -0
  276. package/types/koobiq-components-select.d.ts +36 -4
  277. package/types/koobiq-components-sidepanel.d.ts +52 -1
  278. package/types/koobiq-components-splitter.d.ts +13 -4
  279. package/types/koobiq-components-tabs.d.ts +4 -0
  280. package/types/koobiq-components-tags.d.ts +6 -0
  281. package/types/koobiq-components-textarea.d.ts +9 -2
  282. package/types/koobiq-components-timepicker.d.ts +15 -0
  283. package/types/koobiq-components-toggle.d.ts +30 -0
  284. package/types/koobiq-components-tooltip.d.ts +55 -10
  285. package/types/koobiq-components-top-bar.d.ts +11 -3
  286. package/types/koobiq-components-tree-select.d.ts +23 -8
  287. package/types/koobiq-components-tree.d.ts +144 -60
  288. package/schematics/migrations/angular-animations-removal/index.js +0 -20
  289. package/schematics/migrations/color-signals/index.js +0 -19
  290. package/schematics/migrations/core-mixins-removal/index.js +0 -17
  291. package/schematics/migrations/datepicker-signals/index.js +0 -17
  292. package/schematics/migrations/dropdown-signals/index.js +0 -19
  293. package/schematics/migrations/input-signals/index.js +0 -17
  294. package/schematics/migrations/list-signals/index.js +0 -17
  295. package/schematics/migrations/modal-signals/index.js +0 -19
  296. package/schematics/migrations/option-signals/index.js +0 -19
  297. package/schematics/migrations/query-list-signals/index.js +0 -17
  298. package/schematics/migrations/signal-inputs-subclasses/index.js +0 -17
  299. package/schematics/migrations/v20-upgrade/index.js +0 -18
  300. package/schematics/migrations/zoneless-change-detection/index.js +0 -20
  301. package/schematics/utils/package-config.js +0 -13
  302. /package/schematics/migrations/accordion-state-saving-default/{data.js → data.cjs} +0 -0
  303. /package/schematics/migrations/actions-panel-overlay-container/{data.js → data.cjs} +0 -0
  304. /package/schematics/migrations/alert-signals/{data.js → data.cjs} +0 -0
  305. /package/schematics/migrations/angular-animations-removal/{data.js → data.cjs} +0 -0
  306. /package/schematics/migrations/app-switcher-signals/{data.js → data.cjs} +0 -0
  307. /package/schematics/migrations/autocomplete-signals/{data.js → data.cjs} +0 -0
  308. /package/schematics/migrations/badge-signals/{data.js → data.cjs} +0 -0
  309. /package/schematics/migrations/button-state-and-styles/{data.js → data.cjs} +0 -0
  310. /package/schematics/migrations/button-supported-colors/{data.js → data.cjs} +0 -0
  311. /package/schematics/migrations/button-toggle-signals-and-aria/{data.js → data.cjs} +0 -0
  312. /package/schematics/migrations/button-truncation/{data.js → data.cjs} +0 -0
  313. /package/schematics/migrations/checkbox-signals/{data.js → data.cjs} +0 -0
  314. /package/schematics/migrations/clamped-text-disclosure/{data.js → data.cjs} +0 -0
  315. /package/schematics/migrations/code-block-signals/{data.js → data.cjs} +0 -0
  316. /package/schematics/migrations/color-signals/{data.js → data.cjs} +0 -0
  317. /package/schematics/migrations/core-mixins-removal/{data.js → data.cjs} +0 -0
  318. /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
  319. /package/schematics/migrations/datepicker-signals/{data.js → data.cjs} +0 -0
  320. /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
  321. /package/schematics/migrations/divider-signals-and-aria/{data.js → data.cjs} +0 -0
  322. /package/schematics/migrations/dl-attribute-coercion/{data.js → data.cjs} +0 -0
  323. /package/schematics/migrations/dl-standalone-names/{data.js → data.cjs} +0 -0
  324. /package/schematics/migrations/dropdown-demote-overlay/{data.js → data.cjs} +0 -0
  325. /package/schematics/migrations/dropdown-signals/{data.js → data.cjs} +0 -0
  326. /package/schematics/migrations/empty-state-error-color/{data.js → data.cjs} +0 -0
  327. /package/schematics/migrations/file-upload-cva-and-primitives/{data.js → data.cjs} +0 -0
  328. /package/schematics/migrations/file-upload-deprecated-outputs/{data.js → data.cjs} +0 -0
  329. /package/schematics/migrations/filter-bar-rename-action/{data.js → data.cjs} +0 -0
  330. /package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +0 -0
  331. /package/schematics/migrations/filter-bar-state-saving-default/{data.js → data.cjs} +0 -0
  332. /package/schematics/migrations/flag-inner-html/{data.js → data.cjs} +0 -0
  333. /package/schematics/migrations/form-field-signals/{data.js → data.cjs} +0 -0
  334. /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
  335. /package/schematics/migrations/inline-edit-a11y-and-types/{data.js → data.cjs} +0 -0
  336. /package/schematics/migrations/input-number-surface/{data.js → data.cjs} +0 -0
  337. /package/schematics/migrations/input-signals/{data.js → data.cjs} +0 -0
  338. /package/schematics/migrations/link-signals/{data.js → data.cjs} +0 -0
  339. /package/schematics/migrations/list-signals/{data.js → data.cjs} +0 -0
  340. /package/schematics/migrations/list-tree-multiple-input/{data.js → data.cjs} +0 -0
  341. /package/schematics/migrations/loader-overlay-signals/{data.js → data.cjs} +0 -0
  342. /package/schematics/migrations/locale-configuration-providers/{data.js → data.cjs} +0 -0
  343. /package/schematics/migrations/markdown-signals/{data.js → data.cjs} +0 -0
  344. /package/schematics/migrations/modal-dialog-semantics/{data.js → data.cjs} +0 -0
  345. /package/schematics/migrations/modal-signals/{data.js → data.cjs} +0 -0
  346. /package/schematics/migrations/navbar-signals-and-aria/{data.js → data.cjs} +0 -0
  347. /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
  348. /package/schematics/migrations/notification-center-signals/{data.js → data.cjs} +0 -0
  349. /package/schematics/migrations/option-signals/{data.js → data.cjs} +0 -0
  350. /package/schematics/migrations/popover-leave-delay/{data.js → data.cjs} +0 -0
  351. /package/schematics/migrations/progress-bar-percentage-and-aria/{data.js → data.cjs} +0 -0
  352. /package/schematics/migrations/progress-spinner-signals/{data.js → data.cjs} +0 -0
  353. /package/schematics/migrations/query-list-signals/{data.js → data.cjs} +0 -0
  354. /package/schematics/migrations/radio-signals-and-aria/{data.js → data.cjs} +0 -0
  355. /package/schematics/migrations/read-state-dwell-handlers/{data.js → data.cjs} +0 -0
  356. /package/schematics/migrations/select-signal-inputs/{data.js → data.cjs} +0 -0
  357. /package/schematics/migrations/sidepanel-non-modal-behavior/{data.js → data.cjs} +0 -0
  358. /package/schematics/migrations/signal-inputs-subclasses/{data.js → data.cjs} +0 -0
  359. /package/schematics/migrations/split-button-optional-disabled/{data.js → data.cjs} +0 -0
  360. /package/schematics/migrations/state-saving-default/{data.js → data.cjs} +0 -0
  361. /package/schematics/migrations/table-cell-content/{data.js → data.cjs} +0 -0
  362. /package/schematics/migrations/tabs-signals-and-aria/{data.js → data.cjs} +0 -0
  363. /package/schematics/migrations/tag-list-cleaner/{data.js → data.cjs} +0 -0
  364. /package/schematics/migrations/tags-signals/{data.js → data.cjs} +0 -0
  365. /package/schematics/migrations/textarea-signals/{data.js → data.cjs} +0 -0
  366. /package/schematics/migrations/time-range-title-for/{data.js → data.cjs} +0 -0
  367. /package/schematics/migrations/timepicker-signals/{data.js → data.cjs} +0 -0
  368. /package/schematics/migrations/timezone-grouping-utils/{data.js → data.cjs} +0 -0
  369. /package/schematics/migrations/title-encapsulation/{data.js → data.cjs} +0 -0
  370. /package/schematics/migrations/toast-stack-and-defaults/{data.js → data.cjs} +0 -0
  371. /package/schematics/migrations/tooltip-pointer-events-and-types/{data.js → data.cjs} +0 -0
  372. /package/schematics/migrations/top-bar-container-selectors/{data.js → data.cjs} +0 -0
  373. /package/schematics/migrations/tree-select-signals/{data.js → data.cjs} +0 -0
  374. /package/schematics/migrations/tree-signals/{data.js → data.cjs} +0 -0
  375. /package/schematics/migrations/tree-state-saving-default/{data.js → data.cjs} +0 -0
  376. /package/schematics/migrations/username-pipe-injection/{data.js → data.cjs} +0 -0
  377. /package/schematics/migrations/zoneless-change-detection/{data.js → data.cjs} +0 -0
  378. /package/schematics/utils/{ast.js → ast.cjs} +0 -0
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ // RegExp sources the template rewrites of v20-upgrade and v21-upgrade build on. They live here rather than in a
4
+ // `data.ts`: v21-upgrade's `data.ts` imports every area module, so an area that read them from there would get
5
+ // `undefined` under CommonJS.
6
+ /**
7
+ * One step inside an opening tag: a quoted value is taken whole, so neither `>` nor an attribute-like word inside
8
+ * it counts.
9
+ */
10
+ const TAG_BODY = `(?:[^<>"']|"[^"]*"|'[^']*')`;
11
+ /**
12
+ * The start of an attribute on an opening `<kbq-code-block>` tag that does not bind `name` itself, captured as
13
+ * `$1` together with a `[` that opens a binding.
14
+ */
15
+ const codeBlockTagWithout = (name) => String.raw `(<kbq-code-block(?![\w-])(?!${TAG_BODY}*[\s\[]${name}[\]\s=/>])${TAG_BODY}*?\s\[?)`;
16
+ /** An opening `<kbq-code-block>` tag that binds both `first` and `second`. */
17
+ const codeBlockTagWith = (first, second) => String.raw `<kbq-code-block(?![\w-])(?=${TAG_BODY}*[\s\[]${first}[\]\s=/>])(?=${TAG_BODY}*[\s\[]${second}[\]\s=/>])`;
18
+
19
+ exports.TAG_BODY = TAG_BODY;
20
+ exports.codeBlockTagWith = codeBlockTagWith;
21
+ exports.codeBlockTagWithout = codeBlockTagWithout;
@@ -0,0 +1,155 @@
1
+ 'use strict';
2
+
3
+ var utils_ast = require('./ast.cjs');
4
+ var utils_signalMembersMigration = require('./signal-members-migration.cjs');
5
+ require('typescript');
6
+ require('./messages.cjs');
7
+ require('./package-config.cjs');
8
+ require('@angular-devkit/schematics');
9
+ require('@schematics/angular/utility');
10
+ require('./project-files.cjs');
11
+ require('./typescript.cjs');
12
+
13
+ /** A compound assignment (`+=`, `??=`, …) or a postfix `++` / `--` at the start of what follows an access. */
14
+ const COMPOUND_WRITE_AFTER = /^\s*(?:\+\+|--|(?:\*\*|>>>|<<|>>|&&|\|\||\?\?|[-+*/%&|^])=(?!=))/;
15
+ /** A prefix `++` / `--` at the end of what precedes an access. */
16
+ const INCREMENT_BEFORE = /(?:\+\+|--)\s*$/;
17
+ function escapeRegExp(value) {
18
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
19
+ }
20
+ /** `<ref>.<member> =`, but not `==` / `===`: the lookbehind matches the one `memberAccessPattern` uses. */
21
+ function assignmentPattern(ref, members) {
22
+ const names = members.map(escapeRegExp).join('|');
23
+ return new RegExp(`(?<![\\w$.])(${escapeRegExp(ref)}\\s*\\.\\s*(${names}))\\b(\\s*=(?!=)\\s*)`, 'g');
24
+ }
25
+ /** `<ref>.<member>` in any form, the optional chain included. */
26
+ function anyAccessPattern(ref, members) {
27
+ return new RegExp(`(?<![\\w$.])${escapeRegExp(ref)}\\s*\\??\\.\\s*(${members.map(escapeRegExp).join('|')})\\b`, 'g');
28
+ }
29
+ /** End of the assigned expression that starts at `from`: the next top-level `;`, or the end of the statement list. */
30
+ function assignedExpressionEnd(template, from, limit) {
31
+ let depth = 0;
32
+ let quote;
33
+ let end = limit;
34
+ for (let i = from; i < limit && end === limit; i++) {
35
+ const char = template[i];
36
+ if (quote) {
37
+ if (char === '\\')
38
+ i++;
39
+ else if (char === quote)
40
+ quote = undefined;
41
+ }
42
+ else if (char === "'" || char === '"' || char === '`') {
43
+ quote = char;
44
+ }
45
+ else if ('([{'.includes(char)) {
46
+ depth++;
47
+ }
48
+ else if (')]}'.includes(char)) {
49
+ if (depth === 0)
50
+ end = i;
51
+ else
52
+ depth--;
53
+ }
54
+ else if (char === ';' && depth === 0) {
55
+ end = i;
56
+ }
57
+ }
58
+ while (end > from && /\s/.test(template[end - 1]))
59
+ end--;
60
+ return end;
61
+ }
62
+ /**
63
+ * Rewrites reads and writes of the members reachable through the refs in `template`, whose HTML AST is
64
+ * `rootNodes`. `policyOf` tells what a `#ref` on an element is bound to, or `undefined` when it is not one of
65
+ * the migrated types.
66
+ */
67
+ function rewriteRefAccesses(template, rootNodes, policyOf) {
68
+ const scanner = new utils_signalMembersMigration.TemplateScanner(template, policyOf);
69
+ const result = {
70
+ content: template,
71
+ readOnlyWrites: new Set(),
72
+ compoundWrites: new Set(),
73
+ reported: new Set()
74
+ };
75
+ const writeEdits = [];
76
+ const readEdits = [];
77
+ // The end of each access already handled: a ref redeclared in a nested view reaches it twice.
78
+ const seen = new Set();
79
+ utils_ast.visitAll(scanner, rootNodes);
80
+ const rewriteWrites = (expression, name, policy) => {
81
+ const source = template.slice(expression.start, expression.end);
82
+ for (const match of source.matchAll(assignmentPattern(name, policy.members))) {
83
+ const [, target, member, operator] = match;
84
+ const targetEnd = expression.start + match.index + target.length;
85
+ if (seen.has(targetEnd))
86
+ continue;
87
+ seen.add(targetEnd);
88
+ if (!policy.writable.has(member)) {
89
+ result.readOnlyWrites.add(member);
90
+ continue;
91
+ }
92
+ // Outside a statement an assignment is no valid template to begin with.
93
+ if (expression.kind !== 'statement')
94
+ continue;
95
+ const valueStart = targetEnd + operator.length;
96
+ const valueEnd = assignedExpressionEnd(template, valueStart, expression.end);
97
+ if (valueEnd === valueStart)
98
+ continue;
99
+ writeEdits.push({ start: targetEnd, end: valueStart, text: '.set(' });
100
+ writeEdits.push({ start: valueEnd, end: valueEnd, text: ')' });
101
+ }
102
+ };
103
+ const rewriteReads = (expression, name, policy) => {
104
+ const source = template.slice(expression.start, expression.end);
105
+ for (const match of source.matchAll(utils_signalMembersMigration.memberAccessPattern(name, policy.members))) {
106
+ const start = expression.start + match.index;
107
+ const end = start + match[0].length;
108
+ const member = match[2];
109
+ if (seen.has(end))
110
+ continue;
111
+ seen.add(end);
112
+ // `(click)="ref.value += 1"`, `ref.value++`, `--ref.value`: a call there is no valid template.
113
+ if (expression.kind === 'statement' &&
114
+ (COMPOUND_WRITE_AFTER.test(template.slice(end, expression.end)) ||
115
+ INCREMENT_BEFORE.test(template.slice(expression.start, start)))) {
116
+ (policy.writable.has(member) ? result.compoundWrites : result.readOnlyWrites).add(member);
117
+ continue;
118
+ }
119
+ // `[(ngModel)]="ref.value"` writes through the binding: a writable signal fills it as it is.
120
+ if (expression.kind === 'twoWay' &&
121
+ !template.slice(expression.start, start).trim() &&
122
+ !template.slice(end, expression.end).trim()) {
123
+ if (!policy.writable.has(member))
124
+ result.readOnlyWrites.add(member);
125
+ continue;
126
+ }
127
+ readEdits.push({ start: end, end, text: '()' });
128
+ }
129
+ };
130
+ for (const { name, type: policy, ...view } of scanner.unambiguousRefs()) {
131
+ for (const expression of scanner.expressions) {
132
+ if (expression.start < view.start || expression.end > view.end)
133
+ continue;
134
+ if (policy.members.length > 0) {
135
+ rewriteWrites(expression, name, policy);
136
+ rewriteReads(expression, name, policy);
137
+ }
138
+ if (policy.reported?.length) {
139
+ const source = template.slice(expression.start, expression.end);
140
+ for (const [, member] of source.matchAll(anyAccessPattern(name, policy.reported))) {
141
+ result.reported.add(member);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ // Applied right to left. The sort is stable, so where a read ends an assigned value, the `)` closing
147
+ // `.set(` goes in first and the read's `()` lands in front of it.
148
+ const edits = [...writeEdits, ...readEdits].sort((a, b) => b.start - a.start || b.end - a.end);
149
+ for (const { start, end, text } of edits) {
150
+ result.content = result.content.slice(0, start) + text + result.content.slice(end);
151
+ }
152
+ return result;
153
+ }
154
+
155
+ exports.rewriteRefAccesses = rewriteRefAccesses;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var ts = require('typescript');
4
- var utils_ast = require('./ast.js');
4
+ var utils_ast = require('./ast.cjs');
5
5
 
6
6
  const LEADING_TRIVIA_CHARS = [' ', '\n', '\r', '\t'];
7
7
  function forEachClass(sourceFile, callback) {
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var utils_messages = require('./messages.cjs');
4
+ var utils_packageConfig = require('./package-config.cjs');
5
+ var utils_projectFiles = require('./project-files.cjs');
6
+ require('@angular-devkit/schematics');
7
+ require('@schematics/angular/utility');
8
+
9
+ /**
10
+ * Builds the rule of a migration that only reports: every `.ts` file of the project that matches a pattern is
11
+ * logged with its message, then the summary. Never writes.
12
+ *
13
+ * The patterns are compiled once here rather than per file. None carries the `g` flag, so a shared instance
14
+ * holds no `lastIndex`.
15
+ */
16
+ function warnOnlyRule(config, options) {
17
+ const { label, summary } = config;
18
+ const warnPatterns = config.warnPatterns.map(({ anchor, pattern, message }) => ({
19
+ anchor: anchor ? new RegExp(anchor) : null,
20
+ pattern: new RegExp(pattern),
21
+ message
22
+ }));
23
+ return async (tree, context) => {
24
+ const projectDefinition = await utils_packageConfig.setupOptions(options.project, tree);
25
+ const root = projectDefinition?.root ?? '';
26
+ let reported = 0;
27
+ utils_projectFiles.visitProjectFiles(root ? tree.getDir(root) : tree.root, (filePath, entry) => {
28
+ if (!filePath.endsWith('.ts'))
29
+ return;
30
+ const content = entry.content.toString();
31
+ if (!content)
32
+ return;
33
+ for (const { anchor, pattern, message } of warnPatterns) {
34
+ if (anchor && !anchor.test(content))
35
+ continue;
36
+ if (!pattern.test(content))
37
+ continue;
38
+ reported++;
39
+ utils_messages.logMessage(context.logger, [`${label} ${filePath}`, ` ${message}`]);
40
+ }
41
+ });
42
+ // Nothing here is affected, so the summary would only be noise.
43
+ if (reported === 0)
44
+ return;
45
+ utils_messages.logMessage(context.logger, [
46
+ `${label} processed "${root || '<workspace root>'}", ${reported} use(s) reported.`,
47
+ ...summary
48
+ ]);
49
+ };
50
+ }
51
+
52
+ exports.warnOnlyRule = warnOnlyRule;
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Whether `project` is an application (as opposed to a library) — the same check
5
+ * `@schematics/angular` itself uses (see `utility/workspace.js`'s `createDefaultPath`), rather than
6
+ * an allowlist of builder names. A project can sit on any builder — a custom webpack wrapper, an Nx
7
+ * executor, one this schematic has never heard of — and still be a perfectly good application; only
8
+ * `projectType` reliably says so.
9
+ */
10
+ function isApplicationProject(project) {
11
+ return project.extensions['projectType'] === 'application';
12
+ }
13
+ const KOOBIQ_STATIC_STYLE_ENTRIES = [
14
+ 'node_modules/@koobiq/icons/fonts/kbq-icons.css',
15
+ 'node_modules/@koobiq/design-tokens/web/css-tokens.css',
16
+ 'node_modules/@koobiq/components/prebuilt-themes/theme.css'
17
+ ];
18
+ const THEME_TOKENS_PATTERN = /^node_modules\/@koobiq\/design-tokens\/web\/css-tokens-(light|dark)\.css$/;
19
+ /**
20
+ * The style entries documented in the installation guide, in the order they must be loaded.
21
+ * `'auto'` includes both token files, since `KbqThemeService` switches between them at runtime —
22
+ * a static `'light'`/`'dark'` choice only needs its own.
23
+ *
24
+ * `@koobiq/design-tokens` ships code-block, scrollbar and skeleton's tokens as opt-in
25
+ * `component-tokens*.css` files, but `prebuilt-themes/theme.css` already carries their values,
26
+ * baked in at `@koobiq/components`' own build time — nothing extra to wire here for them.
27
+ */
28
+ function getKoobiqStyleEntries(theme) {
29
+ const [icons, tokens, prebuiltTheme] = KOOBIQ_STATIC_STYLE_ENTRIES;
30
+ const themeTokens = theme === 'auto' ? [
31
+ 'node_modules/@koobiq/design-tokens/web/css-tokens-light.css',
32
+ 'node_modules/@koobiq/design-tokens/web/css-tokens-dark.css'
33
+ ] : [`node_modules/@koobiq/design-tokens/web/css-tokens-${theme}.css`];
34
+ return [icons, tokens, ...themeTokens, prebuiltTheme];
35
+ }
36
+ /**
37
+ * Prepends the Koobiq style entries ahead of whatever is already in `existingStyles`, matching the
38
+ * order documented in installation.md, where the app's own stylesheet comes last. Re-running with
39
+ * the same theme is a no-op; re-running with a different theme swaps the `css-tokens-*.css`
40
+ * entries instead of accumulating duplicates. Non-string entries (style-budget objects) and any
41
+ * unrelated entries are preserved, untouched, in their original order.
42
+ */
43
+ function mergeKoobiqStyles(existingStyles, theme) {
44
+ const desired = getKoobiqStyleEntries(theme);
45
+ const rest = existingStyles.filter((entry) => {
46
+ if (typeof entry !== 'string')
47
+ return true;
48
+ return (!desired.includes(entry) &&
49
+ !KOOBIQ_STATIC_STYLE_ENTRIES.includes(entry) &&
50
+ !THEME_TOKENS_PATTERN.test(entry));
51
+ });
52
+ return [...desired, ...rest];
53
+ }
54
+ /**
55
+ * Resolves the workspace-root-relative path of a project's index.html, mirroring the
56
+ * `@angular/build:application` builder's own default (`<sourceRoot>/index.html`) when the
57
+ * `index` option isn't set explicitly. `buildTarget` is `undefined` for a project with no `build`
58
+ * target at all, in which case the default is the only option available.
59
+ */
60
+ function getIndexHtmlPath(project, buildTarget) {
61
+ const indexOption = buildTarget?.options?.index;
62
+ if (typeof indexOption === 'string') {
63
+ return indexOption;
64
+ }
65
+ if (indexOption && typeof indexOption === 'object' && !Array.isArray(indexOption)) {
66
+ const input = indexOption.input;
67
+ if (typeof input === 'string') {
68
+ return input;
69
+ }
70
+ }
71
+ const sourceRoot = project.sourceRoot ?? `${project.root}/src`;
72
+ return `${sourceRoot}/index.html`;
73
+ }
74
+ /**
75
+ * Whether a `build` target's `server`/`ssr` options indicate the project renders on the server —
76
+ * `KbqThemeCookieStore` matters there, where `KbqThemeLocalStorageStore`'s default doesn't reach
77
+ * the server render.
78
+ */
79
+ function isSsrBuildTarget(buildTarget) {
80
+ const { server, ssr } = buildTarget.options ?? {};
81
+ return Boolean((typeof server === 'string' && server) || ssr === true || (ssr && typeof ssr === 'object'));
82
+ }
83
+ /**
84
+ * Mutates `workspace` in place: for every application project (optionally scoped to
85
+ * `projectName`), merges the Koobiq style entries for `theme` into its `build` target's `styles`
86
+ * array, when it has one. Returns per-project wiring info the caller uses to edit index.html and
87
+ * the project's bootstrap file afterward — for every application project, regardless of whether it
88
+ * had a `build` target to wire styles into, since the bootstrap file (and thus the theme providers)
89
+ * is resolved independently of it.
90
+ *
91
+ * Only the target literally named `build` is touched — not `test` (Karma) or `serve` — keeping the
92
+ * change's blast radius minimal.
93
+ */
94
+ function applyKoobiqWorkspaceStyles(workspace, theme, projectName) {
95
+ const wired = [];
96
+ for (const [name, project] of workspace.projects) {
97
+ if (projectName && name !== projectName)
98
+ continue;
99
+ if (!isApplicationProject(project))
100
+ continue;
101
+ const buildTarget = project.targets.get('build');
102
+ let stylesWired = false;
103
+ if (buildTarget) {
104
+ const options = buildTarget.options ?? (buildTarget.options = {});
105
+ const existingStyles = Array.isArray(options.styles) ? options.styles : [];
106
+ options.styles = mergeKoobiqStyles(existingStyles, theme);
107
+ stylesWired = true;
108
+ }
109
+ wired.push({
110
+ projectName: name,
111
+ projectRoot: project.root,
112
+ indexHtmlPath: getIndexHtmlPath(project, buildTarget),
113
+ isSsr: buildTarget ? isSsrBuildTarget(buildTarget) : false,
114
+ stylesWired
115
+ });
116
+ }
117
+ return wired;
118
+ }
119
+
120
+ exports.applyKoobiqWorkspaceStyles = applyKoobiqWorkspaceStyles;
121
+ exports.getIndexHtmlPath = getIndexHtmlPath;
122
+ exports.getKoobiqStyleEntries = getKoobiqStyleEntries;
123
+ exports.mergeKoobiqStyles = mergeKoobiqStyles;
@@ -29,6 +29,13 @@
29
29
  }
30
30
  }
31
31
 
32
+ .kbq-select__panel_multiline {
33
+ .kbq-option-text {
34
+ white-space: normal;
35
+ overflow-wrap: break-word;
36
+ }
37
+ }
38
+
32
39
  .kbq-select__content {
33
40
  @extend %kbq-select-content;
34
41
 
@@ -262,6 +262,29 @@
262
262
  transparent calc(100% - var(--mask-size))
263
263
  );
264
264
  }
265
+
266
+ .kbq-tab-group_vertical & {
267
+ --mask-size: var(--kbq-size-3xl);
268
+ }
269
+
270
+ .kbq-tab-group_vertical &.kbq-tab-header__scroll-container_overflow-before {
271
+ mask-image: linear-gradient(to bottom, transparent, #000 var(--mask-size));
272
+ }
273
+
274
+ .kbq-tab-group_vertical &.kbq-tab-header__scroll-container_overflow-after {
275
+ mask-image: linear-gradient(to bottom, #000 calc(100% - var(--mask-size)), transparent);
276
+ }
277
+
278
+ .kbq-tab-group_vertical
279
+ &.kbq-tab-header__scroll-container_overflow-before.kbq-tab-header__scroll-container_overflow-after {
280
+ mask-image: linear-gradient(
281
+ to bottom,
282
+ transparent,
283
+ #000 var(--mask-size),
284
+ #000 calc(100% - var(--mask-size)),
285
+ transparent
286
+ );
287
+ }
265
288
  }
266
289
 
267
290
  .kbq-tab-header_underlined:not(.kbq-tab-header_vertical) .kbq-tab-list__content {
@@ -1,5 +1,8 @@
1
1
  :where(.kbq-textarea) {
2
- --kbq-textarea-size-min-height: 64px;
2
+ --kbq-textarea-size-min-rows: 3;
3
+ --kbq-textarea-size-min-height: calc(
4
+ var(--kbq-textarea-size-min-rows) * 1lh + 2 * var(--kbq-textarea-size-padding-vertical)
5
+ );
3
6
  --kbq-textarea-size-max-height: 96px;
4
7
  --kbq-textarea-size-padding-vertical: 5px;
5
8
  --kbq-textarea-size-padding-horizontal: 11px;
@@ -121,6 +121,7 @@
121
121
 
122
122
  .kbq-toast__actions {
123
123
  display: flex;
124
+ flex-wrap: wrap;
124
125
 
125
126
  padding-top: var(--kbq-toast-size-button-stack-padding-top);
126
127
 
@@ -73,10 +73,6 @@
73
73
 
74
74
  &.kbq-disabled {
75
75
  color: var(--kbq-states-foreground-disabled);
76
-
77
- .kbq-hint .kbq-hint__text {
78
- color: inherit;
79
- }
80
76
  }
81
77
 
82
78
  .kbq-toggle-bar {
@@ -84,28 +80,15 @@
84
80
  background: var(--kbq-icon-white);
85
81
  }
86
82
  }
87
-
88
- // A projected `kbq-error` is a hint too, and keeps its own color. `:where` leaves the specificity as it was.
89
- .kbq-hint:where(:not(.kbq-error)) .kbq-hint__text {
90
- color: var(--kbq-foreground-contrast-secondary);
91
- }
92
83
  }
93
84
  }
94
85
 
95
86
  @mixin kbq-toggle-typography() {
96
87
  .kbq-toggle:not(.kbq-toggle_big) {
97
88
  @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal);
98
-
99
- & .kbq-hint .kbq-hint__text {
100
- @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-compact);
101
- }
102
89
  }
103
90
 
104
91
  .kbq-toggle.kbq-toggle_big {
105
92
  @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-big);
106
-
107
- & .kbq-hint .kbq-hint__text {
108
- @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal);
109
- }
110
93
  }
111
94
  }
@@ -109,7 +109,7 @@ $navbar-trigger-margin: $trigger-margin + 1px;
109
109
  width: var(--kbq-tooltip-size-arrow-size);
110
110
  height: var(--kbq-tooltip-size-arrow-size);
111
111
 
112
- transform: rotate(45deg);
112
+ transform: translate(var(--kbq-tooltip-arrow-shift-x, 0px), var(--kbq-tooltip-arrow-shift-y, 0px)) rotate(45deg);
113
113
 
114
114
  z-index: -1;
115
115
  }
@@ -14,6 +14,7 @@
14
14
  --kbq-top-bar-padding-vertical: var(--kbq-size-m);
15
15
  --kbq-top-bar-padding-horizontal: var(--kbq-size-xxl);
16
16
  --kbq-top-bar-border-radius: 0;
17
+ --kbq-top-bar-title-height: var(--kbq-size-3xl);
17
18
  --kbq-top-bar-container-start-gap: 0;
18
19
  --kbq-top-bar-container-start-min-width: 0;
19
20
  --kbq-top-bar-container-end-gap: var(--kbq-size-s);
@@ -47,6 +47,16 @@
47
47
  flex: 0 0 var(--kbq-top-bar-spacer-min-width);
48
48
  }
49
49
 
50
+ .kbq-top-bar-title {
51
+ @include tokens.kbq-typography-level-to-styles-css-variables(typography, subheading);
52
+
53
+ // The line box of a `size="big"` breadcrumb item: the same height, and the same baseline, so a
54
+ // page that swaps the trail for a title moves nothing. A minimum, not a fixed height: a title
55
+ // long enough to wrap has to grow the bar rather than paint over its edge.
56
+ min-block-size: var(--kbq-top-bar-title-height);
57
+ line-height: var(--kbq-top-bar-title-height);
58
+ }
59
+
50
60
  .kbq-top-bar-container {
51
61
  // Must match the host set of the ruleset immediately below: the negative margin compensates the
52
62
  // padding that mixin adds, so a container the mixin skips must not get the compensation either.
@@ -6,6 +6,7 @@ import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
6
6
  import { Subject } from 'rxjs';
7
7
  import * as i1$1 from '@koobiq/components/icon';
8
8
  import { KbqIcon } from '@koobiq/components/icon';
9
+ import * as _koobiq_components_accordion from '@koobiq/components/accordion';
9
10
  import * as i1 from '@koobiq/components/core';
10
11
 
11
12
  declare class KbqAccordionTriggerDirective {
@@ -15,6 +16,18 @@ declare class KbqAccordionTriggerDirective {
15
16
  protected readonly accordion: KbqAccordion;
16
17
  /** @docs-private */
17
18
  protected readonly item: KbqAccordionItem;
19
+ /**
20
+ * Value of `aria-expanded`.
21
+ *
22
+ * @docs-private
23
+ */
24
+ protected readonly expanded: _angular_core.Signal<boolean>;
25
+ /**
26
+ * Value of `data-state`.
27
+ *
28
+ * @docs-private
29
+ */
30
+ protected readonly dataState: _angular_core.Signal<_koobiq_components_accordion.KbqAccordionItemState>;
18
31
  /** @docs-private */
19
32
  get triggerId(): string;
20
33
  /** @docs-private */
@@ -344,6 +357,12 @@ declare class KbqAccordionContentDirective implements OnInit, DoCheck, AfterView
344
357
  protected readonly nativeElement: HTMLElement;
345
358
  /** @docs-private */
346
359
  protected readonly item: KbqAccordionItem;
360
+ /**
361
+ * Value of `data-state`.
362
+ *
363
+ * @docs-private
364
+ */
365
+ protected readonly dataState: _angular_core.Signal<_koobiq_components_accordion.KbqAccordionItemState>;
347
366
  /** @docs-private */
348
367
  get contentId(): string;
349
368
  /** @docs-private */
@@ -397,6 +416,12 @@ declare class KbqAccordionHeader {
397
416
  protected readonly item: KbqAccordionItem;
398
417
  /** @docs-private */
399
418
  protected readonly accordion: KbqAccordion;
419
+ /**
420
+ * Value of `data-state`.
421
+ *
422
+ * @docs-private
423
+ */
424
+ protected readonly dataState: _angular_core.Signal<_koobiq_components_accordion.KbqAccordionItemState>;
400
425
  /**
401
426
  * Names the heading after the trigger alone.
402
427
  *
@@ -180,6 +180,12 @@ declare class KbqButtonToggleGroup implements OnChanges, ControlValueAccessor, O
180
180
  syncButtonToggle(toggle: KbqButtonToggle, select: boolean, isUserInput?: boolean): void;
181
181
  /** Body of `syncButtonToggle()`. */
182
182
  private applyToggleSelection;
183
+ /**
184
+ * Reports the new value of a selected toggle, which changes the value of the group, as an interaction would.
185
+ *
186
+ * @docs-private
187
+ */
188
+ followToggleValue(toggle: KbqButtonToggle, previous: KbqButtonToggle['value']): void;
183
189
  /** Checks whether a button toggle is selected. */
184
190
  isSelected(toggle: KbqButtonToggle): boolean;
185
191
  /** Determines whether a button toggle should be checked on init, from the value waiting for it. */
@@ -59,8 +59,38 @@ declare class KbqCheckbox extends KbqColorDirective implements OnChanges, DoChec
59
59
  protected readonly inputId: _angular_core.Signal<string>;
60
60
  /** Error text projected into the checkbox. */
61
61
  private readonly error;
62
+ /**
63
+ * Whether the projected `kbq-error` is shown. Without one, nothing is rendered under the label.
64
+ *
65
+ * @docs-private
66
+ */
67
+ protected readonly showError: _angular_core.Signal<boolean>;
68
+ /**
69
+ * Id of the element wrapping the projected `kbq-error`.
70
+ *
71
+ * @docs-private
72
+ */
73
+ protected readonly errorId: _angular_core.Signal<string>;
74
+ /**
75
+ * Id of the label text, which alone names the native input.
76
+ *
77
+ * @docs-private
78
+ */
79
+ protected readonly labelId: _angular_core.Signal<string>;
62
80
  /** Hints projected into the checkbox. */
63
81
  private readonly hints;
82
+ /**
83
+ * Value of `aria-describedby` of the native input: the error, while it is shown, and the hints.
84
+ *
85
+ * @docs-private
86
+ */
87
+ protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
88
+ /**
89
+ * Value of `aria-invalid` of the native input: set whenever the checkbox is painted as invalid.
90
+ *
91
+ * @docs-private
92
+ */
93
+ protected readonly ariaInvalid: _angular_core.Signal<"true" | null>;
64
94
  /** Whether the checkbox is required. */
65
95
  readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
66
96
  /** @docs-private */