@koobiq/components 20.4.2 → 21.0.1

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 (798) 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 +791 -609
  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 +2871 -2595
  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 +400 -149
  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 +463 -143
  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 +734 -488
  197. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-tree.mjs +1700 -617
  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 +415 -18
  264. package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
  265. package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
  266. package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -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.cjs +47 -0
  270. package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -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 → data.cjs} +3 -0
  274. package/schematics/migrations/alert-signals/index.cjs +221 -0
  275. package/schematics/migrations/angular-animations-removal/README.md +46 -0
  276. package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
  277. package/schematics/migrations/angular-animations-removal/index.cjs +21 -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.cjs +136 -0
  281. package/schematics/migrations/app-switcher-signals/index.cjs +366 -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 → index.cjs} +6 -5
  285. package/schematics/migrations/autocomplete-signals/README.md +92 -0
  286. package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
  287. package/schematics/migrations/autocomplete-signals/index.cjs +707 -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.cjs +109 -0
  291. package/schematics/migrations/badge-signals/index.cjs +694 -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.cjs +136 -0
  295. package/schematics/migrations/button-state-and-styles/index.cjs +221 -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.cjs +106 -0
  299. package/schematics/migrations/button-supported-colors/index.cjs +261 -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.cjs +200 -0
  303. package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -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.cjs +88 -0
  307. package/schematics/migrations/button-truncation/index.cjs +270 -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.cjs +114 -0
  311. package/schematics/migrations/checkbox-signals/index.cjs +635 -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.cjs +101 -0
  315. package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
  316. package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
  317. package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
  318. package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
  319. package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
  320. package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
  321. package/schematics/migrations/code-block-signals/README.md +84 -0
  322. package/schematics/migrations/code-block-signals/data.cjs +121 -0
  323. package/schematics/migrations/code-block-signals/index.cjs +701 -0
  324. package/schematics/migrations/code-block-signals/schema.json +20 -0
  325. package/schematics/migrations/color-signals/README.md +46 -0
  326. package/schematics/migrations/color-signals/data.cjs +131 -0
  327. package/schematics/migrations/color-signals/index.cjs +20 -0
  328. package/schematics/migrations/color-signals/schema.json +20 -0
  329. package/schematics/migrations/core-mixins-removal/README.md +20 -0
  330. package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
  331. package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
  332. package/schematics/migrations/core-mixins-removal/schema.json +15 -0
  333. package/schematics/migrations/css-selectors/README.md +2 -2
  334. package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
  335. package/schematics/migrations/datepicker-signals/README.md +24 -0
  336. package/schematics/migrations/datepicker-signals/data.cjs +49 -0
  337. package/schematics/migrations/datepicker-signals/index.cjs +18 -0
  338. package/schematics/migrations/datepicker-signals/schema.json +15 -0
  339. package/schematics/migrations/deprecated-icons/README.md +2 -2
  340. package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
  341. package/schematics/migrations/design-tokens-v4/README.md +75 -0
  342. package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
  343. package/schematics/migrations/design-tokens-v4/schema.json +15 -0
  344. package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
  345. package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
  346. package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
  347. package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
  348. package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
  349. package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
  350. package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
  351. package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
  352. package/schematics/migrations/dl-standalone-names/README.md +49 -0
  353. package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
  354. package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
  355. package/schematics/migrations/dl-standalone-names/schema.json +20 -0
  356. package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
  357. package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
  358. package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
  359. package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
  360. package/schematics/migrations/dropdown-signals/README.md +83 -0
  361. package/schematics/migrations/dropdown-signals/data.cjs +152 -0
  362. package/schematics/migrations/dropdown-signals/index.cjs +20 -0
  363. package/schematics/migrations/dropdown-signals/schema.json +20 -0
  364. package/schematics/migrations/empty-state-error-color/README.md +84 -0
  365. package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
  366. package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
  367. package/schematics/migrations/empty-state-error-color/schema.json +15 -0
  368. package/schematics/migrations/empty-state-size-attr/README.md +2 -2
  369. package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
  370. package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
  371. package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
  372. package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
  373. package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
  374. package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
  375. package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
  376. package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
  377. package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
  378. package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
  379. package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
  380. package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
  381. package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
  382. package/schematics/migrations/filter-bar-signals/README.md +27 -16
  383. package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
  384. package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
  385. package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
  386. package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
  387. package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
  388. package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
  389. package/schematics/migrations/flag-inner-html/README.md +67 -0
  390. package/schematics/migrations/flag-inner-html/data.cjs +58 -0
  391. package/schematics/migrations/flag-inner-html/index.cjs +62 -0
  392. package/schematics/migrations/flag-inner-html/schema.json +15 -0
  393. package/schematics/migrations/form-field-signals/README.md +125 -0
  394. package/schematics/migrations/form-field-signals/data.cjs +288 -0
  395. package/schematics/migrations/form-field-signals/index.cjs +383 -0
  396. package/schematics/migrations/form-field-signals/schema.json +20 -0
  397. package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
  398. package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
  399. package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
  400. package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
  401. package/schematics/migrations/icons-replacement/README.md +5 -5
  402. package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
  403. package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
  404. package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
  405. package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
  406. package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
  407. package/schematics/migrations/input-number-surface/README.md +140 -0
  408. package/schematics/migrations/input-number-surface/data.cjs +135 -0
  409. package/schematics/migrations/input-number-surface/index.cjs +293 -0
  410. package/schematics/migrations/input-number-surface/schema.json +20 -0
  411. package/schematics/migrations/input-signals/README.md +20 -0
  412. package/schematics/migrations/input-signals/data.cjs +30 -0
  413. package/schematics/migrations/input-signals/index.cjs +18 -0
  414. package/schematics/migrations/input-signals/schema.json +15 -0
  415. package/schematics/migrations/link-deprecated-path/README.md +144 -0
  416. package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
  417. package/schematics/migrations/link-deprecated-path/schema.json +20 -0
  418. package/schematics/migrations/link-signals/README.md +71 -0
  419. package/schematics/migrations/link-signals/data.cjs +116 -0
  420. package/schematics/migrations/link-signals/index.cjs +416 -0
  421. package/schematics/migrations/link-signals/schema.json +20 -0
  422. package/schematics/migrations/list-signals/README.md +22 -0
  423. package/schematics/migrations/list-signals/data.cjs +35 -0
  424. package/schematics/migrations/list-signals/index.cjs +18 -0
  425. package/schematics/migrations/list-signals/schema.json +15 -0
  426. package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
  427. package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
  428. package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
  429. package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
  430. package/schematics/migrations/loader-overlay-signals/README.md +62 -0
  431. package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
  432. package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
  433. package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
  434. package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
  435. package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
  436. package/schematics/migrations/locale-configuration-providers/README.md +163 -0
  437. package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
  438. package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
  439. package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
  440. package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
  441. package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
  442. package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
  443. package/schematics/migrations/markdown-signals/README.md +58 -0
  444. package/schematics/migrations/markdown-signals/data.cjs +79 -0
  445. package/schematics/migrations/markdown-signals/index.cjs +640 -0
  446. package/schematics/migrations/markdown-signals/schema.json +20 -0
  447. package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
  448. package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
  449. package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
  450. package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
  451. package/schematics/migrations/modal-signals/README.md +88 -0
  452. package/schematics/migrations/modal-signals/data.cjs +132 -0
  453. package/schematics/migrations/modal-signals/index.cjs +20 -0
  454. package/schematics/migrations/modal-signals/schema.json +20 -0
  455. package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
  456. package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
  457. package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
  458. package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
  459. package/schematics/migrations/new-icons-pack/README.md +10 -10
  460. package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
  461. package/schematics/migrations/notification-center-signals/README.md +67 -0
  462. package/schematics/migrations/notification-center-signals/data.cjs +66 -0
  463. package/schematics/migrations/notification-center-signals/index.cjs +62 -0
  464. package/schematics/migrations/notification-center-signals/schema.json +15 -0
  465. package/schematics/migrations/option-signals/README.md +37 -0
  466. package/schematics/migrations/option-signals/data.cjs +86 -0
  467. package/schematics/migrations/option-signals/index.cjs +20 -0
  468. package/schematics/migrations/option-signals/schema.json +20 -0
  469. package/schematics/migrations/popover-leave-delay/README.md +51 -0
  470. package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
  471. package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
  472. package/schematics/migrations/popover-leave-delay/schema.json +15 -0
  473. package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
  474. package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
  475. package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
  476. package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
  477. package/schematics/migrations/progress-spinner-signals/README.md +72 -0
  478. package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
  479. package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
  480. package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
  481. package/schematics/migrations/query-list-signals/README.md +32 -0
  482. package/schematics/migrations/query-list-signals/data.cjs +70 -0
  483. package/schematics/migrations/query-list-signals/index.cjs +18 -0
  484. package/schematics/migrations/query-list-signals/schema.json +15 -0
  485. package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
  486. package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
  487. package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
  488. package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
  489. package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
  490. package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
  491. package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
  492. package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
  493. package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
  494. package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
  495. package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
  496. package/schematics/migrations/select-signal-inputs/README.md +61 -0
  497. package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
  498. package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
  499. package/schematics/migrations/select-signal-inputs/schema.json +15 -0
  500. package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
  501. package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
  502. package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
  503. package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
  504. package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
  505. package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
  506. package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
  507. package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
  508. package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
  509. package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
  510. package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
  511. package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
  512. package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
  513. package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
  514. package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
  515. package/schematics/migrations/state-saving-default/README.md +67 -0
  516. package/schematics/migrations/state-saving-default/data.cjs +88 -0
  517. package/schematics/migrations/state-saving-default/index.cjs +63 -0
  518. package/schematics/migrations/state-saving-default/schema.json +15 -0
  519. package/schematics/migrations/table-cell-content/README.md +55 -0
  520. package/schematics/migrations/table-cell-content/data.cjs +66 -0
  521. package/schematics/migrations/table-cell-content/index.cjs +67 -0
  522. package/schematics/migrations/table-cell-content/schema.json +15 -0
  523. package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
  524. package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
  525. package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
  526. package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
  527. package/schematics/migrations/tag-list-cleaner/README.md +58 -0
  528. package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
  529. package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
  530. package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
  531. package/schematics/migrations/tag-slots/README.md +41 -0
  532. package/schematics/migrations/tag-slots/index.cjs +191 -0
  533. package/schematics/migrations/tag-slots/schema.json +20 -0
  534. package/schematics/migrations/tags-signals/README.md +85 -0
  535. package/schematics/migrations/tags-signals/data.cjs +103 -0
  536. package/schematics/migrations/tags-signals/index.cjs +674 -0
  537. package/schematics/migrations/tags-signals/schema.json +20 -0
  538. package/schematics/migrations/textarea-signals/README.md +72 -0
  539. package/schematics/migrations/textarea-signals/data.cjs +121 -0
  540. package/schematics/migrations/textarea-signals/index.cjs +380 -0
  541. package/schematics/migrations/textarea-signals/schema.json +20 -0
  542. package/schematics/migrations/time-range-title-for/README.md +164 -0
  543. package/schematics/migrations/time-range-title-for/data.cjs +139 -0
  544. package/schematics/migrations/time-range-title-for/index.cjs +164 -0
  545. package/schematics/migrations/time-range-title-for/schema.json +20 -0
  546. package/schematics/migrations/timepicker-signals/README.md +78 -0
  547. package/schematics/migrations/timepicker-signals/data.cjs +82 -0
  548. package/schematics/migrations/timepicker-signals/index.cjs +710 -0
  549. package/schematics/migrations/timepicker-signals/schema.json +20 -0
  550. package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
  551. package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
  552. package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
  553. package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
  554. package/schematics/migrations/title-encapsulation/README.md +49 -0
  555. package/schematics/migrations/title-encapsulation/data.cjs +69 -0
  556. package/schematics/migrations/title-encapsulation/index.cjs +58 -0
  557. package/schematics/migrations/title-encapsulation/schema.json +15 -0
  558. package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
  559. package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
  560. package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
  561. package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
  562. package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
  563. package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
  564. package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
  565. package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
  566. package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
  567. package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
  568. package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
  569. package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
  570. package/schematics/migrations/tree-select-signals/README.md +61 -0
  571. package/schematics/migrations/tree-select-signals/data.cjs +106 -0
  572. package/schematics/migrations/tree-select-signals/index.cjs +59 -0
  573. package/schematics/migrations/tree-select-signals/schema.json +15 -0
  574. package/schematics/migrations/tree-signals/README.md +82 -0
  575. package/schematics/migrations/tree-signals/data.cjs +123 -0
  576. package/schematics/migrations/tree-signals/index.cjs +55 -0
  577. package/schematics/migrations/tree-signals/schema.json +15 -0
  578. package/schematics/migrations/tree-state-saving-default/README.md +66 -0
  579. package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
  580. package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
  581. package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
  582. package/schematics/migrations/username-pipe-injection/README.md +59 -0
  583. package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
  584. package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
  585. package/schematics/migrations/username-pipe-injection/schema.json +15 -0
  586. package/schematics/migrations/v20-upgrade/README.md +36 -16
  587. package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
  588. package/schematics/migrations/v20-upgrade/index.cjs +19 -0
  589. package/schematics/migrations/v21-upgrade/README.md +271 -0
  590. package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
  591. package/schematics/migrations/v21-upgrade/index.cjs +95 -0
  592. package/schematics/migrations/v21-upgrade/schema.json +20 -0
  593. package/schematics/migrations/zoneless-change-detection/README.md +30 -0
  594. package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
  595. package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
  596. package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
  597. package/schematics/migrations.json +401 -6
  598. package/schematics/ng-add/index.cjs +266 -0
  599. package/schematics/ng-add/schema.json +15 -0
  600. package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
  601. package/schematics/utils/deprecated-path-migration.cjs +62 -0
  602. package/schematics/utils/html-config.cjs +148 -0
  603. package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
  604. package/schematics/utils/list-item-pattern.cjs +16 -0
  605. package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
  606. package/schematics/utils/project-files.cjs +25 -0
  607. package/schematics/utils/replacement-driver.cjs +337 -0
  608. package/schematics/utils/safe-rule.cjs +23 -0
  609. package/schematics/utils/signal-members-migration.cjs +779 -0
  610. package/schematics/utils/tag-patterns.cjs +21 -0
  611. package/schematics/utils/template-ref-access.cjs +155 -0
  612. package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
  613. package/schematics/utils/warn-only-migration.cjs +52 -0
  614. package/schematics/utils/workspace-styles.cjs +123 -0
  615. package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
  616. package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
  617. package/scrollbar/native-scrollbar.scss +68 -0
  618. package/scrollbar/scrollbar-tokens.scss +13 -22
  619. package/scrollbar/scrollbar-track.scss +94 -0
  620. package/scrollbar/scrollbar-viewport.scss +33 -0
  621. package/scrollbar/scrollbar.scss +24 -0
  622. package/search-expandable/search-expandable-tokens.scss +4 -0
  623. package/search-expandable/search-expandable.scss +4 -2
  624. package/select/_select-theme.scss +3 -16
  625. package/select/select.scss +0 -6
  626. package/sidebar/sidebar.scss +20 -0
  627. package/sidepanel/_sidepanel-theme.scss +1 -1
  628. package/sidepanel/sidepanel-tokens.scss +7 -1
  629. package/sidepanel/sidepanel.scss +41 -5
  630. package/skeleton/skeleton-presets.scss +350 -0
  631. package/skeleton/skeleton-tokens.scss +127 -0
  632. package/skeleton/skeleton.scss +53 -45
  633. package/split-button/_split-button-theme.scss +4 -4
  634. package/split-button/split-button.scss +2 -6
  635. package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
  636. package/splitter/deprecated/splitter.scss +51 -0
  637. package/splitter/splitter-tokens.scss +19 -0
  638. package/splitter/splitter.scss +148 -28
  639. package/table/_table-theme.scss +13 -12
  640. package/table/table-tokens.scss +8 -0
  641. package/table/table.scss +47 -22
  642. package/tabs/_tabs-common.scss +14 -14
  643. package/tabs/_tabs-theme.scss +4 -5
  644. package/tabs/tab-body.scss +49 -1
  645. package/tabs/tab-header.scss +2 -1
  646. package/tags/tag-list.scss +4 -0
  647. package/tags/tag.scss +19 -1
  648. package/time-range/time-range.scss +9 -0
  649. package/timezone/timezone-option.component.scss +4 -7
  650. package/timezone/timezone-select.component.scss +3 -0
  651. package/toast/_toast-theme.scss +1 -4
  652. package/toast/toast-container.component.scss +19 -13
  653. package/toast/toast-tokens.scss +12 -6
  654. package/toast/toast.component.scss +42 -19
  655. package/toggle/_toggle-theme.scss +4 -10
  656. package/toggle/toggle.scss +67 -26
  657. package/tooltip/_tooltip-theme.scss +7 -1
  658. package/tooltip/tooltip-tokens.scss +1 -2
  659. package/tooltip/tooltip.scss +55 -9
  660. package/top-bar/top-bar-tokens.scss +13 -2
  661. package/top-bar/top-bar.scss +24 -19
  662. package/tree/_tree-theme.scss +0 -1
  663. package/tree/toggle.scss +5 -9
  664. package/tree/tree-option.scss +2 -4
  665. package/tree/tree-tokens.scss +2 -1
  666. package/tree/tree.scss +3 -5
  667. package/tree-select/_tree-select-theme.scss +4 -15
  668. package/tree-select/tree-select-tokens.scss +16 -0
  669. package/tree-select/tree-select.scss +0 -6
  670. package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
  671. package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
  672. package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
  673. package/types/koobiq-components-app-switcher.d.ts +406 -0
  674. package/types/koobiq-components-autocomplete.d.ts +443 -0
  675. package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
  676. package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
  677. package/types/koobiq-components-button-toggle.d.ts +340 -0
  678. package/types/koobiq-components-button.d.ts +296 -0
  679. package/types/koobiq-components-checkbox.d.ts +172 -0
  680. package/types/koobiq-components-clamped-text.d.ts +184 -0
  681. package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
  682. package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
  683. package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
  684. package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
  685. package/types/koobiq-components-divider.d.ts +43 -0
  686. package/types/koobiq-components-dl.d.ts +235 -0
  687. package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
  688. package/types/koobiq-components-ellipsis-center.d.ts +85 -0
  689. package/types/koobiq-components-empty-state.d.ts +106 -0
  690. package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
  691. package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
  692. package/types/koobiq-components-flag.d.ts +68 -0
  693. package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
  694. package/types/koobiq-components-icon.d.ts +333 -0
  695. package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
  696. package/types/koobiq-components-input.d.ts +477 -0
  697. package/types/koobiq-components-link-deprecated.d.ts +101 -0
  698. package/types/koobiq-components-link.d.ts +176 -0
  699. package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
  700. package/types/koobiq-components-loader-overlay.d.ts +101 -0
  701. package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
  702. package/types/koobiq-components-modal.d.ts +666 -0
  703. package/types/koobiq-components-navbar.d.ts +569 -0
  704. package/types/koobiq-components-notification-center.d.ts +500 -0
  705. package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
  706. package/types/koobiq-components-popover.d.ts +468 -0
  707. package/types/koobiq-components-progress-bar.d.ts +67 -0
  708. package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
  709. package/types/koobiq-components-radio.d.ts +294 -0
  710. package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
  711. package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
  712. package/types/koobiq-components-scrollbar.d.ts +154 -0
  713. package/types/koobiq-components-search-expandable.d.ts +164 -0
  714. package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
  715. package/types/koobiq-components-sidebar.d.ts +152 -0
  716. package/types/koobiq-components-sidepanel.d.ts +436 -0
  717. package/types/koobiq-components-skeleton.d.ts +234 -0
  718. package/types/koobiq-components-split-button.d.ts +65 -0
  719. package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
  720. package/types/koobiq-components-splitter.d.ts +406 -0
  721. package/types/koobiq-components-table.d.ts +44 -0
  722. package/types/koobiq-components-tabs.d.ts +888 -0
  723. package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
  724. package/types/koobiq-components-textarea.d.ts +178 -0
  725. package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
  726. package/types/koobiq-components-timepicker.d.ts +223 -0
  727. package/types/koobiq-components-timezone.d.ts +266 -0
  728. package/types/koobiq-components-title.d.ts +184 -0
  729. package/types/koobiq-components-toast.d.ts +289 -0
  730. package/types/koobiq-components-toggle.d.ts +121 -0
  731. package/types/koobiq-components-tooltip.d.ts +610 -0
  732. package/types/koobiq-components-top-bar.d.ts +61 -0
  733. package/types/koobiq-components-tree-select.d.ts +670 -0
  734. package/types/koobiq-components-tree.d.ts +1339 -0
  735. package/types/koobiq-components-username.d.ts +340 -0
  736. package/username/_username-theme.scss +35 -0
  737. package/username/username.scss +10 -34
  738. package/app-switcher/index.d.ts +0 -276
  739. package/autocomplete/index.d.ts +0 -286
  740. package/button/index.d.ts +0 -153
  741. package/button-toggle/index.d.ts +0 -162
  742. package/checkbox/index.d.ts +0 -163
  743. package/clamped-text/index.d.ts +0 -146
  744. package/core/styles/_tokens.scss +0 -7
  745. package/core/styles/common/_clearfix.scss +0 -13
  746. package/core/styles/common/_popup.scss +0 -6
  747. package/core/styles/functions/_index.scss +0 -3
  748. package/core/styles/functions/_number.scss +0 -60
  749. package/core/styles/functions/_string.scss +0 -18
  750. package/core/styles/theming/scrollbar-tokens.scss +0 -25
  751. package/core/styles/typography/_typography-utils.scss +0 -84
  752. package/divider/index.d.ts +0 -20
  753. package/dl/index.d.ts +0 -45
  754. package/ellipsis-center/index.d.ts +0 -71
  755. package/empty-state/index.d.ts +0 -45
  756. package/flag/index.d.ts +0 -44
  757. package/icon/index.d.ts +0 -200
  758. package/input/index.d.ts +0 -354
  759. package/link/index.d.ts +0 -56
  760. package/loader-overlay/index.d.ts +0 -57
  761. package/modal/index.d.ts +0 -339
  762. package/navbar/index.d.ts +0 -372
  763. package/notification-center/index.d.ts +0 -323
  764. package/popover/index.d.ts +0 -182
  765. package/prebuilt-themes/dark-theme.css +0 -1
  766. package/prebuilt-themes/light-theme.css +0 -1
  767. package/progress-bar/index.d.ts +0 -31
  768. package/radio/index.d.ts +0 -203
  769. package/schematics/migrations/alert-signals/index.js +0 -353
  770. package/schematics/migrations/filter-bar-signals/index.js +0 -319
  771. package/schematics/migrations/v20-upgrade/index.js +0 -225
  772. package/schematics/ng-add/index.js +0 -39
  773. package/search-expandable/index.d.ts +0 -101
  774. package/sidebar/index.d.ts +0 -94
  775. package/sidepanel/index.d.ts +0 -272
  776. package/skeleton/index.d.ts +0 -26
  777. package/split-button/index.d.ts +0 -46
  778. package/table/index.d.ts +0 -25
  779. package/tabs/index.d.ts +0 -677
  780. package/textarea/index.d.ts +0 -138
  781. package/timepicker/index.d.ts +0 -197
  782. package/timezone/index.d.ts +0 -125
  783. package/title/index.d.ts +0 -139
  784. package/toast/index.d.ts +0 -178
  785. package/toggle/index.d.ts +0 -104
  786. package/tooltip/index.d.ts +0 -335
  787. package/top-bar/index.d.ts +0 -33
  788. package/tree/index.d.ts +0 -802
  789. package/tree-select/index.d.ts +0 -475
  790. package/username/index.d.ts +0 -194
  791. /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
  792. /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
  793. /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
  794. /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
  795. /package/schematics/utils/{ast.js → ast.cjs} +0 -0
  796. /package/schematics/utils/{messages.js → messages.cjs} +0 -0
  797. /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
  798. /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-navbar.mjs","sources":["../../../packages/components/navbar/navbar-item.component.ts","../../../packages/components/navbar/navbar-item.component.html","../../../packages/components/navbar/navbar-brand.component.ts","../../../packages/components/navbar/navbar.component.ts","../../../packages/components/navbar/vertical-navbar.component.ts","../../../packages/components/navbar/navbar-toggle.component.ts","../../../packages/components/navbar/navbar.module.ts","../../../packages/components/navbar/koobiq-components-navbar.ts"],"sourcesContent":["import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n ViewEncapsulation,\n booleanAttribute,\n contentChild,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonCssStyler } from '@koobiq/components/button';\nimport {\n DOWN_ARROW,\n IFocusableOption,\n KBQ_WINDOW,\n PopUpPlacements,\n PopUpTriggers,\n RIGHT_ARROW,\n kbqInjectNativeElement\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nexport interface KbqNavbarFocusableItemEvent {\n item: KbqNavbarFocusableItem;\n}\n\n@Directive({\n selector: 'kbq-navbar-logo, [kbq-navbar-logo]',\n host: {\n class: 'kbq-navbar-logo',\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)'\n }\n})\nexport class KbqNavbarLogo {\n readonly hovered = new Subject<boolean>();\n}\n\n@Directive({\n selector: 'kbq-navbar-item[bento], [kbq-navbar-item][bento]',\n host: {\n class: 'kbq-navbar-bento'\n }\n})\nexport class KbqNavbarBento {}\n\n@Directive({\n selector: 'kbq-navbar-title, [kbq-navbar-title]',\n host: {\n class: 'kbq-navbar-title',\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)'\n }\n})\nexport class KbqNavbarTitle implements AfterViewInit {\n protected readonly isBrowser = inject(Platform).isBrowser;\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n\n readonly hovered = new Subject<boolean>();\n\n outerElementWidth: number;\n\n get text(): string {\n return this.nativeElement.textContent || '';\n }\n\n /** Whether the text is clipped horizontally (e.g. by `text-overflow: ellipsis`). */\n get isOverflown() {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollWidth > this.nativeElement.clientWidth;\n }\n\n /**\n * Whether the text is clipped vertically (e.g. by `-webkit-line-clamp`).\n *\n * Kept separate from `isOverflown` on purpose: wrapped text never exceeds its width, so only this\n * check catches a clamped title. `isOverflown` is also read by `KbqNavbarItem`, whose titles are\n * always `nowrap` — folding the two together would let sub-pixel line-height rounding enable\n * tooltips on every navbar item.\n */\n get isClamped(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollHeight > this.nativeElement.clientHeight;\n }\n\n /**\n * Outer width of the title: its border box plus horizontal margins.\n *\n * Measured with `getBoundingClientRect()` rather than `getComputedStyle().width`, which resolves\n * to the used content-box width whatever `box-sizing` says and would drop the title's padding.\n */\n getOuterElementWidth(): number {\n if (!this.isBrowser) return 0;\n\n const { marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n this.nativeElement.getBoundingClientRect().width\n );\n }\n\n ngAfterViewInit(): void {\n this.outerElementWidth = this.getOuterElementWidth();\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-divider',\n host: {\n class: 'kbq-navbar-divider'\n }\n})\nexport class KbqNavbarDivider {}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-brand, [kbq-navbar-brand], kbq-navbar-toggle',\n host: {\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'explicitlyDisabled || null',\n\n class: 'kbq-navbar-focusable-item',\n '[class.kbq-navbar-item_has-nested]': '!!nestedElement',\n '[class.kbq-disabled]': 'explicitlyDisabled',\n\n '(focus)': 'onFocusHandler()',\n '(blur)': 'blur()'\n }\n})\nexport class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n private ngZone = inject(NgZone);\n\n readonly title = contentChild(KbqNavbarTitle);\n\n readonly button = contentChild(KbqButton);\n\n readonly formField = contentChild(KbqFormField);\n\n get nestedElement(): KbqButton | KbqFormField | undefined {\n return this.button() || this.formField();\n }\n\n get tooltip(): KbqTooltipTrigger {\n return this._tooltip;\n }\n\n private _tooltip: KbqTooltipTrigger;\n\n readonly onFocus = new Subject<KbqNavbarFocusableItemEvent>();\n\n readonly onBlur = new Subject<KbqNavbarFocusableItemEvent>();\n\n get hasFocus(): boolean {\n return !!this.nestedElement?.hasFocus || this._hasFocus;\n }\n\n set hasFocus(value: boolean) {\n this._hasFocus = value;\n }\n\n private _hasFocus: boolean = false;\n\n /**\n * Whether the item is disabled.\n *\n * Also reads `true` for a decorative element, which the key manager has to skip just the same.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled() {\n return this._disabled || this.decorative;\n }\n\n set disabled(value: boolean) {\n if (value !== this._disabled) {\n this._disabled = value;\n this.changeDetector.markForCheck();\n }\n }\n\n private _disabled = false;\n\n /**\n * Keeps an element with nothing to interact with out of the roving focus order, without announcing or\n * styling it as disabled.\n *\n * @internal\n */\n decorative = false;\n\n /**\n * Whether the item was disabled through `disabled`, as opposed to being decorative.\n *\n * @internal\n */\n get explicitlyDisabled(): boolean {\n return this._disabled;\n }\n\n get tabIndex(): number {\n return -1;\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n ngAfterContentInit(): void {\n const button = this.button();\n\n if (button) {\n button.tabIndex = -1;\n }\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n setTooltip(value: KbqTooltipTrigger) {\n this._tooltip = value;\n }\n\n onFocusHandler() {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n this.onFocus.next({ item: this });\n\n this.hasFocus = true;\n\n this.changeDetector.markForCheck();\n\n this.elementRef.nativeElement.focus();\n }\n\n focus(origin?: FocusOrigin): void {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n if (origin === 'keyboard') {\n this.focusMonitor.focusVia(this.elementRef, origin);\n }\n\n if (this.nestedElement) {\n if (origin === 'keyboard') {\n // KbqButton tracks focus via FocusMonitor; KbqFormField just delegates to control.focus.\n if ('focusViaKeyboard' in this.nestedElement) {\n this.nestedElement.focusViaKeyboard();\n } else {\n this.nestedElement.focus();\n }\n }\n\n this.changeDetector.markForCheck();\n\n return;\n }\n\n if (origin === 'keyboard') {\n this.tooltip?.show();\n this.onFocusHandler();\n }\n }\n\n blur(): void {\n // When animations are enabled, Angular may end up removing the option from the DOM a little\n // earlier than usual, causing it to be blurred and throwing off the logic in the list\n // that moves focus not the next item. To work around the issue, we defer marking the option\n // as not focused until the next time the zone stabilizes.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.ngZone.run(() => {\n this._hasFocus = false;\n\n this.tooltip?.hide();\n\n if (this.button()?.hasFocus) {\n return;\n }\n\n this.onBlur.next({ item: this });\n });\n });\n }\n\n getLabel(): string {\n return this.title()?.text || '';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-divider, kbq-navbar-brand, [kbq-navbar-brand]',\n host: {\n '[class.kbq-vertical]': 'vertical',\n '[class.kbq-horizontal]': 'horizontal',\n\n '[class.kbq-expanded]': 'vertical && !collapsed',\n '[class.kbq-collapsed]': 'vertical && collapsed'\n }\n})\nexport class KbqNavbarRectangleElement {\n protected readonly isBrowser = inject(Platform).isBrowser;\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n readonly state = new Subject<void>();\n\n get horizontal(): boolean {\n return this._horizontal;\n }\n\n set horizontal(value: boolean) {\n if (this._horizontal === value) return;\n\n this._horizontal = value;\n this._vertical = !value;\n\n this.state.next();\n this.changeDetectorRef.markForCheck();\n }\n\n private _horizontal: boolean = false;\n\n get vertical(): boolean {\n return this._vertical;\n }\n\n set vertical(value: boolean) {\n if (this._vertical === value) return;\n\n this._vertical = value;\n this._horizontal = !value;\n\n this.state.next();\n this.changeDetectorRef.markForCheck();\n }\n\n private _vertical: boolean = true;\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n set collapsed(value: boolean) {\n if (this._collapsed === value) return;\n\n this._collapsed = value;\n\n this.state.next();\n }\n\n // Deliberately left `undefined`: it is not equal to either boolean, so the guard above always lets the\n // first assignment through. Initializing it to `false` would swallow the initial `collapsed = false` of a\n // navbar that starts expanded, and with it the `updateDropdown()` that rides on that emission.\n private _collapsed: boolean;\n\n readonly button = contentChild(KbqButtonCssStyler);\n\n /**\n * Outer width of the item: its border box plus horizontal margins.\n *\n * Measured with `getBoundingClientRect()` rather than `getComputedStyle().width`, which resolves\n * to the used content-box width whatever `box-sizing` says. `.kbq-navbar-item` is `border-box`\n * with horizontal padding, so the computed value dropped that padding from every item, while\n * `KbqNavbar.width` — the figure this sum is compared against — has always been a border box.\n * The navbar therefore under-counted its own content and collapsed later than it should.\n */\n getOuterElementWidth(): number {\n if (!this.isBrowser) return 0;\n\n const { marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n this.nativeElement.getBoundingClientRect().width\n );\n }\n}\n\n@Component({\n selector: 'kbq-navbar-item, [kbq-navbar-item]',\n imports: [\n KbqIcon\n ],\n templateUrl: './navbar-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-item',\n '[class.kbq-navbar-item_collapsed]': 'isCollapsed',\n '[class.kbq-navbar-item_with-title]': '!!title()',\n\n '(keydown)': 'onKeyDown($event)'\n },\n exportAs: 'kbqNavbarItem'\n})\nexport class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit {\n rectangleElement = inject(KbqNavbarRectangleElement);\n navbarFocusableItem = inject(KbqNavbarFocusableItem);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private dropdownTrigger = inject(KbqDropdownTrigger, { optional: true })!;\n private bento = inject(KbqNavbarBento, { optional: true });\n readonly title = contentChild(KbqNavbarTitle);\n\n readonly icon = contentChild(KbqIcon);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get collapsedText(): string {\n return this._collapsedText;\n }\n\n set collapsedText(value: string) {\n this._collapsedText = value;\n\n this.updateTooltip();\n }\n\n private _collapsedText: string;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTrigger')\n get trigger(): string {\n return this._trigger;\n }\n\n set trigger(value: string) {\n if (value) {\n this._trigger = value;\n\n this.initListeners();\n }\n }\n\n set collapsed(value: boolean) {\n if (this._collapsed !== value) {\n this._collapsed = value;\n\n this.updateTooltip();\n }\n }\n\n // todo in future need rename to 'collapsed'\n get isCollapsed(): boolean {\n return this._collapsed ?? this.rectangleElement.collapsed;\n }\n\n private _collapsed = false;\n\n get croppedText(): string {\n const croppedTitleText = this.title()?.isOverflown ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get collapsable(): boolean {\n return this._collapsable;\n }\n\n set collapsable(value: boolean) {\n this._collapsable = coerceBooleanProperty(value);\n }\n\n private _collapsable: boolean = true;\n\n get titleText(): string | null {\n return this._collapsedText || this.title()?.text || null;\n }\n\n get disabled(): boolean {\n if (this._disabled !== undefined) {\n return this._disabled;\n }\n\n return !this.isCollapsed && !this.hasCroppedText;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n get hasDropDownTrigger(): boolean {\n return !!this.dropdownTrigger;\n }\n\n get showVerticalDropDownAngle(): boolean {\n return !this.bento && this.hasDropDownTrigger && this.rectangleElement.vertical && !this.isCollapsed;\n }\n\n get showHorizontalDropDownAngle(): boolean {\n return this.hasDropDownTrigger && this.rectangleElement.horizontal && !this.isCollapsed;\n }\n\n get hasCroppedText(): boolean {\n return !!this.title()?.isOverflown;\n }\n\n constructor() {\n super();\n\n if (this.hasDropDownTrigger) {\n this.dropdownTrigger.openByArrowDown = false;\n }\n\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n this.collapsed = this.rectangleElement.collapsed;\n\n this.updateDropdown();\n\n this.changeDetectorRef.detectChanges();\n });\n\n this._trigger = `${PopUpTriggers.Hover}`;\n\n this.navbarFocusableItem.setTooltip(this);\n\n this.arrow = false;\n this.offset = 0;\n\n this.overlayConfig.panelClass = 'kbq-tooltip-panel_horizontal-navbar';\n }\n\n ngAfterContentInit(): void {\n this.updateTooltip();\n }\n\n updateDropdown(): void {\n if (!this.dropdownTrigger?.dropdown) return;\n\n if (this.rectangleElement.vertical) {\n this.dropdownTrigger.dropdown.overlapTriggerX = false;\n this.dropdownTrigger.dropdown.overlapTriggerY = true;\n // needs to shift dropdown to the left by 8 pixels\n this.dropdownTrigger.offsetX = -8;\n }\n }\n\n updateTooltip(): void {\n if (this.isCollapsed) {\n this.content = `${this.titleText || ''}`;\n } else if (!this.isCollapsed && this.hasCroppedText) {\n this.content = this.croppedText;\n }\n\n if (this.rectangleElement.vertical) {\n this.placement = PopUpPlacements.Right;\n this.placementPriority = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n getTitleWidth(): number {\n return this.title()?.outerElementWidth ?? 0;\n }\n\n onKeyDown($event: KeyboardEvent) {\n if (!this.hasDropDownTrigger) {\n return;\n }\n\n if (\n (this.rectangleElement.horizontal && $event.keyCode === DOWN_ARROW) ||\n (this.rectangleElement.vertical && $event.keyCode === RIGHT_ARROW)\n ) {\n this.dropdownTrigger.openedBy = 'keyboard';\n this.dropdownTrigger.open();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n}\n","<ng-content select=\"[kbq-icon]\" />\n\n@if (title()) {\n <div class=\"kbq-navbar-item__container\">\n <div class=\"kbq-navbar-item__title\">\n <ng-content select=\"kbq-navbar-title, [kbq-navbar-title]\" />\n </div>\n @if (showVerticalDropDownAngle) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-right_16\" color=\"contrast\"></i>\n }\n @if (showHorizontalDropDownAngle) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-down-s_16\" color=\"contrast\"></i>\n }\n </div>\n}\n\n<ng-content />\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentObserver } from '@angular/cdk/observers';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n inject,\n Injector,\n Input,\n input,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectNativeElement, PopUpPlacements, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { distinctUntilChanged, EMPTY, from, map, merge, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { KbqNavbarFocusableItem, KbqNavbarRectangleElement, KbqNavbarTitle } from './navbar-item.component';\n\n/** Switches the brand title to the compact two-line presentation. */\nconst LONG_TITLE_CLASS = 'kbq-navbar-brand_long-title';\n\n@Component({\n selector: 'kbq-navbar-brand, [kbq-navbar-brand]',\n template: `\n <ng-content />\n `,\n styleUrls: [\n './navbar-brand.scss'\n ],\n host: {\n class: 'kbq-navbar-brand',\n [`[class.${LONG_TITLE_CLASS}]`]: 'longTitleEnabled()',\n '[class.kbq-navbar-brand_link]': 'isLink'\n },\n exportAs: 'kbqNavbarBrand'\n})\nexport class KbqNavbarBrand extends KbqTooltipTrigger implements AfterContentInit {\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n protected readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n\n private readonly isBrowser = inject(Platform).isBrowser;\n private readonly resizeObserver = inject(SharedResizeObserver);\n private readonly contentObserver = inject(ContentObserver);\n private readonly document = inject(DOCUMENT);\n private readonly injector = inject(Injector);\n\n private readonly debounceInterval = 100;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /** Whether the title has been measured as not fitting into a single line. */\n private readonly autoLongTitle = signal(false);\n\n /**\n * Alternative display of the brand name in two lines.\n *\n * @deprecated The mode is now detected automatically when the title does not fit into a single line.\n * Leave unset for auto-detection; `true` and `false` force the mode on and off respectively.\n * Will be removed in the next major release.\n */\n readonly longTitle = input<boolean>();\n\n /** @docs-private */\n protected readonly longTitleEnabled = computed(() => this.longTitle() ?? this.autoLongTitle());\n\n /** text that will be displayed in the tooltip. By default, the text is taken from kbq-navbar-title. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get collapsedText(): string {\n return this._collapsedText;\n }\n\n set collapsedText(value: string) {\n this._collapsedText = value;\n\n this.updateTooltip();\n }\n\n private _collapsedText: string;\n\n get isLink(): boolean {\n return this.nativeElement.tagName === 'A';\n }\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.hasCroppedText ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n const title = this.title();\n\n return !!title && (title.isOverflown || title.isClamped);\n }\n\n /** @docs-private */\n get titleText(): string | null {\n return this.collapsedText || this.title()?.text || null;\n }\n\n /** @docs-private */\n get disabled(): boolean {\n if (this._disabled !== undefined) {\n return this._disabled;\n }\n\n return !this.collapsed && !this.hasCroppedText;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /** @docs-private */\n get collapsed(): boolean {\n return this._collapsed ?? this.rectangleElement.collapsed;\n }\n\n set collapsed(value: boolean) {\n if (this._collapsed !== value) {\n this._collapsed = value;\n\n this.updateTooltip();\n }\n }\n\n private _collapsed = false;\n\n constructor() {\n super();\n\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n this.collapsed = this.rectangleElement.collapsed;\n\n this.changeDetectorRef.detectChanges();\n });\n\n this._trigger = `${PopUpTriggers.Hover}`;\n\n this.navbarFocusableItem.setTooltip(this);\n\n this.arrow = false;\n this.offset = 0;\n\n this.navbarFocusableItem.decorative = !this.isLink;\n\n afterNextRender(() => {\n // Deferred a microtask: the ambient `KbqNavbar` flips this item's rectangle element to\n // horizontal via its own `Promise.resolve().then()` (see `KbqNavbar.setItemsState`), which\n // runs after this callback. Without the extra hop, the first measurement below can run while\n // the rectangle element still reports its default vertical/expanded state.\n Promise.resolve().then(() => this.observeLongTitle());\n });\n\n // A disabled navbar item takes `pointer-events: none`, which on a brand would also stop the tooltip a\n // collapsed brand depends on. Capturing on the host runs ahead of every listener of the link, `RouterLink`\n // included.\n const unlisten = this.renderer.listen(\n this.nativeElement,\n 'click',\n (event: MouseEvent) => this.preventDisabledActivation(event),\n { capture: true }\n );\n\n this.destroyRef.onDestroy(unlisten);\n }\n\n ngAfterContentInit(): void {\n this.updateTooltip();\n }\n\n private preventDisabledActivation(event: MouseEvent): void {\n if (!this.navbarFocusableItem.explicitlyDisabled) return;\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n private updateTooltip(): void {\n if (this.collapsed) {\n this.content = `${this.titleText || ''}`;\n } else if (!this.collapsed && this.hasCroppedText) {\n this.content = this.croppedText;\n }\n\n if (this.rectangleElement.vertical) {\n this.placement = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private observeLongTitle(): void {\n if (!this.isBrowser) return;\n\n this.updateAutoLongTitle();\n\n const host = this.nativeElement;\n\n const resize$ = this.resizeObserver.observe(host).pipe(\n map(() => host.clientWidth),\n distinctUntilChanged()\n );\n\n const content$ = this.contentObserver.observe(host);\n\n const fontSet: FontFaceSet | undefined = this.document.fonts;\n const fonts$: Observable<unknown> = fontSet ? from(fontSet.ready) : EMPTY;\n\n // Continuous, noisy sources - coalesce them.\n merge(resize$, content$, fonts$)\n .pipe(debounceTime(this.debounceInterval), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateAutoLongTitle());\n\n // Expanding is a discrete event, and a collapsed title is `display: none` - so the first expand is the\n // first chance to measure at all. Debouncing it paints the default presentation for the whole window\n // first. Measuring synchronously here would be just as wrong: `.kbq-collapsed` and the container's\n // width class are written by the change detection pass that *follows* this emission, so the read would\n // still see a `display: none` title inside a collapsed container. Render hooks run after that write and\n // before the browser paints, so the compact presentation lands on the very first frame.\n //\n // `mixedReadWrite` and not `read`: `measureNeedsLongTitle()` takes the class off around its read and\n // puts it back, and `read` is the phase documented to never write. Splitting the two across `write` and\n // `read` is not an option either - they are one indivisible measurement.\n this.rectangleElement.state\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() =>\n afterNextRender({ mixedReadWrite: () => this.updateAutoLongTitle() }, { injector: this.injector })\n );\n }\n\n private updateAutoLongTitle(): void {\n this.autoLongTitle.set(this.measureNeedsLongTitle());\n\n // The clamp state feeds into `hasCroppedText`, which the tooltip's content depends on - refresh it\n // so a title that becomes clamped after the initial render doesn't show stale/empty tooltip content.\n this.updateTooltip();\n }\n\n /**\n * Measures whether the title fits into a single line in the *default* presentation.\n *\n * Removing and restoring the class within a single task is safe: the browser does not paint mid-task, and\n * Angular's host binding only writes to the DOM when its value changes, which it does not here. Both rely\n * on there being no CSS transition on the title - add one and this starts to flicker.\n */\n private measureNeedsLongTitle(): boolean {\n const title = this.title();\n\n // A collapsed title is `display: none`, so it measures as 0 - keep the last known value instead.\n if (!title || this.rectangleElement.collapsed) {\n return this.autoLongTitle();\n }\n\n const host = this.nativeElement;\n const applied = host.classList.contains(LONG_TITLE_CLASS);\n\n if (applied) host.classList.remove(LONG_TITLE_CLASS);\n\n const overflown = title.isOverflown;\n\n if (applied) host.classList.add(LONG_TITLE_CLASS);\n\n return overflown;\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChildren,\n ContentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FocusKeyManager,\n isHorizontalMovement,\n isVerticalMovement,\n LEFT_ARROW,\n RIGHT_ARROW,\n TAB\n} from '@koobiq/components/core';\nimport { KBQ_DROPDOWN_HOST } from '@koobiq/components/dropdown';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport {\n KbqNavbarFocusableItem,\n KbqNavbarFocusableItemEvent,\n KbqNavbarItem,\n KbqNavbarRectangleElement\n} from './navbar-item.component';\n\nexport type KbqNavbarContainerPositionType = 'left' | 'right';\n\n@Directive()\nexport class KbqFocusableComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly focusMonitor = inject(FocusMonitor);\n\n @ContentChildren(forwardRef(() => KbqNavbarFocusableItem), { descendants: true })\n focusableItems: QueryList<KbqNavbarFocusableItem>;\n\n keyManager: FocusKeyManager<KbqNavbarFocusableItem>;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabIndex(): any {\n return this._tabIndex;\n }\n\n set tabIndex(value: any) {\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n private lastFocusOrigin: FocusOrigin = null;\n\n get optionFocusChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return merge(...this.focusableItems.map((item) => item.onFocus));\n }\n\n get optionBlurChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return merge(...this.focusableItems.map((option) => option.onBlur));\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n private optionFocusSubscription: Subscription | null;\n private optionBlurSubscription: Subscription | null;\n\n ngAfterContentInit(): void {\n this.keyManager = new FocusKeyManager<KbqNavbarFocusableItem>(this.focusableItems).withTypeAhead();\n\n this.keyManager.tabOut.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.tabIndex = -1;\n\n setTimeout(() => {\n this.tabIndex = 0;\n this.changeDetectorRef.markForCheck();\n });\n });\n\n this.focusableItems.changes.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.resetOptions();\n\n // Check to see if we need to update our tab index\n this.updateTabIndex();\n });\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef).subscribe((focusOrigin) => {\n this.lastFocusOrigin = focusOrigin;\n this.keyManager.setFocusOrigin(focusOrigin);\n });\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n focus(): void {\n if (this.focusableItems.length === 0) {\n return;\n }\n\n // Pointer focus on the navbar host (e.g. clicking empty area) should not\n // steal keyboard focus into the first item, which would surface its tooltip.\n if (this.lastFocusOrigin === 'mouse' || this.lastFocusOrigin === 'touch') {\n return;\n }\n\n this.keyManager.setFirstItemActive();\n }\n\n blur() {\n if (!this.hasFocusedItem()) {\n this.keyManager.setActiveItem(-1);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected resetOptions() {\n this.dropSubscriptions();\n this.listenToOptionsFocus();\n }\n\n protected dropSubscriptions() {\n if (this.optionFocusSubscription) {\n this.optionFocusSubscription.unsubscribe();\n this.optionFocusSubscription = null;\n }\n\n if (this.optionBlurSubscription) {\n this.optionBlurSubscription.unsubscribe();\n this.optionBlurSubscription = null;\n }\n }\n\n private listenToOptionsFocus(): void {\n this.optionFocusSubscription = this.optionFocusChanges.subscribe((event) => {\n const index: number = this.focusableItems.toArray().indexOf(event.item);\n\n if (this.isValidIndex(index)) {\n this.keyManager.updateActiveItem(index);\n }\n });\n\n this.optionBlurSubscription = this.optionBlurChanges.subscribe(() => this.blur());\n }\n\n private updateTabIndex(): void {\n this.tabIndex = this.focusableItems.length === 0 ? -1 : 0;\n }\n\n private isValidIndex(index: number): boolean {\n return index >= 0 && index < this.focusableItems.length;\n }\n\n private hasFocusedItem() {\n return this.focusableItems.some((item) => item.hasFocus);\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-container',\n host: {\n class: 'kbq-navbar-container'\n }\n})\nexport class KbqNavbarContainer {}\n\n@Component({\n selector: 'kbq-navbar',\n template: `\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n `,\n styleUrls: [\n './navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n providers: [\n { provide: KBQ_DROPDOWN_HOST, useExisting: KbqNavbar }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n '(keydown)': 'onKeyDown($event)',\n '(window:resize)': 'resizeStream.next($event)'\n }\n})\nexport class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n protected readonly elementRef: ElementRef<HTMLElement>;\n protected readonly changeDetectorRef: ChangeDetectorRef;\n protected readonly focusMonitor: FocusMonitor;\n private readonly platform = inject(Platform);\n\n readonly rectangleElements = contentChildren(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n readonly navbarItems = contentChildren(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n readonly resizeStream = new Subject<Event>();\n\n private readonly resizeDebounceInterval: number = 100;\n\n private get width(): number {\n return this.elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n private get totalItemsWidth(): number {\n return this.rectangleElements().reduce((acc, item) => acc + item.getOuterElementWidth(), 0);\n }\n\n private get collapsableItems(): KbqNavbarItem[] {\n return this.navbarItems()\n .filter((item) => item.icon() && item.title() && item.collapsable)\n .reverse();\n }\n\n private resizeSubscription: Subscription;\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const changeDetectorRef = inject(ChangeDetectorRef);\n const focusMonitor = inject(FocusMonitor);\n\n super();\n this.elementRef = elementRef;\n this.changeDetectorRef = changeDetectorRef;\n this.focusMonitor = focusMonitor;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval), takeUntilDestroyed())\n .subscribe(this.updateExpandedStateForItems);\n\n effect(() => this.setItemsState(this.rectangleElements()));\n }\n\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(false).withHorizontalOrientation('ltr');\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n if (!this.platform.isBrowser) return;\n // Note: this wait is required for loading and rendering fonts for icons;\n // unfortunately we cannot control font rendering\n setTimeout(this.updateExpandedStateForItems);\n }\n\n ngOnDestroy() {\n this.resizeSubscription.unsubscribe();\n\n super.ngOnDestroy();\n }\n\n onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n if (!this.eventFromInput(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (this.eventFromInput(event) && this.cursorOnLastPosition(event) && keyCode === RIGHT_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (this.eventFromInput(event) && this.cursorOnFirstPosition(event) && keyCode === LEFT_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else if (!this.eventFromInput(event)) {\n this.keyManager.onKeydown(event);\n }\n }\n\n updateExpandedStateForItems = () => {\n const collapseDelta = this.totalItemsWidth - this.width;\n\n const needCollapse = collapseDelta > 0;\n\n if (needCollapse) {\n this.collapseItems(collapseDelta);\n } else {\n this.expandItems(collapseDelta);\n }\n };\n\n private eventFromInput(event: KeyboardEvent): boolean {\n return !!(event.target as HTMLElement).attributes.getNamedItem('kbqinput');\n }\n\n private cursorOnFirstPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionStart === 0;\n }\n\n private cursorOnLastPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionEnd === input.value.length;\n }\n\n private collapseItems(collapseDelta: number) {\n let delta = collapseDelta;\n\n const unCollapsedItems = this.collapsableItems.filter((item) => !item.collapsed);\n\n for (const item of unCollapsedItems) {\n item.collapsed = true;\n delta -= item.getTitleWidth();\n\n if (delta < 0) {\n break;\n }\n }\n }\n\n private expandItems(collapseDelta: number) {\n let delta = collapseDelta;\n\n this.collapsableItems\n .filter((item) => item.collapsed)\n .forEach((item) => {\n if (delta + item.getTitleWidth() < 0) {\n item.collapsed = false;\n delta += item.getTitleWidth();\n }\n });\n }\n\n private setItemsState = (rectangleElements: Readonly<KbqNavbarRectangleElement[]>) => {\n Promise.resolve().then(() => rectangleElements.forEach((item) => (item.horizontal = true)));\n };\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n InjectionToken,\n Input,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n DOWN_ARROW,\n isHorizontalMovement,\n isVerticalMovement,\n KBQ_LOCALE_SERVICE,\n ruRULocaleData,\n TAB,\n UP_ARROW\n} from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { KbqNavbarBento, KbqNavbarItem, KbqNavbarRectangleElement } from './navbar-item.component';\nimport { KbqFocusableComponent } from './navbar.component';\n\n/** default configuration of navbar */\n/** @docs-private */\nexport const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION = ruRULocaleData.navbar;\n\n/** Injection Token for providing configuration of navbar */\n/** @docs-private */\nexport const KBQ_VERTICAL_NAVBAR_CONFIGURATION = new InjectionToken('KbqVerticalNavbarConfiguration');\n\n@Component({\n selector: 'kbq-vertical-navbar',\n template: `\n <div class=\"kbq-vertical-navbar__container\" [class.kbq-collapsed]=\"!expanded\" [class.kbq-expanded]=\"expanded\">\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n <ng-content select=\"[kbq-navbar-toggle], kbq-navbar-toggle\" />\n </div>\n `,\n styleUrls: [\n './vertical-navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-vertical-navbar',\n '[class.kbq-vertical-navbar_open-over]': 'openOver()',\n '[attr.tabindex]': 'tabIndex',\n '[attr.cdkMonitorSubtreeFocus]': 'true',\n\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [CdkMonitorFocus],\n exportAs: 'KbqVerticalNavbar'\n})\nexport class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit {\n protected elementRef: ElementRef<HTMLElement>;\n\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n readonly externalConfiguration = inject(KBQ_VERTICAL_NAVBAR_CONFIGURATION, { optional: true });\n configuration;\n\n rectangleElements = contentChildren(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n readonly items = contentChildren(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n readonly bento = contentChild(forwardRef(() => KbqNavbarBento));\n\n readonly animationDone: Subject<void> = new Subject();\n\n readonly openOver = input<boolean>(false);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get expanded() {\n return this._expanded;\n }\n\n set expanded(value: boolean) {\n this._expanded = coerceBooleanProperty(value);\n\n this.updateExpandedStateForItems();\n }\n\n private _expanded: boolean = false;\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n super();\n this.elementRef = elementRef;\n\n this.animationDone.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipForItems);\n\n effect(() => this.setItemsVerticalStateAndUpdateExpandedState(this.rectangleElements()));\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterContentInit(): void {\n this.updateTooltipForItems();\n\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(true);\n }\n\n toggle(): void {\n this.expanded = !this.expanded;\n\n this.changeDetectorRef.markForCheck();\n }\n\n onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n if (\n !(event.target as HTMLElement).attributes.getNamedItem('kbqinput') &&\n (isVerticalMovement(event) || isHorizontalMovement(event))\n ) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (keyCode === DOWN_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (keyCode === UP_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else {\n this.keyManager.onKeydown(event);\n }\n }\n\n private updateExpandedStateForItems = () => this.rectangleElements().forEach(this.updateItemExpandedState);\n\n private updateTooltipForItems = () => this.items().forEach((item) => item.updateTooltip());\n\n private setItemsVerticalStateAndUpdateExpandedState = (rectangleElements: Readonly<KbqNavbarRectangleElement[]>) =>\n rectangleElements.forEach(this.setItemVerticalStateAndUpdateExpandedState);\n\n private setItemVerticalStateAndUpdateExpandedState = (item: KbqNavbarRectangleElement): void => {\n queueMicrotask(() => this.setItemVerticalState(item));\n this.updateItemExpandedState(item);\n };\n\n private setItemVerticalState = (item: KbqNavbarRectangleElement): void => {\n item.vertical = true;\n };\n\n private updateItemExpandedState = (item: KbqNavbarRectangleElement): void => {\n item.collapsed = !this.expanded;\n setTimeout(() => item.button()?.updateClassModifierForIcons());\n };\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('navbar');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION;\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n NgZone,\n OnDestroy,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ENTER, KBQ_WINDOW, NUMPAD_DIVIDE, PopUpPlacements, SLASH, SPACE } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@Component({\n selector: 'kbq-navbar-toggle, [kbq-navbar-toggle]',\n imports: [\n KbqIconModule\n ],\n template: `\n <span class=\"kbq-navbar-toggle__circle\">\n <ng-content select=\"[kbq-icon]\">\n <i\n kbq-icon\n [class.kbq-chevron-double-left-s_16]=\"navbar.expanded\"\n [class.kbq-chevron-double-right-s_16]=\"!navbar.expanded\"\n ></i>\n </ng-content>\n </span>\n `,\n styleUrls: ['./navbar-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-toggle kbq-vertical',\n '[class.kbq-collapsed]': '!navbar.expanded',\n '[class.kbq-expanded]': 'navbar.expanded',\n\n '(keydown)': 'keydownHandler($event)',\n '(click)': 'toggle()'\n },\n hostDirectives: [CdkMonitorFocus, KbqTooltipTrigger]\n})\nexport class KbqNavbarToggle implements OnDestroy {\n private readonly window = inject(KBQ_WINDOW);\n private readonly ngZone = inject(NgZone);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n /** @docs-private */\n protected readonly navbar = inject(KbqVerticalNavbar);\n\n constructor() {\n afterNextRender(() => {\n this.ngZone.runOutsideAngular(() => this.window.addEventListener('keydown', this.windowToggleHandler));\n });\n\n this.tooltip.arrow = false;\n this.updateTooltipContent();\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n\n this.tooltip.visibleChange.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipContent);\n }\n\n ngOnDestroy(): void {\n this.window.removeEventListener('keydown', this.windowToggleHandler);\n }\n\n /** @docs-private */\n keydownHandler($event: KeyboardEvent) {\n if ([SPACE, ENTER].includes($event.keyCode)) {\n this.toggle();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n /** toggles the state of the navbar */\n toggle() {\n this.navbar.toggle();\n this.tooltip.hide();\n\n this.changeDetectorRef.detectChanges();\n }\n\n private updateTooltipContent = () => {\n this.tooltip.content = this.navbar.expanded\n ? this.navbar.configuration.toggle.collapse\n : this.navbar.configuration.toggle.expand;\n };\n\n private windowToggleHandler = (event: KeyboardEvent) => {\n if (event.ctrlKey && [NUMPAD_DIVIDE, SLASH].includes(event.keyCode)) {\n this.ngZone.run(this.navbar.toggle);\n }\n };\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqNavbarBrand } from './navbar-brand.component';\nimport {\n KbqNavbarBento,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarItem,\n KbqNavbarLogo,\n KbqNavbarRectangleElement,\n KbqNavbarTitle\n} from './navbar-item.component';\nimport { KbqNavbarToggle } from './navbar-toggle.component';\nimport { KbqNavbar, KbqNavbarContainer } from './navbar.component';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqIconModule,\n KbqToolTipModule,\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento\n ],\n exports: [\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento\n ]\n})\nexport class KbqNavbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-navbar.mjs","sources":["../../../packages/components/navbar/outer-width.ts","../../../packages/components/navbar/navbar-item.component.ts","../../../packages/components/navbar/navbar-item.component.html","../../../packages/components/navbar/navbar-brand.component.ts","../../../packages/components/navbar/navbar.component.ts","../../../packages/components/navbar/vertical-navbar.component.ts","../../../packages/components/navbar/navbar-toggle.component.ts","../../../packages/components/navbar/navbar.module.ts","../../../packages/components/navbar/koobiq-components-navbar.ts"],"sourcesContent":["/**\n * Outer width of an element: its border box plus horizontal margins.\n *\n * Measured with `getBoundingClientRect()` rather than `getComputedStyle().width`, which resolves to the used\n * content-box width whatever `box-sizing` says: `.kbq-navbar-item` is `border-box` with horizontal padding, and\n * the navbar compares these sums against its own border box.\n */\nexport const getOuterWidth = (element: Element, window: Window): number => {\n const { marginLeft, marginRight } = window.getComputedStyle(element);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n element.getBoundingClientRect().width\n );\n};\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { ContentObserver } from '@angular/cdk/observers';\nimport { _getFocusedElementPierceShadowDom, Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n Signal,\n signal,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonCssStyler } from '@koobiq/components/button';\nimport {\n DOWN_ARROW,\n ENTER,\n IFocusableOption,\n KBQ_WINDOW,\n kbqAnimationsDisabled,\n kbqInjectNativeElement,\n PopUpPlacements,\n PopUpTriggers,\n RIGHT_ARROW,\n SPACE\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject } from 'rxjs';\nimport { getOuterWidth } from './outer-width';\n\n/** Orientation of the navbar an element belongs to. */\nexport type KbqNavbarOrientation = 'horizontal' | 'vertical';\n\n/**\n * Elements that already turn Enter/Space into a `click` on their own. Items authored on top of them must not\n * get a synthetic activation on the same key, or the handler runs twice.\n */\nconst NATIVELY_ACTIONABLE_TAGS = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']);\n\n/** Switches an item to its collapsed, icon-only presentation. */\nconst COLLAPSED_ITEM_CLASS = 'kbq-navbar-item_collapsed';\n\n/** @docs-private */\nexport interface KbqNavbarFocusableItemEvent {\n item: KbqNavbarFocusableItem;\n}\n\n@Directive({\n selector: 'kbq-navbar-logo, [kbq-navbar-logo]',\n host: {\n class: 'kbq-navbar-logo'\n }\n})\nexport class KbqNavbarLogo {}\n\n@Directive({\n selector: 'kbq-navbar-item[bento], [kbq-navbar-item][bento]',\n host: {\n class: 'kbq-navbar-bento'\n }\n})\nexport class KbqNavbarBento {}\n\n/** Marks content to be projected after the title of a navbar item. */\n@Directive({\n selector: '[kbqNavbarItemSuffix]',\n host: {\n class: 'kbq-navbar-item-suffix'\n }\n})\nexport class KbqNavbarItemSuffix {}\n\n@Directive({\n selector: 'kbq-navbar-title, [kbq-navbar-title]',\n host: {\n class: 'kbq-navbar-title'\n }\n})\nexport class KbqNavbarTitle {\n /** @docs-private */\n protected readonly isBrowser = inject(Platform).isBrowser;\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n\n /** Text content of the title element. */\n get text(): string {\n return this.nativeElement.textContent || '';\n }\n\n /** Whether the text is clipped horizontally (e.g. by `text-overflow: ellipsis`). */\n get isOverflown(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollWidth > this.nativeElement.clientWidth;\n }\n\n /**\n * Whether the text is clipped vertically (e.g. by `-webkit-line-clamp`).\n *\n * Kept separate from `isOverflown` on purpose: wrapped text never exceeds its width, so only this\n * check catches a clamped title. `isOverflown` is also read by `KbqNavbarItem`, whose titles are\n * always `nowrap` — folding the two together would let sub-pixel line-height rounding enable\n * tooltips on every navbar item.\n */\n get isClamped(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollHeight > this.nativeElement.clientHeight;\n }\n\n /** Outer width of the title: its border box plus horizontal margins. */\n getOuterElementWidth(): number {\n return this.isBrowser ? getOuterWidth(this.nativeElement, this.window) : 0;\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-divider',\n host: {\n class: 'kbq-navbar-divider',\n role: 'separator',\n '[attr.aria-orientation]': 'ariaOrientation'\n }\n})\nexport class KbqNavbarDivider {\n // Optional: the divider only picks up a rectangle element when both directives are imported, which is\n // what `KbqNavbarModule` does but a hand-rolled standalone import need not.\n private readonly rectangleElement = inject(KbqNavbarRectangleElement, { optional: true });\n\n /**\n * The separator runs across the navbar, so it is oriented the other way round: a horizontal navbar gets a\n * vertical rule and vice versa.\n */\n protected get ariaOrientation(): 'horizontal' | 'vertical' {\n return this.rectangleElement?.isHorizontal() ? 'vertical' : 'horizontal';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-brand, [kbq-navbar-brand], kbq-navbar-toggle',\n host: {\n '[attr.tabindex]': 'tabIndex',\n // `aria-disabled` and not the `disabled` content attribute: these are custom elements, not form\n // controls, so the browser and assistive technology both ignore `disabled` on them.\n '[attr.aria-disabled]': 'explicitlyDisabled || null',\n\n class: 'kbq-navbar-focusable-item',\n '[class.kbq-navbar-item_has-nested]': '!!nestedElement',\n '[class.kbq-disabled]': 'explicitlyDisabled',\n\n '(focus)': 'onFocusHandler()',\n '(blur)': 'blur()'\n }\n})\nexport class KbqNavbarFocusableItem implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /** @docs-private */\n readonly button = contentChild(KbqButton);\n\n /** @docs-private */\n readonly formField = contentChild(KbqFormField);\n\n /** Interactive element projected into the item, if any. */\n get nestedElement(): KbqButton | KbqFormField | undefined {\n return this.button() || this.formField();\n }\n\n /** @docs-private */\n get tooltip(): KbqTooltipTrigger {\n return this._tooltip;\n }\n\n private _tooltip: KbqTooltipTrigger;\n\n /** @docs-private */\n readonly onFocus = new Subject<KbqNavbarFocusableItemEvent>();\n\n /** @docs-private */\n readonly onBlur = new Subject<KbqNavbarFocusableItemEvent>();\n\n /** @docs-private */\n get hasFocus(): boolean {\n return !!this.nestedElement?.hasFocus || this.hasFocusState();\n }\n\n set hasFocus(value: boolean) {\n this.hasFocusState.set(value);\n }\n\n private readonly hasFocusState = signal(false);\n\n /** Whether the item is disabled. Also `true` for a decorative element, which the key manager skips as well. */\n // An accessor, not a signal: `FocusKeyManager` reads it as a boolean through its default skip predicate, where a\n // signal would always read truthy — the manager would skip every item and arrow navigation would stop working.\n get disabled(): boolean {\n return this.disabledState() || this.decorative();\n }\n\n set disabled(value: boolean) {\n this.disabledState.set(value);\n }\n\n private readonly disabledState = signal(false);\n\n /**\n * Keeps an element with nothing to interact with out of the roving focus order, without announcing or\n * styling it as disabled.\n *\n * @internal\n */\n readonly decorative = signal(false);\n\n /**\n * Whether the item was disabled through `disabled`, as opposed to being decorative.\n *\n * @internal\n */\n get explicitlyDisabled(): boolean {\n return this.disabledState();\n }\n\n /**\n * Items are never in the tab order themselves: the navbar host owns the single tab stop and moves focus\n * between items with the arrow keys (roving tabindex).\n */\n get tabIndex(): number {\n return -1;\n }\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member; unbound, it leaves what code wrote.\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n }\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.onFocus.complete();\n this.onBlur.complete();\n });\n }\n\n /** @docs-private */\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n const button = this.button();\n\n if (button) {\n button.tabIndex = -1;\n }\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n /** @docs-private */\n setTooltip(value: KbqTooltipTrigger) {\n this._tooltip = value;\n }\n\n /** @docs-private */\n onFocusHandler() {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n this.onFocus.next({ item: this });\n\n this.hasFocus = true;\n\n this.elementRef.nativeElement.focus();\n }\n\n /** @docs-private */\n focus(origin?: FocusOrigin): void {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n // A pointer focuses what it lands on by itself; moving the focus for it would surface a focus ring and a\n // tooltip. Focus set by code still has to reach the item, or the host keeps it while this item is active.\n const movesFocus = origin !== 'mouse' && origin !== 'touch';\n\n if (movesFocus) {\n this.focusMonitor.focusVia(this.elementRef, origin ?? 'program');\n }\n\n if (this.nestedElement) {\n // KbqButton tracks focus via FocusMonitor; KbqFormField just delegates to control.focus.\n if (origin === 'keyboard' && 'focusViaKeyboard' in this.nestedElement) {\n this.nestedElement.focusViaKeyboard();\n } else if (movesFocus) {\n this.nestedElement.focus();\n }\n\n this.changeDetector.markForCheck();\n\n return;\n }\n\n if (movesFocus) {\n if (origin === 'keyboard') this.tooltip?.show();\n\n this.onFocusHandler();\n }\n }\n\n /** @docs-private */\n blur(): void {\n // Deferred until the focus has settled: an item hands its focus to its nested button or form field, which\n // registers its focus only after this blur, and the item gets no focus event of its own afterwards. A blur\n // reported before that would read as no item being focused and clear the navbar's active item. An item\n // blurred by its own destruction has nothing to update.\n if (this.destroyRef.destroyed) return;\n\n afterNextRender(\n () => {\n // Focus can be back by the time this runs (a blur and a focus in the same task): then nothing was lost.\n if (_getFocusedElementPierceShadowDom() === this.elementRef.nativeElement) return;\n\n this.hasFocusState.set(false);\n\n this.tooltip?.hide();\n\n if (this.button()?.hasFocus) {\n return;\n }\n\n this.onBlur.next({ item: this });\n },\n { injector: this.injector }\n );\n }\n\n /** @docs-private */\n getLabel(): string {\n return this.title()?.text || '';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-divider, kbq-navbar-brand, [kbq-navbar-brand]',\n host: {\n '[class.kbq-vertical]': 'isVertical()',\n '[class.kbq-horizontal]': 'isHorizontal()',\n\n '[class.kbq-expanded]': 'isVertical() && !collapsed',\n '[class.kbq-collapsed]': 'isVertical() && collapsed'\n }\n})\nexport class KbqNavbarRectangleElement {\n /** @docs-private */\n protected readonly isBrowser = inject(Platform).isBrowser;\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emits whenever the orientation or the collapsed state of the element changes. @docs-private */\n readonly state = new Subject<void>();\n\n private readonly _orientation = signal<KbqNavbarOrientation>('vertical');\n\n /**\n * Orientation of the navbar this element belongs to. Written by the ambient `KbqNavbar` /\n * `KbqVerticalNavbar`; the element itself only reads it.\n */\n get orientation(): KbqNavbarOrientation {\n return this._orientation();\n }\n\n set orientation(value: KbqNavbarOrientation) {\n if (this._orientation() === value) return;\n\n this._orientation.set(value);\n\n this.state.next();\n }\n\n /** Whether the ambient navbar is horizontal. @docs-private */\n readonly isHorizontal: Signal<boolean> = computed(() => this._orientation() === 'horizontal');\n\n /** Whether the ambient navbar is vertical. @docs-private */\n readonly isVertical: Signal<boolean> = computed(() => this._orientation() === 'vertical');\n\n // Deliberately left `undefined`: it is not equal to either boolean, so the guard below always lets the\n // first assignment through. Initializing it to `false` would swallow the initial `collapsed = false` of a\n // navbar that starts expanded, and with it the `updateDropdown()` that rides on that emission.\n private readonly _collapsed = signal<boolean | undefined>(undefined);\n\n /** Whether the element is rendered in its collapsed (icon-only) form. @docs-private */\n get collapsed(): boolean {\n return !!this._collapsed();\n }\n\n set collapsed(value: boolean) {\n if (this._collapsed() === value) return;\n\n this._collapsed.set(value);\n\n this.state.next();\n }\n\n /** Signal mirror of `collapsed`, for `computed()` consumers. @docs-private */\n readonly collapsedState: Signal<boolean> = computed(() => !!this._collapsed());\n\n /** @docs-private */\n readonly button = contentChild(KbqButtonCssStyler);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.state.complete());\n }\n\n /** Outer width of the element: its border box plus horizontal margins. */\n getOuterElementWidth(): number {\n return this.isBrowser ? getOuterWidth(this.nativeElement, this.window) : 0;\n }\n}\n\n@Component({\n selector: 'kbq-navbar-item, [kbq-navbar-item]',\n imports: [\n KbqIcon\n ],\n templateUrl: './navbar-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-item',\n [`[class.${COLLAPSED_ITEM_CLASS}]`]: 'isCollapsed()',\n '[class.kbq-navbar-item_with-title]': '!!title()',\n\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedAriaLabel',\n\n '(keydown)': 'onKeyDown($event)'\n },\n // Composition, not inheritance: the item is not a tooltip trigger, it merely owns one. Only the tooltip\n // inputs that make sense on a navbar item are re-exposed; `KbqNavbarToggle` uses the same pattern.\n // `kbqTooltip` is the tooltip's selector, so under its own name it would match the tooltip a second time\n // wherever that is imported (NG0309).\n hostDirectives: [\n {\n directive: KbqTooltipTrigger,\n inputs: [\n 'kbqTooltip: tooltipText',\n 'kbqTooltipClass',\n 'kbqTooltipColor',\n 'kbqTooltipContext',\n 'kbqTooltipOffset',\n 'kbqTrigger',\n 'kbqPlacement',\n 'kbqPlacementPriority',\n 'kbqEnterDelay',\n 'kbqLeaveDelay',\n 'kbqVisible'\n ],\n outputs: [\n 'kbqVisibleChange',\n 'kbqPlacementChange'\n ]\n }\n ],\n exportAs: 'kbqNavbarItem'\n})\nexport class KbqNavbarItem implements AfterContentInit {\n /** @docs-private */\n readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n /** @docs-private */\n readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true })!;\n private readonly bento = inject(KbqNavbarBento, { optional: true });\n private readonly contentObserver = inject(ContentObserver);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n // Outer widths recorded by `measureWidths()`, 0 while unknown.\n private expandedWidth = 0;\n private collapsedWidth = 0;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n private readonly icons = contentChildren(KbqIcon, { descendants: true });\n\n /** Icon shown before the title; it stays visible when the item collapses. @docs-private */\n readonly icon: Signal<KbqIcon | undefined> = computed(() =>\n this.icons().find((icon) => !icon.getHostElement().closest('[kbqNavbarItemSuffix]'))\n );\n\n /** Text shown in the tooltip of a collapsed item. Defaults to the text of the projected `kbq-navbar-title`. */\n readonly collapsedText = input<string>('');\n\n /** Whether the item may be collapsed when the horizontal navbar runs out of room. */\n readonly collapsable = input(true, { transform: booleanAttribute });\n\n /**\n * Explicitly enables or disables the item's tooltip.\n *\n * Left unset, the tooltip is enabled exactly when the title cannot be read from the item itself — the item\n * is collapsed, its title is clipped, or it has no title at all.\n */\n readonly tooltipDisabled = input<boolean | undefined, unknown>(undefined, {\n alias: 'kbqTooltipDisabled',\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n private readonly ownCollapsed = signal<boolean | undefined>(undefined);\n\n /** Collapses the item regardless of what the ambient navbar decided. */\n set collapsed(value: boolean) {\n this.ownCollapsed.set(value);\n }\n\n /** Whether the item is rendered in its collapsed (icon-only) form. */\n // todo in future need rename to 'collapsed'\n readonly isCollapsed: Signal<boolean> = computed(\n () => this.ownCollapsed() ?? this.rectangleElement.collapsedState()\n );\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.title()?.isOverflown ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** Text used for the tooltip and for the accessible name of a collapsed item. */\n get titleText(): string | null {\n return this.collapsedText() || this.title()?.text || null;\n }\n\n /** @docs-private */\n get hasDropDownTrigger(): boolean {\n return !!this.dropdownTrigger;\n }\n\n /** @docs-private */\n protected readonly showVerticalDropDownAngle: Signal<boolean> = computed(\n () => !this.bento && this.hasDropDownTrigger && this.rectangleElement.isVertical() && !this.isCollapsed()\n );\n\n /** @docs-private */\n protected readonly showHorizontalDropDownAngle: Signal<boolean> = computed(\n () => this.hasDropDownTrigger && this.rectangleElement.isHorizontal() && !this.isCollapsed()\n );\n\n /**\n * Whether the title of a vertical bento item slides in without motion.\n *\n * @docs-private\n */\n protected readonly animationsDisabled = kbqAnimationsDisabled();\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n return !!this.title()?.isOverflown;\n }\n\n /**\n * Accessible name of the item. Needed for an icon-only item, which has no visible label of its own; an\n * item that renders a title is named by it.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * A collapsed item shows nothing but its icon, and a tooltip is a transient overlay — never an accessible\n * name. The name is therefore published on the element itself, unless the consumer named it already.\n */\n protected get resolvedAriaLabel(): string | null {\n return this.ariaLabel() ?? (this.isCollapsed() ? this.titleText : null);\n }\n\n /**\n * Items authored as `<kbq-navbar-item>` are custom elements with no implicit role, so they are announced as\n * plain content. Anything already actionable — a native element, or a projected button/form field that owns\n * the interaction — keeps its own semantics.\n *\n * No `aria-haspopup` for dropdown-trigger items on purpose: `KbqDropdownTrigger` deliberately omits it\n * because the panel carries no menu semantics; it does publish `aria-expanded` itself.\n */\n protected get role(): string | null {\n if (NATIVELY_ACTIONABLE_TAGS.has(this.nativeElement.tagName) || this.navbarFocusableItem.nestedElement) {\n return null;\n }\n\n return 'button';\n }\n\n /** Whether Enter/Space has to be turned into a click by hand. */\n private get needsSyntheticActivation(): boolean {\n return this.role === 'button' && !this.hasDropDownTrigger;\n }\n\n constructor() {\n if (this.hasDropDownTrigger) {\n this.dropdownTrigger.openByArrowDown.set(false);\n }\n\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateDropdown();\n\n this.updateTooltip();\n });\n\n this.navbarFocusableItem.setTooltip(this.tooltip);\n\n this.tooltip.arrow = false;\n this.tooltip.offset = 0;\n\n this.tooltip.setOverlayPanelClass('kbq-tooltip-panel_horizontal-navbar');\n\n // The tooltip of a collapsed item stands in for its missing title, so it must not also open on focus:\n // `KbqNavbarFocusableItem.focus()` shows it explicitly, and only for keyboard focus.\n this.tooltip.trigger = `${PopUpTriggers.Hover}`;\n\n effect(() => {\n // Re-read the reactive inputs the tooltip content depends on.\n this.collapsedText();\n this.tooltipDisabled();\n this.isCollapsed();\n\n this.updateTooltip();\n\n // Whether the title is clipped can only be measured once this change is rendered.\n afterNextRender(() => this.updateTooltip(), { injector: this.injector });\n });\n\n // Content changes, such as a new title text, can clip the title too.\n afterNextRender(() =>\n this.contentObserver\n .observe(this.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateTooltip())\n );\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n this.updateTooltip();\n }\n\n /** @docs-private */\n updateTooltip(): void {\n const titleText = this.titleText;\n\n // With no title or `collapsedText` to stand in, a collapsed item keeps the content bound as `tooltipText`.\n if (this.isCollapsed() && titleText) {\n this.tooltip.content = titleText;\n } else if (this.hasCroppedText) {\n this.tooltip.content = this.croppedText;\n }\n\n // A fully visible title needs no tooltip; for a collapsed, clipped or missing one it is the only label.\n this.tooltip.disabled =\n this.tooltipDisabled() ?? (!!this.title() && !this.isCollapsed() && !this.hasCroppedText);\n\n if (this.rectangleElement.isVertical()) {\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n this.tooltip.tooltipPlacementPriority = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Records the outer width of the item in the presentation it is shown in, and measures the other one only while\n * it is still unknown.\n *\n * The other presentation is read by toggling the collapse class around the measurement. Restoring it within\n * the same task is safe: the browser does not paint mid-task, and the host binding only writes to the DOM when\n * its value changes. Both rely on the item having no CSS transition. A width seen in the real presentation is\n * preferred because a collapsed item does not render its dropdown chevron, so toggling it back undercounts.\n *\n * @docs-private\n */\n measureWidths(): void {\n // A hidden item has no box, and its margins alone would be recorded as a width.\n if (!this.nativeElement.getClientRects().length) return;\n\n const classList = this.nativeElement.classList;\n const collapsed = classList.contains(COLLAPSED_ITEM_CLASS);\n\n if (collapsed) {\n this.collapsedWidth = this.rectangleElement.getOuterElementWidth();\n } else {\n this.expandedWidth = this.rectangleElement.getOuterElementWidth();\n }\n\n if (collapsed ? this.expandedWidth : this.collapsedWidth) return;\n\n classList.toggle(COLLAPSED_ITEM_CLASS);\n\n const otherWidth = this.rectangleElement.getOuterElementWidth();\n\n classList.toggle(COLLAPSED_ITEM_CLASS);\n\n if (collapsed) {\n this.expandedWidth = otherWidth;\n } else {\n this.collapsedWidth = otherWidth;\n }\n }\n\n /**\n * Width the item gives back by collapsing: its expanded outer width less its collapsed one, as last recorded by\n * `measureWidths()`. It covers everything the collapse removes or changes — the title, a suffix, the dropdown\n * chevron and the padding and margins that differ between the two presentations.\n *\n * @docs-private\n */\n getCollapsibleWidth(): number {\n return Math.max(this.expandedWidth - this.collapsedWidth, 0);\n }\n\n /** @docs-private */\n protected onKeyDown($event: KeyboardEvent) {\n if (this.needsSyntheticActivation && [ENTER, SPACE].includes($event.keyCode)) {\n this.nativeElement.click();\n\n $event.preventDefault();\n\n return;\n }\n\n if (!this.hasDropDownTrigger) {\n return;\n }\n\n if (\n (this.rectangleElement.isHorizontal() && $event.keyCode === DOWN_ARROW) ||\n (this.rectangleElement.isVertical() && $event.keyCode === RIGHT_ARROW)\n ) {\n this.dropdownTrigger.openedBy = 'keyboard';\n this.dropdownTrigger.open();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n private updateDropdown(): void {\n const dropdown = this.dropdownTrigger?.dropdown();\n\n if (!dropdown) return;\n\n if (this.rectangleElement.isVertical()) {\n dropdown.overlapTriggerX.set(false);\n dropdown.overlapTriggerY.set(true);\n // needs to shift dropdown to the left by 8 pixels\n this.dropdownTrigger.offsetX.set(-8);\n }\n }\n}\n","<ng-content select=\"[kbq-icon]:not([kbqNavbarItemSuffix])\" />\n\n@if (title()) {\n <div class=\"kbq-navbar-item__container\">\n <div class=\"kbq-navbar-item__title\" [class.kbq-animations-disabled]=\"animationsDisabled\">\n <ng-content select=\"kbq-navbar-title, [kbq-navbar-title]\" />\n </div>\n <ng-content select=\"[kbqNavbarItemSuffix]\" />\n @if (showVerticalDropDownAngle()) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-right_16\" color=\"contrast\"></i>\n }\n @if (showHorizontalDropDownAngle()) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-down-s_16\" color=\"contrast\"></i>\n }\n </div>\n}\n\n<ng-content />\n","import { ContentObserver } from '@angular/cdk/observers';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n DestroyRef,\n effect,\n inject,\n Injector,\n input,\n Renderer2,\n signal,\n Signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectNativeElement, PopUpPlacements, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { distinctUntilChanged, EMPTY, from, map, merge, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { KbqNavbarFocusableItem, KbqNavbarRectangleElement, KbqNavbarTitle } from './navbar-item.component';\n\n/** Switches the brand title to the compact two-line presentation. */\nconst LONG_TITLE_CLASS = 'kbq-navbar-brand_long-title';\n\n@Component({\n selector: 'kbq-navbar-brand, [kbq-navbar-brand]',\n template: `\n <ng-content />\n `,\n styleUrls: [\n './navbar-brand.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-navbar-brand',\n [`[class.${LONG_TITLE_CLASS}]`]: 'longTitleEnabled()',\n '[class.kbq-navbar-brand_link]': 'isLink',\n '[attr.aria-label]': 'resolvedAriaLabel'\n },\n // Composition, not inheritance: the brand owns a tooltip, it is not one. Only the tooltip inputs that make\n // sense on a brand are re-exposed. `kbqTooltip` is the tooltip's selector, so under its own name it would\n // match the tooltip a second time wherever that is imported (NG0309).\n hostDirectives: [\n {\n directive: KbqTooltipTrigger,\n inputs: [\n 'kbqTooltip: tooltipText',\n 'kbqTooltipClass',\n 'kbqTooltipColor',\n 'kbqTooltipOffset',\n 'kbqTrigger',\n 'kbqPlacement',\n 'kbqEnterDelay',\n 'kbqLeaveDelay',\n 'kbqVisible'\n ],\n outputs: [\n 'kbqVisibleChange',\n 'kbqPlacementChange'\n ]\n }\n ],\n exportAs: 'kbqNavbarBrand'\n})\nexport class KbqNavbarBrand implements AfterContentInit {\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n protected readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n /** @docs-private */\n readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n private readonly isBrowser = inject(Platform).isBrowser;\n private readonly resizeObserver = inject(SharedResizeObserver);\n private readonly contentObserver = inject(ContentObserver);\n private readonly document = inject(DOCUMENT);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly debounceInterval = 100;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /**\n * Whether the title has been measured as not fitting into a single line, which switches it to the compact\n * two-line presentation.\n *\n * @docs-private\n */\n protected readonly longTitleEnabled = signal(false);\n\n /** text that will be displayed in the tooltip. By default, the text is taken from kbq-navbar-title. */\n readonly collapsedText = input<string>('');\n\n /**\n * Explicitly enables or disables the brand's tooltip.\n *\n * Left unset, the tooltip is enabled exactly when the title cannot be read from the brand itself — the\n * navbar is collapsed, the title is clipped, or there is no title at all.\n */\n readonly tooltipDisabled = input<boolean | undefined, unknown>(undefined, {\n alias: 'kbqTooltipDisabled',\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n /** Whether the brand is rendered as a native link. */\n get isLink(): boolean {\n return this.nativeElement.tagName === 'A';\n }\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.hasCroppedText ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n const title = this.title();\n\n return !!title && (title.isOverflown || title.isClamped);\n }\n\n /** @docs-private */\n get titleText(): string | null {\n return this.collapsedText() || this.title()?.text || null;\n }\n\n /** Whether the brand is rendered in its collapsed (logo-only) form. @docs-private */\n readonly collapsed: Signal<boolean> = this.rectangleElement.collapsedState;\n\n /** Accessible name of the brand. Needed when the brand renders nothing but a logo. */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * A collapsed brand shows nothing but its logo, and a tooltip is a transient overlay — never an accessible\n * name. The name is therefore published on the element itself, unless the consumer named it already.\n */\n protected get resolvedAriaLabel(): string | null {\n return this.ariaLabel() ?? (this.collapsed() ? this.titleText : null);\n }\n\n constructor() {\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => this.updateTooltip());\n\n this.tooltip.arrow = false;\n this.tooltip.offset = 0;\n\n // A brand tooltip stands in for a title that cannot be read from the element itself, so it opens on\n // hover only; keyboard focus surfaces it through `KbqNavbarFocusableItem.focus()`.\n this.tooltip.trigger = `${PopUpTriggers.Hover}`;\n\n this.navbarFocusableItem.setTooltip(this.tooltip);\n\n effect(() => {\n // Re-read the reactive inputs the tooltip content depends on.\n this.collapsedText();\n this.tooltipDisabled();\n this.collapsed();\n\n this.updateTooltip();\n });\n\n afterNextRender(() => this.observeLongTitle());\n\n // A disabled navbar item takes `pointer-events: none`, which on a brand would also stop the tooltip a\n // collapsed brand depends on. Capturing on the host runs ahead of every listener of the link, `RouterLink`\n // included.\n const unlisten = this.renderer.listen(\n this.nativeElement,\n 'click',\n (event: MouseEvent) => this.preventDisabledActivation(event),\n { capture: true }\n );\n\n this.destroyRef.onDestroy(unlisten);\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n // A brand that is neither a link nor a wrapper around something interactive is decorative, and only\n // then is it kept out of the roving focus order. Deciding this here and not in the constructor is what\n // makes the projected content visible at all; deciding it from `isLink` alone used to disable every\n // `<div kbq-navbar-brand>`, however interactive its content was.\n this.navbarFocusableItem.decorative.set(!this.isLink && !this.navbarFocusableItem.nestedElement);\n\n this.updateTooltip();\n }\n\n private preventDisabledActivation(event: MouseEvent): void {\n if (!this.navbarFocusableItem.explicitlyDisabled) return;\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n private updateTooltip(): void {\n const titleText = this.titleText;\n\n // With no title or `collapsedText` to stand in, a collapsed brand keeps the content bound as `tooltipText`.\n if (this.collapsed() && titleText) {\n this.tooltip.content = titleText;\n } else if (this.hasCroppedText) {\n this.tooltip.content = this.croppedText;\n }\n\n // A fully visible title needs no tooltip; for a collapsed, clipped or missing one it is the only label.\n this.tooltip.disabled = this.tooltipDisabled() ?? (!!this.title() && !this.collapsed() && !this.hasCroppedText);\n\n if (this.rectangleElement.isVertical()) {\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private observeLongTitle(): void {\n if (!this.isBrowser) return;\n\n this.updateAutoLongTitle();\n\n const host = this.nativeElement;\n\n const resize$ = this.resizeObserver.observe(host).pipe(\n map(() => host.clientWidth),\n distinctUntilChanged()\n );\n\n const content$ = this.contentObserver.observe(host);\n\n const fontSet: FontFaceSet | undefined = this.document.fonts;\n const fonts$: Observable<unknown> = fontSet ? from(fontSet.ready) : EMPTY;\n\n // Continuous, noisy sources - coalesce them.\n merge(resize$, content$, fonts$)\n .pipe(debounceTime(this.debounceInterval), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateAutoLongTitle());\n\n // Expanding is a discrete event, and a collapsed title is `display: none` - so the first expand is the\n // first chance to measure at all. Debouncing it paints the default presentation for the whole window\n // first. Measuring synchronously here would be just as wrong: `.kbq-collapsed` and the container's\n // width class are written by the change detection pass that *follows* this emission, so the read would\n // still see a `display: none` title inside a collapsed container. Render hooks run after that write and\n // before the browser paints, so the compact presentation lands on the very first frame.\n //\n // `mixedReadWrite` and not `read`: `measureNeedsLongTitle()` takes the class off around its read and\n // puts it back, and `read` is the phase documented to never write. Splitting the two across `write` and\n // `read` is not an option either - they are one indivisible measurement.\n this.rectangleElement.state\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() =>\n afterNextRender({ mixedReadWrite: () => this.updateAutoLongTitle() }, { injector: this.injector })\n );\n }\n\n private updateAutoLongTitle(): void {\n this.longTitleEnabled.set(this.measureNeedsLongTitle());\n\n // The clamp state feeds into `hasCroppedText`, which the tooltip's content depends on - refresh it\n // so a title that becomes clamped after the initial render doesn't show stale/empty tooltip content.\n this.updateTooltip();\n }\n\n /**\n * Measures whether the title fits into a single line in the *default* presentation.\n *\n * Removing and restoring the class within a single task is safe: the browser does not paint mid-task, and\n * Angular's host binding only writes to the DOM when its value changes, which it does not here. Both rely\n * on there being no CSS transition on the title - add one and this starts to flicker.\n */\n private measureNeedsLongTitle(): boolean {\n const title = this.title();\n\n // A collapsed title is `display: none`, so it measures as 0 - keep the last known value instead.\n if (!title || this.rectangleElement.collapsed) {\n return this.longTitleEnabled();\n }\n\n const host = this.nativeElement;\n const applied = host.classList.contains(LONG_TITLE_CLASS);\n\n if (applied) host.classList.remove(LONG_TITLE_CLASS);\n\n const overflown = title.isOverflown;\n\n if (applied) host.classList.add(LONG_TITLE_CLASS);\n\n return overflown;\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentChecked,\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n NgZone,\n OnDestroy,\n QueryList,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FocusKeyManager,\n isHorizontalMovement,\n isVerticalMovement,\n KBQ_WINDOW,\n kbqLeaveTabOrderOnTabOut,\n KbqOverlayLayerExclude,\n kbqQueryListFrom,\n LEFT_ARROW,\n RIGHT_ARROW,\n TAB\n} from '@koobiq/components/core';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport {\n KbqNavbarFocusableItem,\n KbqNavbarFocusableItemEvent,\n KbqNavbarItem,\n KbqNavbarRectangleElement\n} from './navbar-item.component';\nimport { getOuterWidth } from './outer-width';\n\n@Directive()\nexport class KbqFocusableComponent implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly focusableItemsQuery = contentChildren<KbqNavbarFocusableItem>(\n forwardRef(() => KbqNavbarFocusableItem),\n { descendants: true }\n );\n private readonly focusableItemsList = kbqQueryListFrom(this.focusableItemsQuery);\n\n /** @docs-private */\n get focusableItems(): QueryList<KbqNavbarFocusableItem> {\n return this.focusableItemsList();\n }\n\n /** @docs-private */\n keyManager: FocusKeyManager<KbqNavbarFocusableItem>;\n\n /**\n * Tab index of the navbar host. The navbar owns the single tab stop of the whole widget and moves focus\n * between its items with the arrow keys. A navbar without a focusable item stays out of the tab order.\n */\n readonly tabIndex = model<number>(0);\n\n /**\n * Tab index the host renders: {@link tabIndex}, or `-1` while there is no item to hand the focus to. Derived\n * rather than written to the model, which a consumer may bind.\n *\n * @docs-private\n */\n protected readonly renderedTabIndex = computed(() =>\n this.focusableItemsQuery().length === 0 ? -1 : this.tabIndex()\n );\n\n /**\n * Accessible name of the navigation landmark. Set it whenever a page renders more than one navbar, so\n * assistive technology can tell them apart.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n private lastFocusOrigin: FocusOrigin = null;\n\n private cachedOptionFocusChanges: Observable<KbqNavbarFocusableItemEvent> | null = null;\n private cachedOptionBlurChanges: Observable<KbqNavbarFocusableItemEvent> | null = null;\n\n /** Focus events of every focusable item, merged once per change of the item set. @docs-private */\n get optionFocusChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return (this.cachedOptionFocusChanges ??= merge(...this.focusableItems.map((item) => item.onFocus)));\n }\n\n /** Blur events of every focusable item, merged once per change of the item set. @docs-private */\n get optionBlurChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return (this.cachedOptionBlurChanges ??= merge(...this.focusableItems.map((option) => option.onBlur)));\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n this.keyManager = new FocusKeyManager<KbqNavbarFocusableItem>(this.focusableItems).withTypeAhead();\n\n kbqLeaveTabOrderOnTabOut(\n this.keyManager.tabOut,\n this.elementRef.nativeElement,\n () => this.renderedTabIndex(),\n this.destroyRef\n );\n\n this.focusableItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.resetOptions());\n }\n\n /** @docs-private */\n ngAfterContentChecked(): void {\n // Syncs the list here so `changes` emits after the projected items are bound and before the host bindings.\n this.focusableItemsList();\n }\n\n /**\n * Monitored with `checkChildren`, because the navbar is one composite widget: the host owns the tab stop\n * but hands focus straight to an item, and without it that hand-off reads as the navbar being blurred.\n *\n * @docs-private\n */\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.elementRef, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((focusOrigin) => {\n // A child losing focus to another child reports `null` in between; keep the origin the arrow\n // keys travel on, and let a real blur of the whole navbar be handled by `blur()`.\n if (focusOrigin === null) return;\n\n this.lastFocusOrigin = focusOrigin;\n this.keyManager.setFocusOrigin(focusOrigin);\n });\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.dropSubscriptions();\n\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n /** Host element of the navbar. @docs-private */\n getNativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n /** @docs-private */\n focus(): void {\n if (this.focusableItems.length === 0) {\n return;\n }\n\n // Pointer focus on the navbar host (e.g. clicking empty area) should not\n // steal keyboard focus into the first item, which would surface its tooltip.\n if (this.lastFocusOrigin === 'mouse' || this.lastFocusOrigin === 'touch') {\n return;\n }\n\n this.keyManager.setFirstItemActive();\n }\n\n /** @docs-private */\n blur() {\n if (!this.hasFocusedItem()) {\n this.keyManager.setActiveItem(-1);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** @docs-private */\n protected resetOptions() {\n this.dropSubscriptions();\n this.listenToOptionsFocus();\n }\n\n /** @docs-private */\n protected dropSubscriptions() {\n this.optionFocusSubscription?.unsubscribe();\n this.optionFocusSubscription = null;\n\n this.optionBlurSubscription?.unsubscribe();\n this.optionBlurSubscription = null;\n\n this.cachedOptionFocusChanges = null;\n this.cachedOptionBlurChanges = null;\n }\n\n private optionFocusSubscription: Subscription | null = null;\n private optionBlurSubscription: Subscription | null = null;\n\n private listenToOptionsFocus(): void {\n this.optionFocusSubscription = this.optionFocusChanges.subscribe((event) => {\n const index: number = this.focusableItems.toArray().indexOf(event.item);\n\n if (this.isValidIndex(index)) {\n this.keyManager.updateActiveItem(index);\n }\n });\n\n this.optionBlurSubscription = this.optionBlurChanges.subscribe(() => this.blur());\n }\n\n private isValidIndex(index: number): boolean {\n return index >= 0 && index < this.focusableItems.length;\n }\n\n private hasFocusedItem() {\n return this.focusableItems.some((item) => item.hasFocus);\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-container',\n host: {\n class: 'kbq-navbar-container'\n }\n})\nexport class KbqNavbarContainer {}\n\n@Component({\n selector: 'kbq-navbar',\n template: `\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n `,\n styleUrls: [\n './navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.tabindex]': 'renderedTabIndex()',\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [KbqOverlayLayerExclude]\n})\nexport class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit {\n private readonly platform = inject(Platform);\n private readonly ngZone = inject(NgZone);\n private readonly window = inject(KBQ_WINDOW);\n\n /** @docs-private */\n readonly rectangleElements = contentChildren<KbqNavbarRectangleElement>(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly navbarItems = contentChildren<KbqNavbarItem>(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n /** Raw `resize` events of the window, fed from outside the Angular zone. @docs-private */\n readonly resizeStream = new Subject<Event>();\n\n private readonly resizeDebounceInterval: number = 100;\n\n private get width(): number {\n return this.elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Room the content needs: the outer widths of the containers' children plus the containers' own margins, which\n * hold the gap between them. The containers' boxes are not measured whole, so a container styled to grow still\n * reports what it needs rather than what it was given.\n */\n private get contentWidth(): number {\n return Array.from(this.elementRef.nativeElement.children).reduce((total, container) => {\n const { marginLeft, marginRight } = this.window.getComputedStyle(container);\n\n return Array.from(container.children).reduce(\n (acc, child) => acc + getOuterWidth(child, this.window),\n total + (parseFloat(marginLeft) || 0) + (parseFloat(marginRight) || 0)\n );\n }, 0);\n }\n\n private get collapsableItems(): KbqNavbarItem[] {\n return this.navbarItems()\n .filter((item) => item.icon() && item.title() && item.collapsable())\n .reverse();\n }\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => this.resizeStream.complete());\n\n // Raw resize events must not enter the zone: a single drag fires hundreds of them, and only the\n // debounced recompute at the end of the burst is worth a change detection pass.\n if (this.platform.isBrowser) {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.window, 'resize')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.resizeStream.next(event));\n });\n }\n\n this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval), takeUntilDestroyed())\n .subscribe(() => this.ngZone.run(this.updateExpandedStateForItems));\n\n effect(() => this.rectangleElements().forEach((item) => (item.orientation = 'horizontal')));\n\n // Note: this wait is required for loading and rendering fonts for icons;\n // unfortunately we cannot control font rendering. Bound to the component's lifetime, unlike a bare\n // `setTimeout`, so it can never run against a destroyed view.\n afterNextRender(() => this.updateExpandedStateForItems());\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(false).withHorizontalOrientation('ltr');\n }\n\n /**\n * Recomputes which collapsable items fit into the current navbar width.\n *\n * Every measurement is taken up front, and only then is anything written: collapsing an item invalidates\n * layout, so a measurement taken afterwards forces a synchronous reflow for each of the remaining items. The\n * width an item frees by collapsing comes from its own record of both presentations, see\n * `KbqNavbarItem.measureWidths()`.\n *\n * @docs-private\n */\n updateExpandedStateForItems = () => {\n // Untracked: called from a consumer's `effect()`, the items and their collapsed state read here would make the\n // effect run again on every collapse it makes.\n untracked(() => this.fitItems());\n };\n\n /** Body of `updateExpandedStateForItems()`. */\n private fitItems(): void {\n const availableWidth = this.width;\n\n // A navbar that is not rendered, e.g. hidden in an inactive tab, has nothing to measure yet.\n if (!availableWidth) return;\n\n const items = this.collapsableItems;\n\n // Before the content is read, because an item seen in one presentation measures the other by toggling a class.\n items.forEach((item) => item.measureWidths());\n\n const collapseDelta = this.contentWidth - availableWidth;\n\n if (collapseDelta > 0) {\n this.collapseItems(items, collapseDelta);\n } else {\n this.expandItems(items, collapseDelta);\n }\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n // The origin of the last focus event may be a click, and an item takes no DOM focus for a pointer origin.\n this.keyManager.setFocusOrigin('keyboard');\n\n if (!this.eventFromInput(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (this.eventFromInput(event) && this.cursorOnLastPosition(event) && keyCode === RIGHT_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (this.eventFromInput(event) && this.cursorOnFirstPosition(event) && keyCode === LEFT_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else if (!this.eventFromInput(event)) {\n this.keyManager.onKeydown(event);\n }\n }\n\n private eventFromInput(event: KeyboardEvent): boolean {\n return !!(event.target as HTMLElement).attributes.getNamedItem('kbqinput');\n }\n\n private cursorOnFirstPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionStart === 0;\n }\n\n private cursorOnLastPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionEnd === input.value.length;\n }\n\n private collapseItems(items: KbqNavbarItem[], collapseDelta: number) {\n let delta = collapseDelta;\n\n // An item that frees nothing has not been measured, because it is hidden, and collapsing it gains nothing.\n for (const item of items.filter((item) => !item.isCollapsed() && item.getCollapsibleWidth() > 0)) {\n item.collapsed = true;\n delta -= item.getCollapsibleWidth();\n\n if (delta <= 0) break;\n }\n }\n\n private expandItems(items: KbqNavbarItem[], collapseDelta: number) {\n let delta = collapseDelta;\n\n for (const item of items.filter((item) => item.isCollapsed())) {\n if (delta + item.getCollapsibleWidth() <= 0) {\n item.collapsed = false;\n delta += item.getCollapsibleWidth();\n }\n }\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n input,\n model,\n Provider,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n DOWN_ARROW,\n isHorizontalMovement,\n isVerticalMovement,\n KbqDeepPartial,\n kbqLocaleConfigurationOverrideProvider,\n KbqLocaleOverridesDirective,\n KbqNavbarLocaleConfiguration,\n KbqOverlayLayerExclude,\n ruRULocaleData,\n TAB,\n UP_ARROW\n} from '@koobiq/components/core';\nimport { KbqNavbarBento, KbqNavbarItem, KbqNavbarRectangleElement } from './navbar-item.component';\nimport { KbqFocusableComponent } from './navbar.component';\n\n// Re-exported so that the name this package's own token is typed with resolves from this package too:\n// `KbqVerticalNavbarConfiguration` used to be declared here, and the migration renames it in place.\nexport type { KbqNavbarLocaleConfiguration };\n\n/** default configuration of navbar */\n/** @docs-private */\nexport const KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION: KbqNavbarLocaleConfiguration = ruRULocaleData.navbar;\n\n/** Injection Token for providing configuration of navbar */\n/** @docs-private */\nexport const KBQ_NAVBAR_LOCALE_CONFIGURATION = new InjectionToken<KbqNavbarLocaleConfiguration>(\n 'KbqNavbarLocaleConfiguration',\n { factory: () => KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider for `KBQ_NAVBAR_LOCALE_CONFIGURATION`. Only the strings you pass are overridden; the\n * rest keep following the active locale.\n */\nexport const kbqNavbarLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqNavbarLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('navbar', configuration);\n\n/** @deprecated Use {@link KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION}. Will be removed in 22.0.0. */\nexport const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION = KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION;\n/** @deprecated Use {@link KBQ_NAVBAR_LOCALE_CONFIGURATION}. Will be removed in 22.0.0. */\nexport const KBQ_VERTICAL_NAVBAR_CONFIGURATION = KBQ_NAVBAR_LOCALE_CONFIGURATION;\n\n@Component({\n selector: 'kbq-vertical-navbar',\n template: `\n <div\n class=\"kbq-vertical-navbar__container\"\n [class.kbq-collapsed]=\"!expanded()\"\n [class.kbq-expanded]=\"expanded()\"\n >\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n <ng-content select=\"[kbq-navbar-toggle], kbq-navbar-toggle\" />\n </div>\n `,\n styleUrls: [\n './vertical-navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-vertical-navbar',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.kbq-vertical-navbar_open-over]': 'openOver()',\n '[attr.tabindex]': 'renderedTabIndex()',\n '[attr.cdkMonitorSubtreeFocus]': 'true',\n\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [\n CdkMonitorFocus,\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] },\n KbqOverlayLayerExclude\n ],\n exportAs: 'KbqVerticalNavbar'\n})\nexport class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit {\n /**\n * Localized strings of the navbar.\n *\n * A signal, so that a locale change reaches the `OnPush` descendants that render these strings — a plain\n * field would leave them showing the previous locale until something else marked them dirty. It also keeps\n * the value observable from outside: `KbqNavbarToggle` reads it in an `effect` to refresh its tooltip,\n * which a `markForCheck()` here could never have reached in that separate `OnPush` view.\n */\n readonly localeConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'navbar',\n KBQ_NAVBAR_LOCALE_CONFIGURATION\n );\n\n /** @docs-private */\n readonly rectangleElements = contentChildren<KbqNavbarRectangleElement>(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly items = contentChildren<KbqNavbarItem>(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly bento = contentChild<KbqNavbarBento>(forwardRef(() => KbqNavbarBento));\n\n /** Whether the expanded navbar overlays the page content instead of taking room from it. */\n readonly openOver = input<boolean>(false);\n\n /** Whether the navbar is expanded. */\n readonly expanded = model<boolean>(false);\n\n private buttonIconsRefresh?: ReturnType<typeof setTimeout>;\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => clearTimeout(this.buttonIconsRefresh));\n\n effect(() => {\n // Re-runs both when the projected elements change and when the navbar is expanded or collapsed.\n const expanded = this.expanded();\n\n this.rectangleElements().forEach((item) => {\n item.orientation = 'vertical';\n item.collapsed = !expanded;\n });\n\n this.refreshButtonIcons();\n });\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(true);\n }\n\n /** Expands a collapsed navbar and collapses an expanded one. */\n toggle(): void {\n // Untracked: called from a consumer's `effect()`, `expanded` read here would make the effect run again on every\n // expand and collapse.\n this.expanded.set(!untracked(this.expanded));\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n // The origin of the last focus event may be a click, and an item takes no DOM focus for a pointer origin.\n this.keyManager.setFocusOrigin('keyboard');\n\n if (\n !(event.target as HTMLElement).attributes.getNamedItem('kbqinput') &&\n (isVerticalMovement(event) || isHorizontalMovement(event))\n ) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (keyCode === DOWN_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (keyCode === UP_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else {\n this.keyManager.onKeydown(event);\n }\n }\n\n /**\n * Buttons projected into the items re-pick their icon-only modifier from the rendered width, so the pass\n * has to wait for the collapsed/expanded classes to reach the DOM. One deferred pass over every item, not\n * one timer per item.\n */\n private refreshButtonIcons(): void {\n const elements = this.rectangleElements();\n\n // A pending pass is replaced: every element of it that is still projected is among these.\n clearTimeout(this.buttonIconsRefresh);\n\n if (!elements.length) return;\n\n this.buttonIconsRefresh = setTimeout(() =>\n elements.forEach((item) => item.button()?.updateClassModifierForIcons())\n );\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n Injectable,\n NgZone,\n OnDestroy,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ENTER,\n KBQ_WINDOW,\n kbqInjectNativeElement,\n NUMPAD_DIVIDE,\n PopUpPlacements,\n SLASH,\n SPACE\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n/**\n * Dispatches the global `Ctrl+/` shortcut to exactly one navbar toggle.\n *\n * Every toggle used to bind its own window listener and call `toggle()` unconditionally, so a single keypress\n * collapsed *every* vertical navbar on the page. One shared listener instead picks the toggle whose navbar\n * currently holds focus, and falls back to the first registered one so the shortcut still works from anywhere.\n *\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqNavbarToggleRegistry implements OnDestroy {\n private readonly window = inject(KBQ_WINDOW);\n private readonly document = inject(DOCUMENT);\n private readonly ngZone = inject(NgZone);\n\n private readonly toggles = new Set<KbqNavbarToggle>();\n\n /** Starts listening for the shortcut on behalf of the given toggle. */\n add(toggle: KbqNavbarToggle): void {\n if (this.toggles.size === 0) {\n this.ngZone.runOutsideAngular(() => this.window.addEventListener('keydown', this.handleKeydown));\n }\n\n this.toggles.add(toggle);\n }\n\n /** Stops dispatching the shortcut to the given toggle. */\n remove(toggle: KbqNavbarToggle): void {\n this.toggles.delete(toggle);\n\n if (this.toggles.size === 0) {\n this.window.removeEventListener('keydown', this.handleKeydown);\n }\n }\n\n ngOnDestroy(): void {\n this.window.removeEventListener('keydown', this.handleKeydown);\n\n this.toggles.clear();\n }\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (!event.ctrlKey || ![NUMPAD_DIVIDE, SLASH].includes(event.keyCode)) return;\n\n const target = this.resolveTarget();\n\n if (!target) return;\n\n this.ngZone.run(() => target.toggle());\n };\n\n private resolveTarget(): KbqNavbarToggle | undefined {\n const toggles = [...this.toggles];\n const activeElement = this.document.activeElement;\n const focused = activeElement && toggles.find((toggle) => toggle.contains(activeElement));\n\n return focused || toggles[0];\n }\n}\n\n@Component({\n selector: 'kbq-navbar-toggle, [kbq-navbar-toggle]',\n imports: [\n KbqIconModule\n ],\n template: `\n <span class=\"kbq-navbar-toggle__circle\">\n <ng-content select=\"[kbq-icon]\">\n <i\n kbq-icon\n [class.kbq-chevron-double-left-s_16]=\"navbar.expanded()\"\n [class.kbq-chevron-double-right-s_16]=\"!navbar.expanded()\"\n ></i>\n </ng-content>\n </span>\n `,\n styleUrls: ['./navbar-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-toggle kbq-vertical',\n '[class.kbq-collapsed]': '!navbar.expanded()',\n '[class.kbq-expanded]': 'navbar.expanded()',\n\n // The toggle is icon-only and its tooltip is a transient overlay, never an accessible name. Role, name\n // and state are published on the host so assistive technology announces an expand/collapse control\n // instead of an unlabelled element.\n role: 'button',\n '[attr.aria-expanded]': 'navbar.expanded()',\n '[attr.aria-label]': 'label',\n 'aria-keyshortcuts': 'Control+/',\n\n '(keydown)': 'keydownHandler($event)',\n '(click)': 'toggle()'\n },\n hostDirectives: [CdkMonitorFocus, KbqTooltipTrigger]\n})\nexport class KbqNavbarToggle implements OnDestroy {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly registry = inject(KbqNavbarToggleRegistry);\n private readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n /** @docs-private */\n protected readonly navbar = inject(KbqVerticalNavbar);\n\n /** Accessible name of the toggle; it names the action the toggle performs. @docs-private */\n protected get label(): string {\n return this.navbar.expanded()\n ? this.navbar.localeConfiguration().toggle.collapse\n : this.navbar.localeConfiguration().toggle.expand;\n }\n\n constructor() {\n if (this.isBrowser) {\n this.registry.add(this);\n }\n\n this.tooltip.arrow = false;\n this.updateTooltipContent();\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n\n this.tooltip.visibleChange.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipContent);\n\n // `content` is a plain property, so a tooltip that is already open keeps the string it was given.\n // Reading the navbar's signal-backed configuration here re-applies it on a locale change instead\n // of leaving the previous locale on screen until the next show.\n effect(() => this.updateTooltipContent());\n }\n\n /** @docs-private */\n ngOnDestroy(): void {\n this.registry.remove(this);\n }\n\n /** Whether the given element sits inside the navbar this toggle belongs to. @docs-private */\n contains(element: Element): boolean {\n return this.navbar.getNativeElement().contains(element) || this.nativeElement.contains(element);\n }\n\n /** toggles the state of the navbar */\n toggle() {\n // Untracked: called from a consumer's `effect()`, the state read on the way — `expanded`, the tooltip's — would\n // make the effect run again on every expand and collapse.\n untracked(() => {\n this.navbar.toggle();\n this.tooltip.hide();\n });\n }\n\n /** @docs-private */\n protected keydownHandler($event: KeyboardEvent) {\n if ([SPACE, ENTER].includes($event.keyCode)) {\n this.toggle();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n private updateTooltipContent = () => {\n this.tooltip.content = this.label;\n };\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqNavbarBrand } from './navbar-brand.component';\nimport {\n KbqNavbarBento,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarItem,\n KbqNavbarItemSuffix,\n KbqNavbarLogo,\n KbqNavbarRectangleElement,\n KbqNavbarTitle\n} from './navbar-item.component';\nimport { KbqNavbarToggle } from './navbar-toggle.component';\nimport { KbqNavbar, KbqNavbarContainer } from './navbar.component';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqIconModule,\n KbqToolTipModule,\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento,\n KbqNavbarItemSuffix\n ],\n exports: [\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento,\n KbqNavbarItemSuffix\n ]\n})\nexport class KbqNavbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}