@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-sidepanel.mjs","sources":["../../../packages/components/sidepanel/sidepanel-config.ts","../../../packages/components/sidepanel/sidepanel-animations.ts","../../../packages/components/sidepanel/sidepanel-container.component.ts","../../../packages/components/sidepanel/sidepanel-container.component.html","../../../packages/components/sidepanel/sidepanel-ref.ts","../../../packages/components/sidepanel/sidepanel.service.ts","../../../packages/components/sidepanel/sidepanel-directives.ts","../../../packages/components/sidepanel/sidepanel.module.ts","../../../packages/components/sidepanel/koobiq-components-sidepanel.ts"],"sourcesContent":["import { InjectionToken, Injector } from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a sidepanel. */\nexport const KBQ_SIDEPANEL_DATA = new InjectionToken<any>('KbqSidepanelData');\n\nexport enum KbqSidepanelPosition {\n Right = 'right',\n Left = 'left',\n Top = 'top',\n Bottom = 'bottom'\n}\n\nexport enum KbqSidepanelSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\nexport class KbqSidepanelConfig<D = any> {\n /** ID for the sidepanel. If omitted, a unique one will be generated. */\n id?: string;\n\n /** Whether the focus trap is active. */\n trapFocus?: boolean;\n\n /** capture focus on initialization. This option sets cdkTrapFocusAutoCapture. */\n trapFocusAutoCapture?: boolean;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n position?: KbqSidepanelPosition = KbqSidepanelPosition.Right;\n\n size?: KbqSidepanelSize = KbqSidepanelSize.Medium;\n\n /** Whether the sidepanel has a backdrop. */\n hasBackdrop?: boolean = true;\n\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the sidepanel. */\n disableClose?: boolean = false;\n\n /** Custom class for the overlay pane. */\n overlayPanelClass?: string | string[] = '';\n\n /**\n * Injector used for the instantiation of the component to be attached.\n * Allows to pass a custom injector to provide a dependency injection hierarchy for the sidepanel content.\n */\n injector?: Injector;\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\nimport { KbqSidepanelPosition } from './sidepanel-config';\n\nexport enum KbqSidepanelAnimationState {\n Void = 'void',\n Visible = 'visible',\n Hidden = 'hidden',\n Lower = 'lower',\n BottomPanel = 'bottom-panel',\n BecomingNormal = 'becoming-normal'\n}\n\n// TODO Find a way to use dynamic keys and avoid error \"Expression form not supported.\"\nexport const kbqSidepanelTransformAnimation: Record<\n KbqSidepanelPosition,\n { in: string; out: string; lower: string; bottomPanel: string; becomingNormal: string }\n> = {\n right: {\n in: 'translateX(100%)',\n out: 'translateX(0)',\n lower: 'scale(0.95) translateX(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateX(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0) scale(1)'\n },\n left: {\n in: 'translateX(-100%) scale(1)',\n out: 'translateX(0%) scale(1)',\n lower: 'scale(0.95) translateX(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateX(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0%) scale(1)'\n },\n top: {\n in: 'translateY(-100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateY(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n },\n bottom: {\n in: 'translateY(100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateY(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n }\n};\n\nexport const kbqSidepanelAnimations: { readonly sidepanelState: AnimationTriggerMetadata } = {\n sidepanelState: trigger('state', [\n state(KbqSidepanelAnimationState.Void, style({ opacity: 0 })),\n state(KbqSidepanelAnimationState.Hidden, style({ transform: '{{transformIn}}' }), {\n params: { transformIn: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].in }\n }),\n state(KbqSidepanelAnimationState.Visible, style({ transform: '{{transformOut}}', opacity: 1 }), {\n params: { transformOut: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].out }\n }),\n state(KbqSidepanelAnimationState.Lower, style({ transform: '{{lower}}', opacity: 1 }), {\n params: { lower: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].lower }\n }),\n state(KbqSidepanelAnimationState.BottomPanel, style({ transform: '{{bottomPanel}}', opacity: 0 }), {\n params: { bottomPanel: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].bottomPanel }\n }),\n state(KbqSidepanelAnimationState.BecomingNormal, style({ transform: '{{becomingNormal}}', opacity: 1 }), {\n params: { becomingNormal: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].becomingNormal }\n }),\n transition('* <=> *', animate(`${KbqAnimationDurations.Long} ${KbqAnimationCurves.EaseInOutQuad}`))\n ])\n};\n","import { AnimationEvent } from '@angular/animations';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n inject,\n InjectionToken,\n OnDestroy,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n kbqSidepanelAnimations,\n KbqSidepanelAnimationState,\n kbqSidepanelTransformAnimation\n} from './sidepanel-animations';\nimport { KbqSidepanelConfig, KbqSidepanelPosition } from './sidepanel-config';\n\nexport const KBQ_SIDEPANEL_WITH_INDENT = new InjectionToken<boolean>('kbq-sidepanel-with-indent');\n\n@Component({\n selector: 'kbq-sidepanel-container',\n imports: [\n CdkPortalOutlet,\n CdkTrapFocus\n ],\n templateUrl: './sidepanel-container.component.html',\n styleUrls: ['./sidepanel.scss', './sidepanel-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-sidepanel-container kbq-sidepanel-container_shadowed',\n '[class]': 'size',\n '[class.kbq-sidepanel_nested]': 'withIndent',\n '[attr.id]': 'id',\n '[attr.tabindex]': '-1',\n '[@state]': `{\n value: animationState,\n params: animationTransform\n }`,\n '(@state.start)': 'onAnimation($event)',\n '(@state.done)': 'onAnimation($event)'\n },\n animations: [kbqSidepanelAnimations.sidepanelState]\n})\nexport class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n sidepanelConfig = inject(KbqSidepanelConfig);\n withIndent = inject(KBQ_SIDEPANEL_WITH_INDENT);\n\n /** ID for the container DOM element. */\n id: string;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n readonly portalOutlet = viewChild.required(CdkPortalOutlet);\n\n /** The state of the sidepanel animations. */\n animationState: KbqSidepanelAnimationState = KbqSidepanelAnimationState.Void;\n\n /** @docs-private */\n animationTransform: {\n transformIn: string;\n transformOut: string;\n lower: string;\n bottomPanel: string;\n becomingNormal: string;\n };\n\n /** Emits whenever the state of the animation changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n /** @docs-private */\n get size(): string {\n return `kbq-sidepanel_${this.sidepanelConfig.size}`;\n }\n\n /** @docs-private */\n get trapFocusAutoCapture(): boolean {\n return this.sidepanelConfig.trapFocusAutoCapture ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n get trapFocus(): boolean {\n return this.sidepanelConfig.trapFocus ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n protected readonly indentClickEmitter = new Subject<MouseEvent>();\n\n /** Whether the component has been destroyed. */\n private destroyed: boolean;\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /**\n * Gets an observable that emits when the indent has been clicked.\n *\n * @docs-private\n */\n indentClick(): Observable<MouseEvent> {\n return this.indentClickEmitter.asObservable();\n }\n\n /** Attach a component portal as content to this sidepanel container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this.validatePortalAttached();\n this.setAnimation();\n this.setPanelClass();\n\n return this.portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this sidepanel container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this.validatePortalAttached();\n this.setAnimation();\n this.setPanelClass();\n\n return this.portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of the sidepanel entrance into view. */\n enter(): void {\n if (this.destroyed) return;\n\n this.animationState = KbqSidepanelAnimationState.Visible;\n this.changeDetectorRef.detectChanges();\n }\n\n /** Begin animation of the sidepanel exiting from view. */\n exit(): void {\n if (this.destroyed) return;\n\n this.setAnimationState(KbqSidepanelAnimationState.Hidden);\n }\n\n /** @docs-private */\n onAnimation(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** @docs-private */\n setAnimationState(state: KbqSidepanelAnimationState): void {\n this.animationState = state;\n this.changeDetectorRef.markForCheck();\n }\n\n private setAnimation() {\n const position: KbqSidepanelPosition = this.sidepanelConfig.position!;\n\n this.animationTransform = {\n transformIn: kbqSidepanelTransformAnimation[position].in,\n transformOut: kbqSidepanelTransformAnimation[position].out,\n lower: kbqSidepanelTransformAnimation[position].lower,\n bottomPanel: kbqSidepanelTransformAnimation[position].bottomPanel,\n becomingNormal: kbqSidepanelTransformAnimation[position].becomingNormal\n };\n }\n\n private setPanelClass() {\n const element: HTMLElement = this.elementRef.nativeElement;\n const position: KbqSidepanelPosition = this.sidepanelConfig.position!;\n\n element.classList.add(`kbq-sidepanel-container_${position}`);\n }\n\n private validatePortalAttached() {\n if (this.portalOutlet().hasAttached()) {\n throw Error('Attempting to attach sidepanel content after content is already attached');\n }\n }\n}\n","<div class=\"kbq-sidepanel-wrapper\">\n @if (withIndent) {\n <div class=\"kbq-sidepanel-indent\" (click)=\"indentClickEmitter.next($event)\"></div>\n }\n\n <div class=\"kbq-sidepanel-content\" [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\">\n <ng-template cdkPortalOutlet />\n </div>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { signal } from '@angular/core';\nimport { ESCAPE, isHtmlElement, KbqOverflowShadowState } from '@koobiq/components/core';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, take, tap } from 'rxjs/operators';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KbqSidepanelConfig } from './sidepanel-config';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\n\n// Counter for unique sidepanel ids.\nlet uniqueId = 0;\n\nexport class KbqSidepanelRef<T = any, R = any> {\n readonly id: string;\n\n /**\n * Vertical scroll overflow state of the sidepanel body.\n * Updated on scroll and used for visual adjustments.\n */\n bodyOverflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n /** Instance of the component making up the content of the sidepanel. */\n instance: T;\n\n /** Subject for notifying the user that the sidepanel has been closed and dismissed. */\n private readonly afterClosed$ = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the sidepanel starting closing. */\n private readonly beforeClosed$ = new Subject<void>();\n\n /** Subject for notifying the user that the sidepanel has opened and appeared. */\n private readonly afterOpened$ = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private result: R | undefined;\n\n constructor(\n public readonly containerInstance: KbqSidepanelContainerComponent,\n public readonly overlayRef: OverlayRef,\n public readonly config: KbqSidepanelConfig\n ) {\n this.id = this.config.id || `kbq-sidepanel-${uniqueId++}`;\n this.containerInstance.id = this.id;\n overlayRef.backdropElement?.classList?.add(config.backdropClass ?? 'kbq-overlay-dark-backdrop');\n\n const slideBelowStart = containerInstance.animationStateChanged.pipe(\n filter(\n (event) =>\n event.phaseName === 'start' &&\n [KbqSidepanelAnimationState.Lower, KbqSidepanelAnimationState.BottomPanel].includes(\n event.toState as any\n )\n )\n );\n\n // Act on close\n const beforeClosed = containerInstance.animationStateChanged.pipe(\n filter(({ phaseName, toState }) => phaseName === 'start' && toState === KbqSidepanelAnimationState.Hidden),\n take(1),\n tap(() => {\n this.beforeClosed$.next();\n this.beforeClosed$.complete();\n })\n );\n\n // Emit when opening animation completes\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Visible),\n take(1)\n )\n .subscribe(() => {\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n\n containerInstance.animationStateChanged\n .pipe(\n filter(\n (event) =>\n event.phaseName === 'start' && event.toState === KbqSidepanelAnimationState.BecomingNormal\n )\n )\n .subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '1';\n }\n });\n\n merge(slideBelowStart, beforeClosed).subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '0';\n }\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Hidden),\n take(1)\n )\n .subscribe(() => {\n overlayRef.dispose();\n this.afterClosed$.next(this.result);\n this.afterClosed$.complete();\n });\n\n merge(\n overlayRef.backdropClick(),\n overlayRef.keydownEvents().pipe(\n // keyCode is deprecated, but IE11 and Edge don't support code property, which we need use instead\n filter((event) => event.keyCode === ESCAPE)\n ),\n this.containerInstance.indentClick(),\n overlayRef\n .outsidePointerEvents()\n .pipe(\n filter((event) => isHtmlElement(event.target) && !!event.target.closest('.kbq-sidepanel-container'))\n )\n ).subscribe(() => {\n if (this.config.disableClose) return;\n\n this.close();\n });\n }\n\n close(result?: R): void {\n if (!this.afterClosed$.closed) {\n // Transition the backdrop in parallel to the sidepanel.\n this.containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done'),\n take(1)\n )\n .subscribe(() => this.overlayRef.detachBackdrop());\n\n this.result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the sidepanel is started closing. */\n beforeClosed(): Observable<void> {\n return this.beforeClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel is finished closing. */\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector, OnDestroy, TemplateRef, inject } from '@angular/core';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KBQ_SIDEPANEL_DATA, KbqSidepanelConfig } from './sidepanel-config';\nimport { KBQ_SIDEPANEL_WITH_INDENT, KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport { KbqSidepanelRef } from './sidepanel-ref';\n\n/** Injection token that can be used to specify default sidepanel options. */\nexport const KBQ_SIDEPANEL_DEFAULT_OPTIONS = new InjectionToken<KbqSidepanelConfig>('kbq-sidepanel-default-options');\n\n@Injectable()\nexport class KbqSidepanelService implements OnDestroy {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private defaultOptions = inject<KbqSidepanelConfig>(KBQ_SIDEPANEL_DEFAULT_OPTIONS, { optional: true });\n private parentSidepanelService = inject(KbqSidepanelService, { optional: true, skipSelf: true });\n private openedSidepanelsAtThisLevel: KbqSidepanelRef[] = [];\n\n /** Keeps track of the currently-open sidepanels. */\n get openedSidepanels(): KbqSidepanelRef[] {\n return this.parentSidepanelService\n ? this.parentSidepanelService.openedSidepanels\n : this.openedSidepanelsAtThisLevel;\n }\n\n ngOnDestroy() {\n // Only close the sidepanels at this level on destroy\n // since the parent service may still be active.\n this.closeSidepanels(this.openedSidepanelsAtThisLevel);\n }\n\n open<T, D = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: KbqSidepanelConfig<D>\n ): KbqSidepanelRef<T> {\n const fullConfig = {\n ...(this.defaultOptions || new KbqSidepanelConfig()),\n ...config\n };\n\n if (fullConfig.id && this.getSidepanelById(fullConfig.id)) {\n throw Error(`Sidepanel with id \"${fullConfig.id}\" exists already. The sidepanel id must be unique.`);\n }\n\n const overlayRef = this.createOverlay(fullConfig);\n\n overlayRef.hostElement.classList.add('kbq-sidepanel-overlay');\n const container = this.attachContainer(overlayRef, fullConfig);\n const ref = new KbqSidepanelRef(container, overlayRef, fullConfig);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(\n new TemplatePortal<T>(\n componentOrTemplateRef,\n null!,\n {\n $implicit: fullConfig.data,\n sidepanelRef: ref\n } as any,\n this.createInjector(fullConfig, ref, container)\n )\n );\n } else {\n const portal = new ComponentPortal(\n componentOrTemplateRef,\n undefined,\n this.createInjector(fullConfig, ref, container)\n );\n const contentRef = container.attachComponentPortal(portal);\n\n ref.instance = contentRef.instance;\n }\n\n this.openedSidepanels.push(ref);\n ref.beforeClosed().subscribe(() => this.updateAnimationState(ref));\n ref.afterClosed().subscribe(() => this.removeOpenSidepanel(ref));\n\n container.enter();\n\n return ref;\n }\n\n /**\n * Closes all of the currently-open sidepanels.\n */\n closeAll(): void {\n this.closeSidepanels(this.openedSidepanels);\n }\n\n /**\n * Finds an open sidepanel by its id.\n * @param id ID to use when looking up the sidepanel.\n */\n getSidepanelById(id: string): KbqSidepanelRef | undefined {\n return this.openedSidepanels.find((sidepanel) => sidepanel.id === id);\n }\n\n /**\n * Attaches the sidepanel container component to the overlay.\n */\n private attachContainer(overlayRef: OverlayRef, config: KbqSidepanelConfig): KbqSidepanelContainerComponent {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(config);\n\n const lower = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 1];\n const bottom = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2];\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Lower);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.BottomPanel);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: KbqSidepanelConfig, useValue: config },\n { provide: KBQ_SIDEPANEL_WITH_INDENT, useValue: openedSidepanelsWithSamePosition.length >= 1 }\n ]\n });\n\n const containerPortal = new ComponentPortal(KbqSidepanelContainerComponent, undefined, injector);\n const containerRef: ComponentRef<KbqSidepanelContainerComponent> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates a custom injector to be used inside the sidepanel. This allows a component loaded inside\n * of a sidepanel to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the sidepanel.\n * @param sidepanelRef Reference to the sidepanel.\n * @param sidepanelContainer Sidepanel container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the sidepanel.\n */\n private createInjector<T>(\n config: KbqSidepanelConfig,\n sidepanelRef: KbqSidepanelRef<T>,\n sidepanelContainer: KbqSidepanelContainerComponent\n ): Injector {\n // The KbqSidepanelContainerComponent is injected in the portal as the KbqSidepanelContainerComponent and\n // the sidepanel's content are created out of the same ViewContainerRef and as such, are siblings for injector\n // purposes. To allow the hierarchy that is expected, the KbqSidepanelContainerComponent is explicitly\n // added to the injection tokens.\n\n return Injector.create({\n parent: config.injector ?? this.injector,\n providers: [\n { provide: KbqSidepanelContainerComponent, useValue: sidepanelContainer },\n { provide: KBQ_SIDEPANEL_DATA, useValue: config.data },\n { provide: KbqSidepanelRef, useValue: sidepanelRef }\n ]\n });\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified sidepanel config.\n */\n private createOverlay(config: KbqSidepanelConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: config.hasBackdrop,\n backdropClass: '',\n maxWidth: '100%',\n panelClass: config.overlayPanelClass,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global()\n });\n\n return this.overlay.create(overlayConfig);\n }\n\n private closeSidepanels(sidepanels: KbqSidepanelRef[]) {\n const reversedOpenedSidepanels = [...sidepanels.reverse()];\n\n reversedOpenedSidepanels.forEach((sidepanelRef: KbqSidepanelRef) => sidepanelRef.close());\n }\n\n private getOpenedSidepanelsWithSamePosition(config: KbqSidepanelConfig): KbqSidepanelRef[] {\n return this.openedSidepanels.filter((sidepanelRef) => sidepanelRef.config.position === config.position);\n }\n\n private updateAnimationState(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n // only allow animations if ref is last element in sidepanels list\n if (index === -1 || index !== this.openedSidepanels.length - 1) return;\n\n const [lower, bottom] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.BecomingNormal);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.Lower);\n }\n\n /**\n * Moves a sidepanel into `state`, unless it is closing already.\n *\n * The exit animation is what disposes the overlay, so interrupting it with another state leaves the\n * sidepanel in the DOM and in `openedSidepanels` for good — which is what closing a stack of them as\n * a group used to do to the panels underneath.\n */\n private setAnimationState(sidepanelRef: KbqSidepanelRef | undefined, state: KbqSidepanelAnimationState): void {\n const containerInstance = sidepanelRef?.containerInstance;\n\n if (!containerInstance || containerInstance.animationState === KbqSidepanelAnimationState.Hidden) return;\n\n containerInstance.setAnimationState(state);\n }\n\n /**\n * Removes a sidepanel from the array of open sidepanels.\n * @param sidepanelRef Sidepanel to be removed.\n */\n private removeOpenSidepanel(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n if (index > -1) {\n const [lower] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Visible);\n\n this.openedSidepanels.splice(index, 1);\n }\n }\n\n private getLowerSidepanelsWithSamePosition(index: number): KbqSidepanelRef[] {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(\n this.openedSidepanels[index].config\n );\n\n return [\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2],\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 3]\n ];\n }\n}\n","import {\n booleanAttribute,\n Component,\n Directive,\n effect,\n ElementRef,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOverflowShadowContainer } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqSidepanelRef } from './sidepanel-ref';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n/**\n * Button that will close the current sidepanel.\n */\n@Directive({\n selector: 'button[kbq-sidepanel-close], button[kbqSidepanelClose]',\n host: {\n class: 'kbq-sidepanel-close',\n '(click)': 'sidepanelRef.close(sidepanelResult)'\n }\n})\nexport class KbqSidepanelClose implements OnInit, OnChanges {\n sidepanelRef = inject(KbqSidepanelRef, { optional: true })!;\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private sidepanelService = inject(KbqSidepanelService);\n private readonly renderer = inject(Renderer2);\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbq-sidepanel-close') sidepanelResult: any;\n\n readonly kbqSidepanelClose = input<any>();\n\n ngOnInit() {\n // A button with no type submits the form it sits in, so closing a sidepanel from inside a form would\n // submit it too. A type the author set is left alone.\n if (!this.elementRef.nativeElement.hasAttribute('type')) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');\n }\n\n if (!this.sidepanelRef) {\n // When this directive is included in a sidepanel via TemplateRef (rather than being\n // in a Component), the SidepanelRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the SidepanelRef by\n // ID.\n // This must occur in `onInit`, as the ID binding for the sidepanel container won't\n // be resolved at constructor time. We use setTimeout by same reason.\n setTimeout(() => {\n this.sidepanelRef = getClosestSidepanel(this.elementRef, this.sidepanelService.openedSidepanels)!;\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes.kbqSidepanelClose || changes.sidepanelResult;\n\n if (proxiedChange) {\n this.sidepanelResult = proxiedChange.currentValue;\n }\n }\n}\n\n/**\n * Header of a sidepanel.\n */\n@Component({\n selector: 'kbq-sidepanel-header',\n imports: [\n KbqButtonModule,\n KbqSidepanelClose,\n KbqIconModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-sidepanel-title\" kbq-title>\n <ng-content />\n </div>\n\n @if (closeable()) {\n <button kbq-button kbq-sidepanel-close type=\"button\" [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"'contrast'\"></i>\n </button>\n }\n `,\n host: {\n class: 'kbq-sidepanel-header',\n '[class.kbq-sidepanel-header_truncate-text]': 'truncateText()',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null'\n }\n})\nexport class KbqSidepanelHeader {\n /** Add button for close sidepanel. Default false */\n readonly closeable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Enables text truncation. Default true */\n readonly truncateText = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Scrollable content container of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody',\n host: {\n class: 'kbq-sidepanel-body kbq-scrollbar'\n },\n hostDirectives: [KbqOverflowShadowContainer]\n})\nexport class KbqSidepanelBody {\n private readonly sidepanelRef = inject(KbqSidepanelRef);\n private readonly overflowContainer = inject(KbqOverflowShadowContainer);\n\n constructor() {\n effect(() => this.sidepanelRef.bodyOverflow.set(this.overflowContainer.overflow()));\n }\n}\n\n/**\n * Footer of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter',\n host: {\n class: 'kbq-sidepanel-footer',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null'\n }\n})\nexport class KbqSidepanelFooter {\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Actions block of a sidepanel footer.\n */\n@Directive({\n selector: 'kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions',\n host: {\n class: 'kbq-sidepanel-actions'\n }\n})\nexport class KbqSidepanelActions {}\n\n/**\n * Finds the closest KbqSidepanelRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a sidepanel.\n * @param openSidepanels References to the currently-open sidepanels.\n */\nfunction getClosestSidepanel(element: ElementRef<HTMLElement>, openSidepanels: KbqSidepanelRef[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('kbq-sidepanel-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openSidepanels.find((sidepanel) => sidepanel.id === parent!.id) : null;\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport {\n KbqSidepanelActions,\n KbqSidepanelBody,\n KbqSidepanelClose,\n KbqSidepanelFooter,\n KbqSidepanelHeader\n} from './sidepanel-directives';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n A11yModule,\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ],\n providers: [\n KbqSidepanelService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }\n ],\n exports: [\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ]\n})\nexport class KbqSidepanelModule {}\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-sidepanel.mjs","sources":["../../../packages/components/sidepanel/sidepanel-config.ts","../../../packages/components/sidepanel/sidepanel-animations.ts","../../../packages/components/sidepanel/sidepanel-container.component.ts","../../../packages/components/sidepanel/sidepanel-container.component.html","../../../packages/components/sidepanel/sidepanel-ref.ts","../../../packages/components/sidepanel/sidepanel-directives.ts","../../../packages/components/sidepanel/sidepanel.service.ts","../../../packages/components/sidepanel/sidepanel.module.ts","../../../packages/components/sidepanel/koobiq-components-sidepanel.ts"],"sourcesContent":["import { ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken, Injector } from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a sidepanel. */\nexport const KBQ_SIDEPANEL_DATA = new InjectionToken<any>('KbqSidepanelData');\n\nexport enum KbqSidepanelPosition {\n Right = 'right',\n Left = 'left',\n Top = 'top',\n Bottom = 'bottom'\n}\n\nexport enum KbqSidepanelSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\nexport class KbqSidepanelConfig<D = any> {\n /** ID for the sidepanel. If omitted, a unique one will be generated. */\n id?: string;\n\n /**\n * Persists whether this sidepanel is open, under this key, so the application can bring it back on\n * the next visit — see `KbqSidepanelService.wasOpen()`.\n *\n * Omit it and nothing is persisted. The key is the opt-in because there is nothing else stable to\n * persist under: a sidepanel lives in an overlay, and `id` falls back to a counter that means\n * something different on every load.\n */\n stateSavingKey?: string;\n\n /** Whether the focus trap is active. Defaults to whether the sidepanel has a backdrop. */\n trapFocus?: boolean;\n\n /** capture focus on initialization. This option sets cdkTrapFocusAutoCapture. Defaults to `true`. */\n trapFocusAutoCapture?: boolean;\n\n /**\n * Accessible name of the sidepanel, used when no `kbq-sidepanel-header` names it and no\n * `ariaLabelledBy` is given.\n */\n ariaLabel?: string;\n\n /**\n * Id of the element that labels the sidepanel. When omitted, `kbq-sidepanel-header` labels the\n * sidepanel with its own title.\n */\n ariaLabelledBy?: string;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n position?: KbqSidepanelPosition = KbqSidepanelPosition.Right;\n\n size?: KbqSidepanelSize = KbqSidepanelSize.Medium;\n\n /** Whether the sidepanel has a backdrop. */\n hasBackdrop?: boolean = true;\n\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the sidepanel. */\n disableClose?: boolean = false;\n\n /** Custom class for the overlay pane. */\n overlayPanelClass?: string | string[] = '';\n\n /**\n * Injector used for the instantiation of the component to be attached.\n * Allows to pass a custom injector to provide a dependency injection hierarchy for the sidepanel content.\n */\n injector?: Injector;\n\n /**\n * Scroll strategy of the sidepanel overlay, resolved once when the sidepanel opens.\n * Defaults to blocking the page scroll for sidepanels with a backdrop and to repositioning for the rest.\n */\n scrollStrategy?: () => ScrollStrategy;\n}\n","import { KbqSidepanelPosition } from './sidepanel-config';\n\n/** @internal */\nexport enum KbqSidepanelAnimationState {\n Void = 'void',\n Visible = 'visible',\n Hidden = 'hidden',\n Lower = 'lower',\n BottomPanel = 'bottom-panel',\n BecomingNormal = 'becoming-normal'\n}\n\n/**\n * A state transition of the sidepanel container: started, or ended — finished, or interrupted by the next one.\n *\n * @internal\n */\nexport interface KbqSidepanelAnimationEvent {\n phaseName: 'start' | 'done';\n toState: KbqSidepanelAnimationState;\n}\n\n/** @internal */\nexport const kbqSidepanelTransformAnimation: Record<\n KbqSidepanelPosition,\n { in: string; out: string; lower: string; bottomPanel: string; becomingNormal: string }\n> = {\n right: {\n in: 'translateX(100%)',\n out: 'translateX(0)',\n lower: 'scale(0.95) translateX(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateX(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0) scale(1)'\n },\n left: {\n in: 'translateX(-100%) scale(1)',\n out: 'translateX(0%) scale(1)',\n lower: 'scale(0.95) translateX(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateX(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0%) scale(1)'\n },\n top: {\n in: 'translateY(-100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateY(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n },\n bottom: {\n in: 'translateY(100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateY(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n }\n};\n","import { CdkTrapFocus, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n afterNextRender,\n AfterRenderRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n computed,\n ElementRef,\n EmbeddedViewRef,\n inject,\n InjectionToken,\n Injector,\n OnDestroy,\n signal,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { kbqAfterAnimations, kbqAnimationsDisabled } from '@koobiq/components/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n KbqSidepanelAnimationEvent,\n KbqSidepanelAnimationState,\n kbqSidepanelTransformAnimation\n} from './sidepanel-animations';\nimport { KbqSidepanelConfig, KbqSidepanelPosition, KbqSidepanelSize } from './sidepanel-config';\n\nexport const KBQ_SIDEPANEL_WITH_INDENT = new InjectionToken<boolean>('kbq-sidepanel-with-indent');\n\n@Component({\n selector: 'kbq-sidepanel-container',\n imports: [\n CdkPortalOutlet,\n CdkTrapFocus\n ],\n templateUrl: './sidepanel-container.component.html',\n styleUrls: ['./sidepanel.scss', './sidepanel-tokens.scss'],\n // The configurable trap adds an inert strategy that pulls escaping focus back, which the anchor-only\n // default cannot do. Scoped to the container so it does not replace the factory the rest of the\n // application injects.\n providers: [{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-sidepanel-container kbq-sidepanel-container_shadowed',\n '[class]': 'size',\n '[class.kbq-sidepanel_nested]': 'withIndent',\n '[attr.id]': 'id',\n '[attr.tabindex]': '-1',\n '[attr.role]': '\"dialog\"',\n '[attr.aria-modal]': 'trapFocus ? \"true\" : null',\n '[attr.aria-label]': 'sidepanelConfig.ariaLabel ?? null',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[class.kbq-animations-disabled]': 'animationsDisabled',\n '[style.transform]': 'stateTransform()',\n '[style.opacity]': 'stateOpacity()'\n }\n})\nexport class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private readonly injector = inject(Injector);\n sidepanelConfig = inject(KbqSidepanelConfig);\n\n /** Whether the sidepanel moves without motion. */\n protected readonly animationsDisabled = kbqAnimationsDisabled();\n\n /** Whether the panel exposes the clickable indent strip of the sidepanel stacked underneath it. */\n get withIndent(): boolean {\n return this._withIndent();\n }\n\n set withIndent(value: boolean) {\n this._withIndent.set(value);\n }\n\n private readonly _withIndent = signal(inject(KBQ_SIDEPANEL_WITH_INDENT));\n\n /** ID for the container DOM element. */\n id: string;\n\n /**\n * Id of the element naming the sidepanel. Comes from the config, or from `kbq-sidepanel-header`.\n *\n * @docs-private\n */\n get ariaLabelledBy(): string | null {\n return this._ariaLabelledBy();\n }\n\n /** @docs-private */\n set ariaLabelledBy(value: string | null) {\n this._ariaLabelledBy.set(value);\n }\n\n // A signal: the header reports its title while this view is being checked, which a `markForCheck` would miss.\n private readonly _ariaLabelledBy = signal(this.sidepanelConfig.ariaLabelledBy ?? null);\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n readonly portalOutlet = viewChild.required(CdkPortalOutlet);\n\n /**\n * The state of the sidepanel: on screen, closing, or stacked under another one.\n *\n * @internal\n */\n readonly animationState = signal<KbqSidepanelAnimationState>(KbqSidepanelAnimationState.Void);\n\n /**\n * Reports each state transition starting and ending.\n *\n * @internal\n */\n readonly animationStateChanged = new Subject<KbqSidepanelAnimationEvent>();\n\n /** The transition in progress, ended early by the next one. */\n private pendingTransition?: { state: KbqSidepanelAnimationState; wait: { destroy(): void } };\n\n /** Transition events held until the render that applies the state, in the order they happened. */\n private readonly unreportedEvents: KbqSidepanelAnimationEvent[] = [];\n\n /** Reports the held events once the next render is over. */\n private reportAfterRender?: AfterRenderRef;\n\n /** @docs-private */\n get size(): string {\n return `kbq-sidepanel_${this.sidepanelConfig.size ?? KbqSidepanelSize.Medium}`;\n }\n\n /**\n * Defaults to `true` in both modalities: it is what moves focus into the panel on open and returns\n * it to the trigger on close, and `CdkTrapFocus` restores focus only when it captured it.\n *\n * @docs-private\n */\n get trapFocusAutoCapture(): boolean {\n return this.sidepanelConfig.trapFocusAutoCapture ?? true;\n }\n\n /** @docs-private */\n get trapFocus(): boolean {\n return this.sidepanelConfig.trapFocus ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n protected readonly indentClickEmitter = new Subject<MouseEvent>();\n\n /** Whether the component has been destroyed. */\n private destroyed: boolean;\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /**\n * Gets an observable that emits when the indent has been clicked.\n *\n * @docs-private\n */\n indentClick(): Observable<MouseEvent> {\n return this.indentClickEmitter.asObservable();\n }\n\n /** Attach a component portal as content to this sidepanel container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this.validatePortalAttached();\n this.setPanelClass();\n\n const componentRef = this.portalOutlet().attachComponentPortal(portal);\n\n // The portal outlet inserts the attached component's own host element between\n // `.kbq-sidepanel-content` and the header/body/footer, and a plain block there takes the\n // body out of the flex column that makes it scroll.\n (componentRef.location.nativeElement as HTMLElement).classList.add('kbq-sidepanel-content-host');\n\n return componentRef;\n }\n\n /** Attach a template portal as content to this sidepanel container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this.validatePortalAttached();\n this.setPanelClass();\n\n return this.portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of the sidepanel entrance into view. */\n enter(): void {\n if (this.destroyed) return;\n\n this.animationState.set(KbqSidepanelAnimationState.Visible);\n this.changeDetectorRef.detectChanges();\n this.startTransition(KbqSidepanelAnimationState.Visible);\n }\n\n /** Begin animation of the sidepanel exiting from view. */\n exit(): void {\n if (this.destroyed) return;\n\n this.setAnimationState(KbqSidepanelAnimationState.Hidden);\n }\n\n /** @internal */\n setAnimationState(state: KbqSidepanelAnimationState): void {\n if (this.destroyed) return;\n\n this.animationState.set(state);\n this.startTransition(state);\n }\n\n /**\n * Transform of the panel in its current state.\n *\n * @internal\n */\n protected readonly stateTransform = computed((): string | null => {\n const transforms = kbqSidepanelTransformAnimation[this.position];\n\n switch (this.animationState()) {\n case KbqSidepanelAnimationState.Hidden:\n return transforms.in;\n case KbqSidepanelAnimationState.Visible:\n return transforms.out;\n case KbqSidepanelAnimationState.Lower:\n return transforms.lower;\n case KbqSidepanelAnimationState.BottomPanel:\n return transforms.bottomPanel;\n case KbqSidepanelAnimationState.BecomingNormal:\n return transforms.becomingNormal;\n default:\n return null;\n }\n });\n\n /**\n * Opacity of the panel in its current state.\n *\n * @internal\n */\n protected readonly stateOpacity = computed((): number | null => {\n switch (this.animationState()) {\n case KbqSidepanelAnimationState.Void:\n case KbqSidepanelAnimationState.BottomPanel:\n return 0;\n case KbqSidepanelAnimationState.Hidden:\n return null;\n default:\n return 1;\n }\n });\n\n /**\n * Recomputes whether this panel exposes an indent strip, after the stack it belongs to changed.\n *\n * @docs-private\n */\n setWithIndent(withIndent: boolean): void {\n this.withIndent = withIndent;\n }\n\n /**\n * Names the sidepanel after the title of its header. A name given through the config wins.\n *\n * @docs-private\n */\n setAriaLabelledBy(id: string): void {\n if (this.ariaLabelledBy !== null) return;\n\n this.ariaLabelledBy = id;\n }\n\n /**\n * Reports the transition to `state` starting, and ending once its CSS transition has.\n *\n * Both are reported after the render that applies the state, as the animation engine did, and never inside\n * `open()` or `close()`: a subscriber that opens another sidepanel would otherwise do so before the stack the\n * call is changing is complete, and one that subscribes right after the call would miss the start.\n */\n private startTransition(state: KbqSidepanelAnimationState): void {\n const pending = this.pendingTransition;\n\n if (pending) {\n pending.wait.destroy();\n this.holdEvent({ phaseName: 'done', toState: pending.state });\n }\n\n this.holdEvent({ phaseName: 'start', toState: state });\n\n const wait = kbqAfterAnimations(\n () => this.elementRef.nativeElement,\n () => {\n this.pendingTransition = undefined;\n this.unreportedEvents.push({ phaseName: 'done', toState: state });\n this.reportEvents();\n },\n this.injector\n );\n\n this.pendingTransition = { state, wait };\n }\n\n private holdEvent(event: KbqSidepanelAnimationEvent): void {\n this.unreportedEvents.push(event);\n this.reportAfterRender ??= afterNextRender(() => this.reportEvents(), { injector: this.injector });\n }\n\n private reportEvents(): void {\n this.reportAfterRender?.destroy();\n\n // One at a time: a subscriber that moves the panel again holds more events, which follow in order.\n for (let event = this.unreportedEvents.shift(); event; event = this.unreportedEvents.shift()) {\n this.animationStateChanged.next(event);\n }\n\n this.reportAfterRender = undefined;\n }\n\n private setPanelClass() {\n this.elementRef.nativeElement.classList.add(`kbq-sidepanel-container_${this.position}`);\n }\n\n private get position(): KbqSidepanelPosition {\n return this.sidepanelConfig.position ?? KbqSidepanelPosition.Right;\n }\n\n private validatePortalAttached() {\n if (this.portalOutlet().hasAttached()) {\n throw Error('Attempting to attach sidepanel content after content is already attached');\n }\n }\n}\n","<div class=\"kbq-sidepanel-wrapper\">\n @if (withIndent) {\n <div class=\"kbq-sidepanel-indent\" (click)=\"indentClickEmitter.next($event)\"></div>\n }\n\n <div class=\"kbq-sidepanel-content\" [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\">\n <ng-template cdkPortalOutlet />\n </div>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { signal, untracked } from '@angular/core';\nimport { ESCAPE, isHtmlElement, KbqOverflowShadowState } from '@koobiq/components/core';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, take, tap } from 'rxjs/operators';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KbqSidepanelConfig } from './sidepanel-config';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\n\n// Counter for unique sidepanel ids.\nlet uniqueId = 0;\n\nexport class KbqSidepanelRef<T = any, R = any> {\n readonly id: string;\n\n /**\n * Vertical scroll overflow state of the sidepanel body.\n * Updated on scroll and used for visual adjustments.\n */\n readonly bodyOverflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n /** Instance of the component making up the content of the sidepanel. */\n instance: T;\n\n /** Subject for notifying the user that the sidepanel has been closed and dismissed. */\n private readonly afterClosed$ = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the sidepanel starting closing. */\n private readonly beforeClosed$ = new Subject<void>();\n\n /** Subject for notifying the user that the sidepanel has opened and appeared. */\n private readonly afterOpened$ = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private result: R | undefined;\n\n /** Whether `close()` has already started the closing animation. */\n private closing = false;\n\n constructor(\n public readonly containerInstance: KbqSidepanelContainerComponent,\n public readonly overlayRef: OverlayRef,\n public readonly config: KbqSidepanelConfig\n ) {\n this.id = this.config.id || `kbq-sidepanel-${uniqueId++}`;\n this.containerInstance.id = this.id;\n overlayRef.backdropElement?.classList.add(config.backdropClass ?? 'kbq-overlay-dark-backdrop');\n\n const slideBelowStart = containerInstance.animationStateChanged.pipe(\n filter(\n (event) =>\n event.phaseName === 'start' &&\n [KbqSidepanelAnimationState.Lower, KbqSidepanelAnimationState.BottomPanel].includes(\n event.toState as KbqSidepanelAnimationState\n )\n )\n );\n\n // Act on close\n const beforeClosed = containerInstance.animationStateChanged.pipe(\n filter(({ phaseName, toState }) => phaseName === 'start' && toState === KbqSidepanelAnimationState.Hidden),\n take(1),\n tap(() => {\n this.beforeClosed$.next();\n this.beforeClosed$.complete();\n })\n );\n\n // Emit when opening animation completes\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Visible),\n take(1)\n )\n .subscribe(() => {\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n\n containerInstance.animationStateChanged\n .pipe(\n filter(\n (event) =>\n event.phaseName === 'start' && event.toState === KbqSidepanelAnimationState.BecomingNormal\n )\n )\n .subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '1';\n }\n });\n\n merge(slideBelowStart, beforeClosed).subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '0';\n }\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Hidden),\n take(1)\n )\n .subscribe(() => {\n overlayRef.dispose();\n this.afterClosed$.next(this.result);\n this.afterClosed$.complete();\n });\n\n overlayRef\n .keydownEvents()\n .pipe(\n // keyCode is deprecated, but IE11 and Edge don't support code property, which we need use instead\n filter((event) => event.keyCode === ESCAPE)\n )\n .subscribe((event) => {\n // CDK hands the key to this overlay after the layers above it, such as a tooltip, a popover or a\n // confirm dialog, have handled it: one that closed spent it, and the sidepanel stays open.\n if (event.defaultPrevented || this.config.disableClose) return;\n\n event.preventDefault();\n this.close();\n });\n\n merge(\n overlayRef.backdropClick(),\n this.containerInstance.indentClick(),\n overlayRef.outsidePointerEvents().pipe(filter((event) => this.isClickInsideSamePositionStack(event)))\n ).subscribe(() => {\n if (this.config.disableClose) return;\n\n this.close();\n });\n }\n\n close(result?: R): void {\n // Untracked, as `KbqSidepanelService.open()`: called from a consumer's `effect()`, the state of the sidepanels\n // stacked under this one, read and written on the way, would make the effect run again as they move.\n untracked(() => this.startClosing(result));\n }\n\n /** Body of `close()`. */\n private startClosing(result: R | undefined): void {\n if (this.closing) return;\n\n this.closing = true;\n\n // Transition the backdrop in parallel to the sidepanel.\n this.containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done'),\n take(1)\n )\n .subscribe(() => this.overlayRef.detachBackdrop());\n\n this.result = result;\n this.containerInstance.exit();\n }\n\n /** Gets an observable that is notified when the sidepanel is started closing. */\n beforeClosed(): Observable<void> {\n return this.beforeClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel is finished closing. */\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n\n /**\n * A pointer event outside this overlay closes the sidepanel only when it lands in a sidepanel of the\n * same stack — that is the exposed strip of a panel opened over this one. Panels at other edges do\n * not overlap this one and must not close it.\n */\n private isClickInsideSamePositionStack(event: MouseEvent): boolean {\n if (!isHtmlElement(event.target)) return false;\n\n const container = event.target.closest('.kbq-sidepanel-container');\n\n return !!container && container.classList.contains(`kbq-sidepanel-container_${this.config.position}`);\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KBQ_A11Y_LOCALE_CONFIGURATION,\n KbqLocaleOverridesDirective,\n KbqOverflowShadowContainer\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqScrollbarViewport } from '@koobiq/components/scrollbar';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqSidepanelRef } from './sidepanel-ref';\n\n/**\n * Button that will close the current sidepanel.\n */\n@Directive({\n selector: 'button[kbq-sidepanel-close], button[kbqSidepanelClose]',\n host: {\n class: 'kbq-sidepanel-close',\n // The camel-case spelling wins when a template binds both, as it did before.\n '(click)': 'sidepanelRef.close(kbqSidepanelClose() ?? sidepanelResult())'\n }\n})\nexport class KbqSidepanelClose {\n // `CdkPortalOutlet.attachTemplatePortal()` forwards the portal injector to the embedded view, so the\n // ref is reachable from a `<ng-template>` sidepanel as well as from a component one.\n readonly sidepanelRef = inject(KbqSidepanelRef);\n\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n /** Value handed to `KbqSidepanelRef.close()`, under the hyphenated spelling of the selector. */\n readonly sidepanelResult = input<any>(undefined, { alias: 'kbq-sidepanel-close' });\n\n /** The same value, under the camel-case spelling. */\n readonly kbqSidepanelClose = input<any>();\n\n constructor() {\n afterNextRender(() => {\n // A button with no type submits the form it sits in, so closing a sidepanel from inside a form would\n // submit it too. A type the author set is left alone. The element carries its static attributes by\n // the time a directive is constructed, so this needs no lifecycle hook.\n if (!this.elementRef.nativeElement.hasAttribute('type')) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');\n }\n });\n }\n}\n\n/**\n * Header of a sidepanel.\n */\n@Component({\n selector: 'kbq-sidepanel-header',\n imports: [\n KbqButtonModule,\n KbqSidepanelClose,\n KbqIconModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-sidepanel-title\" kbq-title [attr.id]=\"titleId\">\n <ng-content />\n </div>\n\n @if (closeable()) {\n <button\n kbq-button\n kbq-sidepanel-close\n type=\"button\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"'contrast'\"></i>\n </button>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-sidepanel-header',\n '[class.kbq-sidepanel-header_truncate-text]': 'truncateText()',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ]\n})\nexport class KbqSidepanelHeader {\n /** Accessible name for the icon-only close button. */\n protected readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n\n /** Add button for close sidepanel. Default false */\n readonly closeable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Enables text truncation. Default true */\n readonly truncateText = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n\n /** Id of the title element, which is what names the sidepanel to assistive technology. */\n protected readonly titleId = `${this.sidepanelRef.id}-title`;\n\n constructor() {\n this.sidepanelRef.containerInstance.setAriaLabelledBy(this.titleId);\n }\n}\n\n/**\n * Scrollable content container of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody',\n host: {\n class: 'kbq-sidepanel-body'\n },\n hostDirectives: [KbqOverflowShadowContainer, KbqScrollbarViewport]\n})\nexport class KbqSidepanelBody {\n private readonly sidepanelRef = inject(KbqSidepanelRef);\n private readonly overflowContainer = inject(KbqOverflowShadowContainer);\n private readonly scrollbarViewport = inject(KbqScrollbarViewport);\n\n constructor() {\n effect(() => this.sidepanelRef.bodyOverflow.set(this.overflowContainer.overflow()));\n\n this.sidepanelRef\n .afterOpened()\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.scrollbarViewport.flashScrollIndicators());\n }\n}\n\n/**\n * Footer of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter',\n host: {\n class: 'kbq-sidepanel-footer',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null'\n }\n})\nexport class KbqSidepanelFooter {\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Actions block of a sidepanel footer.\n */\n@Directive({\n selector: 'kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions',\n host: {\n class: 'kbq-sidepanel-actions'\n }\n})\nexport class KbqSidepanelActions {}\n","import { Overlay, OverlayConfig, OverlayContainer, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n TemplateRef,\n inject,\n isDevMode,\n untracked\n} from '@angular/core';\nimport { KBQ_STATE_STORE, KbqStateSavingRef, KbqStateSavingService, KbqStateStore } from '@koobiq/components/core';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KBQ_SIDEPANEL_DATA, KbqSidepanelConfig } from './sidepanel-config';\nimport { KBQ_SIDEPANEL_WITH_INDENT, KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport { KbqSidepanelRef } from './sidepanel-ref';\n\n/** Injection token that can be used to specify default sidepanel options. */\nexport const KBQ_SIDEPANEL_DEFAULT_OPTIONS = new InjectionToken<KbqSidepanelConfig>('kbq-sidepanel-default-options');\n\n/** The persisted state of a sidepanel — whether it was open. */\nexport interface KbqSidepanelState {\n opened: boolean;\n}\n\n/**\n * Coerces a raw persisted payload into a `KbqSidepanelState`, returning `null` for anything\n * unrecognizable.\n *\n * Web storage is origin-wide and user-writable, so a payload is never trusted — without this, a\n * hand-edited entry would decide whether a sidepanel opens.\n */\nconst normalizeSidepanelState = (parsed: unknown): KbqSidepanelState | null => {\n const opened = (parsed as Partial<KbqSidepanelState> | null)?.opened;\n\n return typeof opened === 'boolean' ? { opened } : null;\n};\n\n/**\n * What `KbqStateSavingService` reports for one persisted sidepanel key.\n *\n * The five components that persist register themselves, and a sidepanel has nothing to register: it is\n * closed exactly when its entry matters, and while open it lives in an overlay with no stable position\n * to be identified by. So the service stands in for it, and `host` stays `null`.\n */\nclass KbqSidepanelStateSavingRef implements KbqStateSavingRef {\n readonly name = 'kbq-sidepanel';\n readonly host = null;\n\n /** Persistence is opted into by supplying a `stateSavingKey`, so a tracked key is always enabled. */\n readonly enabled = true;\n\n state: unknown = null;\n\n constructor(\n readonly key: string,\n private readonly store: KbqStateStore\n ) {}\n\n clear(): void {\n this.store.removeState(this.key);\n this.state = null;\n }\n}\n\n/** Context of a sidepanel opened from a `TemplateRef`. */\ntype KbqSidepanelTemplateContext<T, D> = {\n $implicit: D | null | undefined;\n sidepanelRef: KbqSidepanelRef<T>;\n};\n\n/** Copies the entries that carry a value, so an unset optional does not overwrite a default with `undefined`. */\nconst assignDefined = <T extends object>(target: T, source: T | null | undefined): void => {\n if (!source) return;\n\n for (const key of Object.keys(source) as (keyof T)[]) {\n if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class KbqSidepanelService implements OnDestroy {\n private overlay = inject(Overlay);\n private overlayContainer = inject(OverlayContainer);\n private injector = inject(Injector);\n private defaultOptions = inject<KbqSidepanelConfig>(KBQ_SIDEPANEL_DEFAULT_OPTIONS, { optional: true });\n private parentSidepanelService = inject(KbqSidepanelService, { optional: true, skipSelf: true });\n\n /** Sidepanels opened through this very instance, closed when this injector level is destroyed. */\n private readonly openedSidepanelsAtThisLevel: KbqSidepanelRef[] = [];\n\n /** The shared stack. Only the root-most instance ever holds it; the rest reach it through the getter. */\n private readonly rootOpenedSidepanels: KbqSidepanelRef[] = [];\n\n /** Sidepanels that hid the rest of the page from assistive technology when they opened. */\n private readonly modalSidepanels = new Set<KbqSidepanelRef>();\n\n /** Elements outside the overlay container that were hidden from assistive technology, and their previous state. */\n private readonly ariaHiddenElements = new Map<Element, string | null>();\n\n private readonly stateStore = inject(KBQ_STATE_STORE);\n private readonly stateSavingService = inject(KbqStateSavingService);\n\n /**\n * One entry per `stateSavingKey` this service has seen, so `KbqStateSavingService` reports what is\n * stored as claimed. Without it a closed sidepanel's entry has nothing live behind it, and\n * `clearOrphans()` would sweep away exactly what the next visit is meant to restore.\n */\n private readonly stateSavingRefs = new Map<string, KbqSidepanelStateSavingRef>();\n\n private readonly bulkClosedAtThisLevel = new WeakSet<KbqSidepanelRef>();\n\n /** Keeps track of the currently-open sidepanels. */\n get openedSidepanels(): KbqSidepanelRef[] {\n return this.parentSidepanelService ? this.parentSidepanelService.openedSidepanels : this.rootOpenedSidepanels;\n }\n\n /** The instance holding the shared stack and the assistive-technology bookkeeping. */\n private get rootService(): KbqSidepanelService {\n return this.parentSidepanelService?.rootService ?? this;\n }\n\n /**\n * The sidepanels being closed as a group rather than one at a time, whose close is not recorded.\n *\n * Shared up the chain like `openedSidepanels`: `closeAll()` reaches panels another instance opened,\n * and it is that instance's subscription that would record the close.\n */\n private get bulkClosed(): WeakSet<KbqSidepanelRef> {\n return this.parentSidepanelService ? this.parentSidepanelService.bulkClosed : this.bulkClosedAtThisLevel;\n }\n\n ngOnDestroy() {\n // Only close the sidepanels opened at this level on destroy,\n // since the parent service may still be active.\n this.closeSidepanels(this.openedSidepanelsAtThisLevel);\n\n // The bookkeeping is shared, so only the instance that owns it may drop it: a child level going\n // away must not reveal the page under a modal sidepanel opened somewhere else.\n if (this.rootService === this) {\n this.restoreContentForAssistiveTechnology();\n }\n\n this.stateSavingRefs.forEach((ref) => this.stateSavingService.unregister(ref));\n this.stateSavingRefs.clear();\n }\n\n open<T, D = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: KbqSidepanelConfig<D>\n ): KbqSidepanelRef<T> {\n // Untracked, as `KbqSidepanelRef.close()`: called from a consumer's `effect()`, the state of the sidepanels\n // already open, read and written on the way, would make the effect run again — and open another sidepanel —\n // as soon as it changes.\n return untracked(() => this.openSidepanel(componentOrTemplateRef, config));\n }\n\n /** Body of `open()`. */\n private openSidepanel<T, D>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config: KbqSidepanelConfig<D> | undefined\n ): KbqSidepanelRef<T> {\n const fullConfig = new KbqSidepanelConfig<D>();\n\n assignDefined(fullConfig, this.defaultOptions);\n assignDefined(fullConfig, config);\n\n if (fullConfig.id && this.getSidepanelById(fullConfig.id)) {\n throw Error(`Sidepanel with id \"${fullConfig.id}\" exists already. The sidepanel id must be unique.`);\n }\n\n if (isDevMode() && fullConfig.stateSavingKey && this.isStateSavingKeyInUse(fullConfig.stateSavingKey)) {\n // eslint-disable-next-line no-console\n console.warn(\n `kbq-sidepanel: another open sidepanel already persists under the state saving key ` +\n `\"${fullConfig.stateSavingKey}\". They share one entry, so closing either records the ` +\n 'panel as closed. Give each one its own key.'\n );\n }\n\n const overlayRef = this.createOverlay(fullConfig);\n const container = this.attachContainer(overlayRef, fullConfig);\n const ref = new KbqSidepanelRef<T>(container, overlayRef, fullConfig);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(\n new TemplatePortal<KbqSidepanelTemplateContext<T, D>>(\n componentOrTemplateRef as TemplateRef<KbqSidepanelTemplateContext<T, D>>,\n null!,\n { $implicit: fullConfig.data, sidepanelRef: ref },\n this.createInjector(fullConfig, ref, container)\n )\n );\n } else {\n const portal = new ComponentPortal(\n componentOrTemplateRef,\n undefined,\n this.createInjector(fullConfig, ref, container)\n );\n const contentRef = container.attachComponentPortal(portal);\n\n ref.instance = contentRef.instance;\n }\n\n this.openedSidepanels.push(ref);\n this.openedSidepanelsAtThisLevel.push(ref);\n // The panel that was on top until now has to give the strip up, or the stack shows one per level.\n this.updateIndents(fullConfig);\n\n if (container.trapFocus) {\n this.rootService.hideContentFromAssistiveTechnology(ref);\n }\n\n ref.beforeClosed().subscribe(() => this.updateAnimationState(ref));\n ref.afterClosed().subscribe(() => {\n this.removeOpenSidepanel(ref);\n\n // A group close is the owner going away rather than a decision to close this panel, and\n // keeping the flag is what lets the next visit bring the panel back.\n if (!this.bulkClosed.has(ref)) {\n this.writeState(fullConfig.stateSavingKey, false);\n }\n });\n\n this.writeState(fullConfig.stateSavingKey, true);\n\n container.enter();\n\n return ref;\n }\n\n /**\n * Closes all of the currently-open sidepanels.\n *\n * Closing as a group is not recorded — see `wasOpen()`.\n */\n closeAll(): void {\n this.closeSidepanels(this.openedSidepanels);\n }\n\n /**\n * Whether the sidepanel persisted under `key` was open when it was last recorded, so the\n * application can open it again:\n *\n * ```ts\n * if (sidepanel.wasOpen('filters')) this.openFilters();\n * ```\n *\n * A sidepanel cannot restore itself the way the components that persist do. It exists only while it\n * is open, so at the point the state would be read there is nothing left to read it — and what to\n * reopen is a component class or a `TemplateRef` and its `data`, none of which survives being\n * written to storage. This service keeps the flag; the application keeps the rest.\n *\n * What is recorded is a sidepanel opened and closed on its own. Closing a group — `closeAll()`, or\n * this service being destroyed — leaves the flag alone, so a panel that was open when the page went\n * away comes back whether the page was reloaded or navigated away from.\n *\n * Reading claims the key: from here on `KbqStateSavingService` reports the entry as this service's\n * rather than orphaned. It has to happen on read, because for a sidepanel that is not open this is\n * the only call there is.\n */\n wasOpen(key: string): boolean {\n if (!key || !this.stateSavingService.isEnabled()) return false;\n\n const state = normalizeSidepanelState(this.stateStore.getState(key));\n\n this.trackState(key, state);\n\n return state?.opened ?? false;\n }\n\n /**\n * Removes what is persisted under `key`.\n *\n * Persistence itself stays on: a sidepanel opened under that key again is recorded again.\n */\n clearSavedState(key: string): void {\n if (!key) return;\n\n this.stateStore.removeState(key);\n this.stateSavingRefs.get(key)?.clear();\n this.stateSavingService.notify();\n }\n\n /**\n * Finds an open sidepanel by its id.\n *\n * @param id ID to use when looking up the sidepanel.\n */\n getSidepanelById(id: string): KbqSidepanelRef | undefined {\n return this.openedSidepanels.find((sidepanel) => sidepanel.id === id);\n }\n\n /**\n * Attaches the sidepanel container component to the overlay.\n */\n private attachContainer(overlayRef: OverlayRef, config: KbqSidepanelConfig): KbqSidepanelContainerComponent {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(config);\n\n const lower = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 1];\n const bottom = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2];\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Lower);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.BottomPanel);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: KbqSidepanelConfig, useValue: config },\n { provide: KBQ_SIDEPANEL_WITH_INDENT, useValue: openedSidepanelsWithSamePosition.length >= 1 }\n ]\n });\n\n const containerPortal = new ComponentPortal(KbqSidepanelContainerComponent, undefined, injector);\n const containerRef: ComponentRef<KbqSidepanelContainerComponent> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates a custom injector to be used inside the sidepanel. This allows a component loaded inside\n * of a sidepanel to close itself and, optionally, to return a value.\n *\n * @param config Config object that is used to construct the sidepanel.\n * @param sidepanelRef Reference to the sidepanel.\n * @param sidepanelContainer Sidepanel container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the sidepanel.\n */\n private createInjector<T>(\n config: KbqSidepanelConfig,\n sidepanelRef: KbqSidepanelRef<T>,\n sidepanelContainer: KbqSidepanelContainerComponent\n ): Injector {\n // The KbqSidepanelContainerComponent is injected in the portal as the KbqSidepanelContainerComponent and\n // the sidepanel's content are created out of the same ViewContainerRef and as such, are siblings for injector\n // purposes. To allow the hierarchy that is expected, the KbqSidepanelContainerComponent is explicitly\n // added to the injection tokens.\n\n return Injector.create({\n parent: config.injector ?? this.injector,\n providers: [\n { provide: KbqSidepanelContainerComponent, useValue: sidepanelContainer },\n { provide: KBQ_SIDEPANEL_DATA, useValue: config.data },\n { provide: KbqSidepanelRef, useValue: sidepanelRef }\n ]\n });\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n *\n * @param config The user-specified sidepanel config.\n */\n private createOverlay(config: KbqSidepanelConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: config.hasBackdrop,\n backdropClass: '',\n maxWidth: '100%',\n panelClass: config.overlayPanelClass,\n scrollStrategy: this.resolveScrollStrategy(config),\n positionStrategy: this.overlay.position().global()\n });\n\n return this.overlay.create(overlayConfig);\n }\n\n /**\n * `block()` pins the document with `position: fixed`, which is exactly what the non-modal mode\n * promises not to do, so only a backdropped sidepanel gets it.\n */\n private resolveScrollStrategy(config: KbqSidepanelConfig): ScrollStrategy {\n if (config.scrollStrategy) return config.scrollStrategy();\n\n return config.hasBackdrop ? this.overlay.scrollStrategies.block() : this.overlay.scrollStrategies.reposition();\n }\n\n /**\n * `BlockScrollStrategy` refuses to engage while the page is already blocked, so in a stack the block\n * belongs to the bottom-most backdropped sidepanel and has to be handed over when that one closes.\n *\n * @param closedIndex Index the closed sidepanel held in the stack, before it was removed.\n */\n private restoreScrollBlock(closedConfig: KbqSidepanelConfig, closedIndex: number) {\n if (!closedConfig.hasBackdrop) return;\n\n const ownerIndex = this.openedSidepanels.findIndex(({ config }) => config.hasBackdrop);\n\n // A backdropped sidepanel that was already below the closed one still holds the block. Re-applying\n // the strategy there would release and re-take the page, scrolling it twice for nothing.\n if (ownerIndex === -1 || ownerIndex < closedIndex) return;\n\n const owner = this.openedSidepanels[ownerIndex];\n\n owner.overlayRef.updateScrollStrategy(this.resolveScrollStrategy(owner.config));\n }\n\n private closeSidepanels(sidepanels: KbqSidepanelRef[]) {\n // `reverse()` mutates, and this is called with the live stack.\n [...sidepanels].reverse().forEach((sidepanelRef: KbqSidepanelRef) => {\n // Marked before closing rather than around the loop: `afterClosed()` only fires once the exit\n // animation is done, by which time a flag held for the duration of this call would be gone.\n this.bulkClosed.add(sidepanelRef);\n\n sidepanelRef.close();\n });\n }\n\n /** Whether an already-open sidepanel persists under this key. */\n private isStateSavingKeyInUse(key: string): boolean {\n return this.openedSidepanels.some((ref) => ref.config.stateSavingKey === key);\n }\n\n /** Records whether the sidepanel persisting under `key` is open. A sidepanel without a key is not. */\n private writeState(key: string | undefined, opened: boolean): void {\n if (!key || !this.stateSavingService.isEnabled()) return;\n\n const state: KbqSidepanelState = { opened };\n\n this.stateStore.setState(key, state);\n this.trackState(key, state);\n\n // The write does not go through `KbqStateSavingService`, so it would otherwise go unreported.\n this.stateSavingService.notify();\n }\n\n /** Reports the key to `KbqStateSavingService`, registering it the first time it is seen. */\n private trackState(key: string, state: KbqSidepanelState | null): void {\n let ref = this.stateSavingRefs.get(key);\n\n if (!ref) {\n ref = new KbqSidepanelStateSavingRef(key, this.stateStore);\n\n this.stateSavingRefs.set(key, ref);\n this.stateSavingService.register(ref);\n }\n\n ref.state = state;\n }\n\n private getOpenedSidepanelsWithSamePosition(config: KbqSidepanelConfig): KbqSidepanelRef[] {\n return this.openedSidepanels.filter((sidepanelRef) => sidepanelRef.config.position === config.position);\n }\n\n private updateAnimationState(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n // only allow animations if ref is last element in sidepanels list\n if (index === -1 || index !== this.openedSidepanels.length - 1) return;\n\n const [lower, bottom] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.BecomingNormal);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.Lower);\n }\n\n /**\n * Moves a sidepanel into `state`, unless it is closing already.\n *\n * The exit animation is what disposes the overlay, so interrupting it with another state leaves the\n * sidepanel in the DOM and in `openedSidepanels` for good — which is what closing a stack of them as\n * a group used to do to the panels underneath.\n */\n private setAnimationState(sidepanelRef: KbqSidepanelRef | undefined, state: KbqSidepanelAnimationState): void {\n const containerInstance = sidepanelRef?.containerInstance;\n\n if (!containerInstance || containerInstance.animationState() === KbqSidepanelAnimationState.Hidden) return;\n\n containerInstance.setAnimationState(state);\n }\n\n /**\n * Removes a sidepanel from the array of open sidepanels.\n *\n * @param sidepanelRef Sidepanel to be removed.\n */\n private removeOpenSidepanel(sidepanelRef: KbqSidepanelRef) {\n const levelIndex = this.openedSidepanelsAtThisLevel.indexOf(sidepanelRef);\n\n if (levelIndex > -1) {\n this.openedSidepanelsAtThisLevel.splice(levelIndex, 1);\n }\n\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n if (index > -1) {\n const [lower] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Visible);\n\n this.openedSidepanels.splice(index, 1);\n this.updateIndents(sidepanelRef.config);\n this.restoreScrollBlock(sidepanelRef.config, index);\n }\n\n this.rootService.revealContentForAssistiveTechnology(sidepanelRef);\n }\n\n /**\n * Only the top sidepanel of a position stack carries the indent, however deep the stack is — the strip\n * is what reveals the panel underneath, and one per level is the visual noise the docs rule out.\n *\n * The flag belongs to the stack rather than to the panel that had one when it opened, so it is\n * recomputed on both ends: opening demotes the panel that was on top, and closing a *lower* sidepanel\n * would otherwise leave the top one exposing a strip of a panel that is no longer there.\n */\n private updateIndents(config: KbqSidepanelConfig) {\n const stack = this.getOpenedSidepanelsWithSamePosition(config);\n\n stack.forEach((sidepanelRef, index) =>\n sidepanelRef.containerInstance.setWithIndent(stack.length > 1 && index === stack.length - 1)\n );\n }\n\n /**\n * A focus trap constrains Tab, not the virtual cursor, so everything outside the overlay stays\n * reachable to a screen reader while a modal sidepanel is open unless it is hidden explicitly.\n */\n private hideContentFromAssistiveTechnology(sidepanelRef: KbqSidepanelRef) {\n const firstModal = this.modalSidepanels.size === 0;\n\n this.modalSidepanels.add(sidepanelRef);\n\n if (!firstModal) return;\n\n const overlayContainerElement = this.overlayContainer.getContainerElement();\n const siblings = overlayContainerElement.parentElement?.children;\n\n if (!siblings) return;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n const sibling = siblings[i];\n\n if (\n sibling === overlayContainerElement ||\n sibling.nodeName === 'SCRIPT' ||\n sibling.nodeName === 'STYLE' ||\n sibling.hasAttribute('aria-live')\n ) {\n continue;\n }\n\n this.ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n\n private revealContentForAssistiveTechnology(sidepanelRef: KbqSidepanelRef) {\n this.modalSidepanels.delete(sidepanelRef);\n\n if (this.modalSidepanels.size === 0) {\n this.restoreContentForAssistiveTechnology();\n }\n }\n\n private restoreContentForAssistiveTechnology() {\n this.ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue === null) {\n element.removeAttribute('aria-hidden');\n } else {\n element.setAttribute('aria-hidden', previousValue);\n }\n });\n\n this.ariaHiddenElements.clear();\n this.modalSidepanels.clear();\n }\n\n private getLowerSidepanelsWithSamePosition(index: number): KbqSidepanelRef[] {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(\n this.openedSidepanels[index].config\n );\n\n return [\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2],\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 3]\n ];\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport {\n KbqSidepanelActions,\n KbqSidepanelBody,\n KbqSidepanelClose,\n KbqSidepanelFooter,\n KbqSidepanelHeader\n} from './sidepanel-directives';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n A11yModule,\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ],\n providers: [KbqSidepanelService],\n exports: [\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ]\n})\nexport class KbqSidepanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}