@koobiq/components 20.4.1 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (771) hide show
  1. package/accordion/accordion-trigger.scss +3 -10
  2. package/accordion/accordion.scss +4 -6
  3. package/actions-panel/actions-panel-container.scss +45 -1
  4. package/alert/alert.component.scss +3 -2
  5. package/app-switcher/_app-switcher-theme.scss +0 -4
  6. package/app-switcher/app-switcher-dropdown-app.scss +3 -2
  7. package/app-switcher/app-switcher-dropdown-site.scss +2 -1
  8. package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
  9. package/app-switcher/app-switcher-tokens.scss +15 -0
  10. package/app-switcher/app-switcher.scss +14 -4
  11. package/autocomplete/autocomplete.scss +7 -6
  12. package/badge/badge.component.scss +5 -8
  13. package/breadcrumbs/breadcrumbs.scss +25 -10
  14. package/button/_button-base.scss +30 -7
  15. package/button/_button-theme.scss +16 -0
  16. package/button/button-group.scss +7 -0
  17. package/button/button-tokens.scss +0 -2
  18. package/button/button.scss +34 -2
  19. package/button-toggle/_button-toggle-theme.scss +7 -2
  20. package/button-toggle/button-toggle.scss +65 -15
  21. package/checkbox/_checkbox-theme.scss +4 -3
  22. package/checkbox/checkbox.scss +3 -6
  23. package/clamped-text/clamped-text.scss +6 -2
  24. package/code-block/code-block-tokens.scss +0 -224
  25. package/code-block/code-block.scss +20 -9
  26. package/content-panel/content-panel-aside.scss +3 -2
  27. package/content-panel/content-panel-container.scss +37 -0
  28. package/content-panel/content-panel.scss +4 -3
  29. package/core/highlight/_highlight-theme.scss +3 -1
  30. package/core/option/action-container.scss +2 -2
  31. package/core/option/action.scss +2 -1
  32. package/core/option/option.scss +2 -1
  33. package/core/pop-up/_pop-up.scss +0 -37
  34. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
  35. package/core/styles/_core.scss +3 -0
  36. package/core/styles/_koobiq-theme.scss +5 -6
  37. package/core/styles/common/_animation.scss +44 -16
  38. package/core/styles/common/_groups-mixins.scss +21 -19
  39. package/core/styles/common/_groups.scss +4 -32
  40. package/core/styles/common/_index.scss +0 -2
  41. package/core/styles/common/_link.scss +117 -0
  42. package/core/styles/common/_list.scss +0 -26
  43. package/core/styles/common/_overlay.scss +8 -10
  44. package/core/styles/common/_rtl.scss +0 -14
  45. package/core/styles/common/_select.scss +33 -15
  46. package/core/styles/common/_squircle.scss +63 -0
  47. package/core/styles/common/_tokens.scss +0 -11
  48. package/core/styles/common/_vendor-prefixes.scss +0 -20
  49. package/core/styles/functions/_timing.scss +0 -22
  50. package/core/styles/theming/_scrollbar-theme.scss +6 -1
  51. package/core/styles/theming/_theming.scss +13 -65
  52. package/core/styles/typography/_index.scss +0 -1
  53. package/core/styles/typography/_typography.scss +0 -143
  54. package/core/styles/visual/_body.scss +1 -6
  55. package/core/styles/visual/_layout.scss +0 -12
  56. package/datepicker/calendar-body.scss +3 -1
  57. package/datepicker/calendar-header.scss +0 -1
  58. package/datepicker/datepicker-content.scss +33 -1
  59. package/datepicker/datepicker-toggle.scss +0 -38
  60. package/dl/dl-tokens.scss +10 -0
  61. package/dl/dl.scss +113 -13
  62. package/dropdown/_dropdown-theme.scss +4 -16
  63. package/dropdown/dropdown-item.scss +4 -10
  64. package/dropdown/dropdown.scss +2 -1
  65. package/empty-state/_empty-state-theme.scss +10 -4
  66. package/empty-state/empty-state-tokens.scss +4 -4
  67. package/empty-state/empty-state.scss +4 -0
  68. package/fesm2022/koobiq-components-accordion.mjs +347 -229
  69. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
  71. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-alert.mjs +39 -39
  73. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
  75. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
  77. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-badge.mjs +46 -48
  79. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
  81. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
  83. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-button.mjs +332 -116
  85. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-checkbox.mjs +172 -132
  87. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
  89. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-code-block.mjs +755 -601
  91. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-content-panel.mjs +260 -143
  93. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-core.mjs +4342 -1595
  95. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
  97. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-divider.mjs +73 -36
  99. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-dl.mjs +447 -89
  101. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-dropdown.mjs +703 -599
  103. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
  105. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
  107. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-empty-state.mjs +116 -60
  109. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-file-upload.mjs +550 -290
  111. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-filter-bar.mjs +2810 -2538
  113. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-flag.mjs +79 -24
  115. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-form-field.mjs +389 -525
  117. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-icon.mjs +366 -136
  119. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
  121. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-input.mjs +601 -459
  123. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
  125. package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
  126. package/fesm2022/koobiq-components-link.mjs +328 -125
  127. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-list.mjs +583 -433
  129. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
  131. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-markdown.mjs +55 -78
  133. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-modal.mjs +853 -475
  135. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-navbar.mjs +895 -556
  137. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-notification-center.mjs +680 -310
  139. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
  141. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-popover.mjs +684 -285
  143. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
  145. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
  147. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-radio.mjs +450 -231
  149. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-resizer.mjs +127 -21
  151. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
  153. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
  154. package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
  155. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
  157. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-select.mjs +883 -693
  159. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-sidebar.mjs +207 -88
  161. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
  163. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-skeleton.mjs +815 -41
  165. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-split-button.mjs +109 -88
  167. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
  169. package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
  170. package/fesm2022/koobiq-components-splitter.mjs +890 -501
  171. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-table.mjs +63 -49
  173. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-tabs.mjs +1062 -603
  175. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-tags.mjs +886 -733
  177. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-textarea.mjs +213 -185
  179. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-time-range.mjs +299 -147
  181. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-timepicker.mjs +233 -245
  183. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-timezone.mjs +344 -142
  185. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-title.mjs +229 -145
  187. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-toast.mjs +486 -165
  189. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-toggle.mjs +177 -130
  191. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-tooltip.mjs +657 -214
  193. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-top-bar.mjs +61 -32
  195. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-tree-select.mjs +719 -488
  197. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-tree.mjs +1506 -558
  199. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-username.mjs +290 -135
  201. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  202. package/file-upload/dropzone.scss +31 -3
  203. package/file-upload/file-upload-tokens.scss +2 -22
  204. package/file-upload/file-upload.scss +6 -0
  205. package/file-upload/multiple-file-upload.component.scss +14 -12
  206. package/file-upload/single-file-upload.component.scss +3 -2
  207. package/filter-bar/filters.scss +7 -0
  208. package/filter-bar/pipes/base-pipe.scss +3 -3
  209. package/filter-bar/pipes/pipe-date.scss +8 -1
  210. package/flag/flag-tokens.scss +22 -0
  211. package/flag/flag.scss +34 -21
  212. package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
  213. package/form-field/_form-field-theme.scss +4 -9
  214. package/form-field/cleaner.scss +3 -1
  215. package/form-field/fieldset.scss +3 -4
  216. package/form-field/form-field.scss +26 -21
  217. package/form-field/password-toggle.scss +3 -1
  218. package/icon/_icon-button-theme.scss +7 -0
  219. package/icon/_icon-theme.scss +10 -7
  220. package/icon/icon-button.scss +0 -2
  221. package/icon/icon-tokens.scss +12 -9
  222. package/inline-edit/inline-edit.scss +40 -54
  223. package/input/input.scss +4 -0
  224. package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
  225. package/link/deprecated/link-tokens.scss +27 -0
  226. package/link/link-tokens.scss +6 -25
  227. package/link/link.scss +137 -0
  228. package/list/list.scss +3 -2
  229. package/loader-overlay/_loader-overlay-theme.scss +19 -10
  230. package/loader-overlay/loader-overlay-tokens.scss +0 -2
  231. package/loader-overlay/loader-overlay.scss +7 -1
  232. package/markdown/_markdown-theme.scss +16 -0
  233. package/markdown/markdown-tokens.scss +5 -0
  234. package/markdown/markdown.scss +2 -1
  235. package/modal/_modal-animation.scss +23 -14
  236. package/modal/modal-tokens.scss +2 -1
  237. package/modal/modal.scss +35 -31
  238. package/navbar/_navbar-item_horizontal.scss +8 -6
  239. package/navbar/_navbar-item_vertical.scss +18 -6
  240. package/navbar/_navbar-theme.scss +9 -1
  241. package/navbar/navbar-brand.scss +8 -6
  242. package/navbar/navbar-divider.scss +1 -1
  243. package/navbar/navbar-item.scss +8 -9
  244. package/navbar/navbar-toggle.scss +3 -3
  245. package/navbar/navbar-tokens.scss +14 -0
  246. package/navbar/navbar.scss +1 -2
  247. package/navbar/vertical-navbar.scss +2 -2
  248. package/notification-center/_notification-center-theme.scss +11 -6
  249. package/notification-center/notification-center-tokens.scss +33 -0
  250. package/notification-center/notification-center.scss +58 -20
  251. package/notification-center/notification-item.scss +15 -6
  252. package/package.json +112 -81
  253. package/popover/popover-tokens.scss +0 -2
  254. package/popover/popover.scss +41 -19
  255. package/prebuilt-themes/theme.css +1 -1
  256. package/progress-bar/_progress-bar-theme.scss +20 -3
  257. package/progress-bar/progress-bar-tokens.scss +3 -0
  258. package/progress-bar/progress-bar.scss +36 -8
  259. package/progress-spinner/progress-spinner.scss +4 -3
  260. package/radio/_radio-theme.scss +21 -4
  261. package/radio/radio-tokens.scss +7 -3
  262. package/radio/radio.scss +55 -8
  263. package/schematics/collection.json +399 -7
  264. package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
  265. package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
  266. package/schematics/migrations/accordion-state-saving-default/index.js +60 -0
  267. package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
  268. package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
  269. package/schematics/migrations/actions-panel-overlay-container/data.js +47 -0
  270. package/schematics/migrations/actions-panel-overlay-container/index.js +54 -0
  271. package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
  272. package/schematics/migrations/alert-signals/README.md +13 -7
  273. package/schematics/migrations/alert-signals/data.js +3 -0
  274. package/schematics/migrations/alert-signals/index.js +70 -203
  275. package/schematics/migrations/angular-animations-removal/README.md +46 -0
  276. package/schematics/migrations/angular-animations-removal/data.js +150 -0
  277. package/schematics/migrations/angular-animations-removal/index.js +20 -0
  278. package/schematics/migrations/angular-animations-removal/schema.json +15 -0
  279. package/schematics/migrations/app-switcher-signals/README.md +88 -0
  280. package/schematics/migrations/app-switcher-signals/data.js +136 -0
  281. package/schematics/migrations/app-switcher-signals/index.js +365 -0
  282. package/schematics/migrations/app-switcher-signals/schema.json +20 -0
  283. package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
  284. package/schematics/migrations/autocomplete-panel-width-auto/index.js +1 -1
  285. package/schematics/migrations/autocomplete-signals/README.md +92 -0
  286. package/schematics/migrations/autocomplete-signals/data.js +149 -0
  287. package/schematics/migrations/autocomplete-signals/index.js +706 -0
  288. package/schematics/migrations/autocomplete-signals/schema.json +20 -0
  289. package/schematics/migrations/badge-signals/README.md +77 -0
  290. package/schematics/migrations/badge-signals/data.js +109 -0
  291. package/schematics/migrations/badge-signals/index.js +693 -0
  292. package/schematics/migrations/badge-signals/schema.json +20 -0
  293. package/schematics/migrations/button-state-and-styles/README.md +129 -0
  294. package/schematics/migrations/button-state-and-styles/data.js +136 -0
  295. package/schematics/migrations/button-state-and-styles/index.js +220 -0
  296. package/schematics/migrations/button-state-and-styles/schema.json +20 -0
  297. package/schematics/migrations/button-supported-colors/README.md +73 -0
  298. package/schematics/migrations/button-supported-colors/data.js +106 -0
  299. package/schematics/migrations/button-supported-colors/index.js +260 -0
  300. package/schematics/migrations/button-supported-colors/schema.json +20 -0
  301. package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
  302. package/schematics/migrations/button-toggle-signals-and-aria/data.js +200 -0
  303. package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -0
  304. package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
  305. package/schematics/migrations/button-truncation/README.md +110 -0
  306. package/schematics/migrations/button-truncation/data.js +88 -0
  307. package/schematics/migrations/button-truncation/index.js +269 -0
  308. package/schematics/migrations/button-truncation/schema.json +20 -0
  309. package/schematics/migrations/checkbox-signals/README.md +76 -0
  310. package/schematics/migrations/checkbox-signals/data.js +114 -0
  311. package/schematics/migrations/checkbox-signals/index.js +634 -0
  312. package/schematics/migrations/checkbox-signals/schema.json +20 -0
  313. package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
  314. package/schematics/migrations/clamped-text-disclosure/data.js +101 -0
  315. package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
  316. package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
  317. package/schematics/migrations/code-block-signals/README.md +84 -0
  318. package/schematics/migrations/code-block-signals/data.js +121 -0
  319. package/schematics/migrations/code-block-signals/index.js +700 -0
  320. package/schematics/migrations/code-block-signals/schema.json +20 -0
  321. package/schematics/migrations/color-signals/README.md +46 -0
  322. package/schematics/migrations/color-signals/data.js +131 -0
  323. package/schematics/migrations/color-signals/index.js +19 -0
  324. package/schematics/migrations/color-signals/schema.json +20 -0
  325. package/schematics/migrations/core-mixins-removal/README.md +20 -0
  326. package/schematics/migrations/core-mixins-removal/data.js +27 -0
  327. package/schematics/migrations/core-mixins-removal/index.js +17 -0
  328. package/schematics/migrations/core-mixins-removal/schema.json +15 -0
  329. package/schematics/migrations/css-selectors/README.md +2 -2
  330. package/schematics/migrations/css-selectors/index.js +1 -1
  331. package/schematics/migrations/datepicker-signals/README.md +24 -0
  332. package/schematics/migrations/datepicker-signals/data.js +49 -0
  333. package/schematics/migrations/datepicker-signals/index.js +17 -0
  334. package/schematics/migrations/datepicker-signals/schema.json +15 -0
  335. package/schematics/migrations/deprecated-icons/README.md +2 -2
  336. package/schematics/migrations/deprecated-icons/index.js +1 -1
  337. package/schematics/migrations/design-tokens-v4/README.md +75 -0
  338. package/schematics/migrations/design-tokens-v4/index.js +59 -0
  339. package/schematics/migrations/design-tokens-v4/schema.json +15 -0
  340. package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
  341. package/schematics/migrations/divider-signals-and-aria/data.js +62 -0
  342. package/schematics/migrations/divider-signals-and-aria/index.js +211 -0
  343. package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
  344. package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
  345. package/schematics/migrations/dl-attribute-coercion/data.js +85 -0
  346. package/schematics/migrations/dl-attribute-coercion/index.js +161 -0
  347. package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
  348. package/schematics/migrations/dl-standalone-names/README.md +49 -0
  349. package/schematics/migrations/dl-standalone-names/data.js +44 -0
  350. package/schematics/migrations/dl-standalone-names/index.js +321 -0
  351. package/schematics/migrations/dl-standalone-names/schema.json +20 -0
  352. package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
  353. package/schematics/migrations/dropdown-demote-overlay/data.js +84 -0
  354. package/schematics/migrations/dropdown-demote-overlay/index.js +288 -0
  355. package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
  356. package/schematics/migrations/dropdown-signals/README.md +83 -0
  357. package/schematics/migrations/dropdown-signals/data.js +152 -0
  358. package/schematics/migrations/dropdown-signals/index.js +19 -0
  359. package/schematics/migrations/dropdown-signals/schema.json +20 -0
  360. package/schematics/migrations/empty-state-error-color/README.md +84 -0
  361. package/schematics/migrations/empty-state-error-color/data.js +85 -0
  362. package/schematics/migrations/empty-state-error-color/index.js +71 -0
  363. package/schematics/migrations/empty-state-error-color/schema.json +15 -0
  364. package/schematics/migrations/empty-state-size-attr/README.md +2 -2
  365. package/schematics/migrations/empty-state-size-attr/index.js +1 -1
  366. package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
  367. package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
  368. package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -0
  369. package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
  370. package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
  371. package/schematics/migrations/file-upload-deprecated-outputs/data.js +20 -0
  372. package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -0
  373. package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
  374. package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
  375. package/schematics/migrations/filter-bar-rename-action/data.js +151 -0
  376. package/schematics/migrations/filter-bar-rename-action/index.js +177 -0
  377. package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
  378. package/schematics/migrations/filter-bar-signals/README.md +27 -16
  379. package/schematics/migrations/filter-bar-signals/data.js +1 -2
  380. package/schematics/migrations/filter-bar-signals/index.js +100 -195
  381. package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
  382. package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
  383. package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -0
  384. package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
  385. package/schematics/migrations/flag-inner-html/README.md +67 -0
  386. package/schematics/migrations/flag-inner-html/data.js +58 -0
  387. package/schematics/migrations/flag-inner-html/index.js +61 -0
  388. package/schematics/migrations/flag-inner-html/schema.json +15 -0
  389. package/schematics/migrations/form-field-signals/README.md +125 -0
  390. package/schematics/migrations/form-field-signals/data.js +288 -0
  391. package/schematics/migrations/form-field-signals/index.js +382 -0
  392. package/schematics/migrations/form-field-signals/schema.json +20 -0
  393. package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
  394. package/schematics/migrations/icon-semantics-and-api/data.js +97 -0
  395. package/schematics/migrations/icon-semantics-and-api/index.js +64 -0
  396. package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
  397. package/schematics/migrations/icons-replacement/README.md +5 -5
  398. package/schematics/migrations/icons-replacement/index.js +1 -1
  399. package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
  400. package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
  401. package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -0
  402. package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
  403. package/schematics/migrations/input-number-surface/README.md +140 -0
  404. package/schematics/migrations/input-number-surface/data.js +135 -0
  405. package/schematics/migrations/input-number-surface/index.js +292 -0
  406. package/schematics/migrations/input-number-surface/schema.json +20 -0
  407. package/schematics/migrations/input-signals/README.md +20 -0
  408. package/schematics/migrations/input-signals/data.js +30 -0
  409. package/schematics/migrations/input-signals/index.js +17 -0
  410. package/schematics/migrations/input-signals/schema.json +15 -0
  411. package/schematics/migrations/link-deprecated-path/README.md +144 -0
  412. package/schematics/migrations/link-deprecated-path/index.js +19 -0
  413. package/schematics/migrations/link-deprecated-path/schema.json +20 -0
  414. package/schematics/migrations/link-signals/README.md +71 -0
  415. package/schematics/migrations/link-signals/data.js +116 -0
  416. package/schematics/migrations/link-signals/index.js +415 -0
  417. package/schematics/migrations/link-signals/schema.json +20 -0
  418. package/schematics/migrations/list-signals/README.md +22 -0
  419. package/schematics/migrations/list-signals/data.js +35 -0
  420. package/schematics/migrations/list-signals/index.js +17 -0
  421. package/schematics/migrations/list-signals/schema.json +15 -0
  422. package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
  423. package/schematics/migrations/list-tree-multiple-input/data.js +74 -0
  424. package/schematics/migrations/list-tree-multiple-input/index.js +221 -0
  425. package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
  426. package/schematics/migrations/loader-overlay-signals/README.md +62 -0
  427. package/schematics/migrations/loader-overlay-signals/data.js +101 -0
  428. package/schematics/migrations/loader-overlay-signals/index.js +697 -0
  429. package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
  430. package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
  431. package/schematics/migrations/loader-overlay-size-attr/index.js +1 -1
  432. package/schematics/migrations/locale-configuration-providers/README.md +163 -0
  433. package/schematics/migrations/locale-configuration-providers/data.js +257 -0
  434. package/schematics/migrations/locale-configuration-providers/index.js +294 -0
  435. package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
  436. package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
  437. package/schematics/migrations/mandatory-peer-dependencies/index.js +42 -0
  438. package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
  439. package/schematics/migrations/markdown-signals/README.md +58 -0
  440. package/schematics/migrations/markdown-signals/data.js +79 -0
  441. package/schematics/migrations/markdown-signals/index.js +639 -0
  442. package/schematics/migrations/markdown-signals/schema.json +20 -0
  443. package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
  444. package/schematics/migrations/modal-dialog-semantics/data.js +110 -0
  445. package/schematics/migrations/modal-dialog-semantics/index.js +58 -0
  446. package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
  447. package/schematics/migrations/modal-signals/README.md +88 -0
  448. package/schematics/migrations/modal-signals/data.js +132 -0
  449. package/schematics/migrations/modal-signals/index.js +19 -0
  450. package/schematics/migrations/modal-signals/schema.json +20 -0
  451. package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
  452. package/schematics/migrations/navbar-signals-and-aria/data.js +198 -0
  453. package/schematics/migrations/navbar-signals-and-aria/index.js +568 -0
  454. package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
  455. package/schematics/migrations/new-icons-pack/README.md +10 -10
  456. package/schematics/migrations/new-icons-pack/index.js +1 -1
  457. package/schematics/migrations/notification-center-signals/README.md +67 -0
  458. package/schematics/migrations/notification-center-signals/data.js +66 -0
  459. package/schematics/migrations/notification-center-signals/index.js +61 -0
  460. package/schematics/migrations/notification-center-signals/schema.json +15 -0
  461. package/schematics/migrations/option-signals/README.md +37 -0
  462. package/schematics/migrations/option-signals/data.js +86 -0
  463. package/schematics/migrations/option-signals/index.js +19 -0
  464. package/schematics/migrations/option-signals/schema.json +20 -0
  465. package/schematics/migrations/popover-leave-delay/README.md +51 -0
  466. package/schematics/migrations/popover-leave-delay/data.js +61 -0
  467. package/schematics/migrations/popover-leave-delay/index.js +54 -0
  468. package/schematics/migrations/popover-leave-delay/schema.json +15 -0
  469. package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
  470. package/schematics/migrations/progress-bar-percentage-and-aria/data.js +76 -0
  471. package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -0
  472. package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
  473. package/schematics/migrations/progress-spinner-signals/README.md +72 -0
  474. package/schematics/migrations/progress-spinner-signals/data.js +83 -0
  475. package/schematics/migrations/progress-spinner-signals/index.js +694 -0
  476. package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
  477. package/schematics/migrations/query-list-signals/README.md +32 -0
  478. package/schematics/migrations/query-list-signals/data.js +70 -0
  479. package/schematics/migrations/query-list-signals/index.js +17 -0
  480. package/schematics/migrations/query-list-signals/schema.json +15 -0
  481. package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
  482. package/schematics/migrations/radio-signals-and-aria/data.js +163 -0
  483. package/schematics/migrations/radio-signals-and-aria/index.js +39 -0
  484. package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
  485. package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
  486. package/schematics/migrations/read-state-dwell-handlers/data.js +45 -0
  487. package/schematics/migrations/read-state-dwell-handlers/index.js +215 -0
  488. package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
  489. package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
  490. package/schematics/migrations/scrollbar-deprecated-path/index.js +20 -0
  491. package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
  492. package/schematics/migrations/select-signal-inputs/README.md +61 -0
  493. package/schematics/migrations/select-signal-inputs/data.js +99 -0
  494. package/schematics/migrations/select-signal-inputs/index.js +57 -0
  495. package/schematics/migrations/select-signal-inputs/schema.json +15 -0
  496. package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
  497. package/schematics/migrations/sidepanel-non-modal-behavior/data.js +111 -0
  498. package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -0
  499. package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
  500. package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
  501. package/schematics/migrations/signal-inputs-subclasses/data.js +69 -0
  502. package/schematics/migrations/signal-inputs-subclasses/index.js +17 -0
  503. package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
  504. package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
  505. package/schematics/migrations/split-button-optional-disabled/data.js +53 -0
  506. package/schematics/migrations/split-button-optional-disabled/index.js +57 -0
  507. package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
  508. package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
  509. package/schematics/migrations/splitter-deprecated-path/index.js +20 -0
  510. package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
  511. package/schematics/migrations/state-saving-default/README.md +67 -0
  512. package/schematics/migrations/state-saving-default/data.js +88 -0
  513. package/schematics/migrations/state-saving-default/index.js +62 -0
  514. package/schematics/migrations/state-saving-default/schema.json +15 -0
  515. package/schematics/migrations/table-cell-content/README.md +55 -0
  516. package/schematics/migrations/table-cell-content/data.js +66 -0
  517. package/schematics/migrations/table-cell-content/index.js +66 -0
  518. package/schematics/migrations/table-cell-content/schema.json +15 -0
  519. package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
  520. package/schematics/migrations/tabs-signals-and-aria/data.js +139 -0
  521. package/schematics/migrations/tabs-signals-and-aria/index.js +65 -0
  522. package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
  523. package/schematics/migrations/tag-list-cleaner/README.md +58 -0
  524. package/schematics/migrations/tag-list-cleaner/data.js +42 -0
  525. package/schematics/migrations/tag-list-cleaner/index.js +196 -0
  526. package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
  527. package/schematics/migrations/tag-slots/README.md +41 -0
  528. package/schematics/migrations/tag-slots/index.js +190 -0
  529. package/schematics/migrations/tag-slots/schema.json +20 -0
  530. package/schematics/migrations/tags-signals/README.md +85 -0
  531. package/schematics/migrations/tags-signals/data.js +103 -0
  532. package/schematics/migrations/tags-signals/index.js +673 -0
  533. package/schematics/migrations/tags-signals/schema.json +20 -0
  534. package/schematics/migrations/textarea-signals/README.md +72 -0
  535. package/schematics/migrations/textarea-signals/data.js +121 -0
  536. package/schematics/migrations/textarea-signals/index.js +379 -0
  537. package/schematics/migrations/textarea-signals/schema.json +20 -0
  538. package/schematics/migrations/time-range-title-for/README.md +164 -0
  539. package/schematics/migrations/time-range-title-for/data.js +139 -0
  540. package/schematics/migrations/time-range-title-for/index.js +163 -0
  541. package/schematics/migrations/time-range-title-for/schema.json +20 -0
  542. package/schematics/migrations/timepicker-signals/README.md +78 -0
  543. package/schematics/migrations/timepicker-signals/data.js +82 -0
  544. package/schematics/migrations/timepicker-signals/index.js +709 -0
  545. package/schematics/migrations/timepicker-signals/schema.json +20 -0
  546. package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
  547. package/schematics/migrations/timezone-grouping-utils/data.js +101 -0
  548. package/schematics/migrations/timezone-grouping-utils/index.js +64 -0
  549. package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
  550. package/schematics/migrations/title-encapsulation/README.md +49 -0
  551. package/schematics/migrations/title-encapsulation/data.js +69 -0
  552. package/schematics/migrations/title-encapsulation/index.js +57 -0
  553. package/schematics/migrations/title-encapsulation/schema.json +15 -0
  554. package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
  555. package/schematics/migrations/toast-stack-and-defaults/data.js +79 -0
  556. package/schematics/migrations/toast-stack-and-defaults/index.js +53 -0
  557. package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
  558. package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
  559. package/schematics/migrations/tooltip-pointer-events-and-types/data.js +89 -0
  560. package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -0
  561. package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
  562. package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
  563. package/schematics/migrations/top-bar-container-selectors/data.js +56 -0
  564. package/schematics/migrations/top-bar-container-selectors/index.js +84 -0
  565. package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
  566. package/schematics/migrations/tree-select-signals/README.md +61 -0
  567. package/schematics/migrations/tree-select-signals/data.js +106 -0
  568. package/schematics/migrations/tree-select-signals/index.js +58 -0
  569. package/schematics/migrations/tree-select-signals/schema.json +15 -0
  570. package/schematics/migrations/tree-signals/README.md +82 -0
  571. package/schematics/migrations/tree-signals/data.js +123 -0
  572. package/schematics/migrations/tree-signals/index.js +54 -0
  573. package/schematics/migrations/tree-signals/schema.json +15 -0
  574. package/schematics/migrations/tree-state-saving-default/README.md +66 -0
  575. package/schematics/migrations/tree-state-saving-default/data.js +78 -0
  576. package/schematics/migrations/tree-state-saving-default/index.js +60 -0
  577. package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
  578. package/schematics/migrations/username-pipe-injection/README.md +59 -0
  579. package/schematics/migrations/username-pipe-injection/data.js +78 -0
  580. package/schematics/migrations/username-pipe-injection/index.js +58 -0
  581. package/schematics/migrations/username-pipe-injection/schema.json +15 -0
  582. package/schematics/migrations/v20-upgrade/README.md +36 -16
  583. package/schematics/migrations/v20-upgrade/data.js +124 -77
  584. package/schematics/migrations/v20-upgrade/index.js +6 -213
  585. package/schematics/migrations/v21-upgrade/README.md +271 -0
  586. package/schematics/migrations/v21-upgrade/data.js +1371 -0
  587. package/schematics/migrations/v21-upgrade/index.js +94 -0
  588. package/schematics/migrations/v21-upgrade/schema.json +20 -0
  589. package/schematics/migrations/zoneless-change-detection/README.md +30 -0
  590. package/schematics/migrations/zoneless-change-detection/data.js +29 -0
  591. package/schematics/migrations/zoneless-change-detection/index.js +20 -0
  592. package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
  593. package/schematics/migrations.json +392 -2
  594. package/schematics/ng-add/index.js +515 -14
  595. package/schematics/ng-add/schema.json +15 -0
  596. package/schematics/utils/deprecated-path-migration.js +61 -0
  597. package/schematics/utils/package-config.js +9 -105
  598. package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
  599. package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
  600. package/scrollbar/native-scrollbar.scss +68 -0
  601. package/scrollbar/scrollbar-tokens.scss +13 -22
  602. package/scrollbar/scrollbar-track.scss +94 -0
  603. package/scrollbar/scrollbar-viewport.scss +33 -0
  604. package/scrollbar/scrollbar.scss +24 -0
  605. package/search-expandable/search-expandable-tokens.scss +4 -0
  606. package/search-expandable/search-expandable.scss +4 -2
  607. package/select/_select-theme.scss +3 -16
  608. package/select/select.scss +0 -6
  609. package/sidebar/sidebar.scss +20 -0
  610. package/sidepanel/_sidepanel-theme.scss +1 -1
  611. package/sidepanel/sidepanel-tokens.scss +7 -1
  612. package/sidepanel/sidepanel.scss +41 -5
  613. package/skeleton/skeleton-presets.scss +350 -0
  614. package/skeleton/skeleton-tokens.scss +127 -0
  615. package/skeleton/skeleton.scss +53 -45
  616. package/split-button/_split-button-theme.scss +4 -4
  617. package/split-button/split-button.scss +2 -6
  618. package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
  619. package/splitter/deprecated/splitter.scss +51 -0
  620. package/splitter/splitter-tokens.scss +19 -0
  621. package/splitter/splitter.scss +148 -28
  622. package/table/_table-theme.scss +13 -12
  623. package/table/table-tokens.scss +8 -0
  624. package/table/table.scss +47 -22
  625. package/tabs/_tabs-common.scss +14 -14
  626. package/tabs/_tabs-theme.scss +4 -5
  627. package/tabs/tab-body.scss +49 -1
  628. package/tabs/tab-header.scss +2 -1
  629. package/tags/tag-list.scss +4 -0
  630. package/tags/tag.scss +19 -1
  631. package/time-range/time-range.scss +9 -0
  632. package/timezone/timezone-option.component.scss +4 -7
  633. package/timezone/timezone-select.component.scss +3 -0
  634. package/toast/_toast-theme.scss +1 -4
  635. package/toast/toast-container.component.scss +19 -13
  636. package/toast/toast-tokens.scss +12 -6
  637. package/toast/toast.component.scss +42 -19
  638. package/toggle/_toggle-theme.scss +4 -10
  639. package/toggle/toggle.scss +67 -26
  640. package/tooltip/_tooltip-theme.scss +7 -1
  641. package/tooltip/tooltip-tokens.scss +1 -2
  642. package/tooltip/tooltip.scss +55 -9
  643. package/top-bar/top-bar-tokens.scss +13 -2
  644. package/top-bar/top-bar.scss +24 -19
  645. package/tree/_tree-theme.scss +0 -1
  646. package/tree/toggle.scss +5 -9
  647. package/tree/tree-option.scss +2 -4
  648. package/tree/tree-tokens.scss +2 -1
  649. package/tree/tree.scss +3 -5
  650. package/tree-select/_tree-select-theme.scss +4 -15
  651. package/tree-select/tree-select-tokens.scss +16 -0
  652. package/tree-select/tree-select.scss +0 -6
  653. package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
  654. package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
  655. package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
  656. package/types/koobiq-components-app-switcher.d.ts +406 -0
  657. package/types/koobiq-components-autocomplete.d.ts +443 -0
  658. package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
  659. package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
  660. package/types/koobiq-components-button-toggle.d.ts +340 -0
  661. package/types/koobiq-components-button.d.ts +296 -0
  662. package/types/koobiq-components-checkbox.d.ts +172 -0
  663. package/types/koobiq-components-clamped-text.d.ts +184 -0
  664. package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +114 -79
  665. package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
  666. package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
  667. package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
  668. package/types/koobiq-components-divider.d.ts +43 -0
  669. package/types/koobiq-components-dl.d.ts +235 -0
  670. package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
  671. package/types/koobiq-components-ellipsis-center.d.ts +85 -0
  672. package/types/koobiq-components-empty-state.d.ts +106 -0
  673. package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
  674. package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
  675. package/types/koobiq-components-flag.d.ts +68 -0
  676. package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
  677. package/types/koobiq-components-icon.d.ts +333 -0
  678. package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
  679. package/types/koobiq-components-input.d.ts +477 -0
  680. package/types/koobiq-components-link-deprecated.d.ts +101 -0
  681. package/types/koobiq-components-link.d.ts +176 -0
  682. package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
  683. package/types/koobiq-components-loader-overlay.d.ts +101 -0
  684. package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
  685. package/types/koobiq-components-modal.d.ts +666 -0
  686. package/types/koobiq-components-navbar.d.ts +569 -0
  687. package/types/koobiq-components-notification-center.d.ts +500 -0
  688. package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
  689. package/types/koobiq-components-popover.d.ts +468 -0
  690. package/types/koobiq-components-progress-bar.d.ts +67 -0
  691. package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
  692. package/types/koobiq-components-radio.d.ts +294 -0
  693. package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
  694. package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
  695. package/types/koobiq-components-scrollbar.d.ts +154 -0
  696. package/types/koobiq-components-search-expandable.d.ts +164 -0
  697. package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
  698. package/types/koobiq-components-sidebar.d.ts +152 -0
  699. package/types/koobiq-components-sidepanel.d.ts +436 -0
  700. package/types/koobiq-components-skeleton.d.ts +234 -0
  701. package/types/koobiq-components-split-button.d.ts +65 -0
  702. package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
  703. package/types/koobiq-components-splitter.d.ts +406 -0
  704. package/types/koobiq-components-table.d.ts +44 -0
  705. package/types/koobiq-components-tabs.d.ts +888 -0
  706. package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
  707. package/types/koobiq-components-textarea.d.ts +178 -0
  708. package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
  709. package/types/koobiq-components-timepicker.d.ts +223 -0
  710. package/types/koobiq-components-timezone.d.ts +266 -0
  711. package/types/koobiq-components-title.d.ts +184 -0
  712. package/types/koobiq-components-toast.d.ts +289 -0
  713. package/types/koobiq-components-toggle.d.ts +121 -0
  714. package/types/koobiq-components-tooltip.d.ts +610 -0
  715. package/types/koobiq-components-top-bar.d.ts +61 -0
  716. package/types/koobiq-components-tree-select.d.ts +667 -0
  717. package/types/koobiq-components-tree.d.ts +1290 -0
  718. package/types/koobiq-components-username.d.ts +340 -0
  719. package/username/_username-theme.scss +35 -0
  720. package/username/username.scss +10 -34
  721. package/app-switcher/index.d.ts +0 -276
  722. package/autocomplete/index.d.ts +0 -286
  723. package/button/index.d.ts +0 -153
  724. package/button-toggle/index.d.ts +0 -162
  725. package/checkbox/index.d.ts +0 -163
  726. package/clamped-text/index.d.ts +0 -146
  727. package/core/styles/_tokens.scss +0 -7
  728. package/core/styles/common/_clearfix.scss +0 -13
  729. package/core/styles/common/_popup.scss +0 -6
  730. package/core/styles/functions/_index.scss +0 -3
  731. package/core/styles/functions/_number.scss +0 -60
  732. package/core/styles/functions/_string.scss +0 -18
  733. package/core/styles/theming/scrollbar-tokens.scss +0 -25
  734. package/core/styles/typography/_typography-utils.scss +0 -84
  735. package/divider/index.d.ts +0 -20
  736. package/dl/index.d.ts +0 -45
  737. package/ellipsis-center/index.d.ts +0 -71
  738. package/empty-state/index.d.ts +0 -45
  739. package/flag/index.d.ts +0 -44
  740. package/icon/index.d.ts +0 -200
  741. package/input/index.d.ts +0 -354
  742. package/link/index.d.ts +0 -56
  743. package/loader-overlay/index.d.ts +0 -57
  744. package/modal/index.d.ts +0 -339
  745. package/navbar/index.d.ts +0 -372
  746. package/notification-center/index.d.ts +0 -323
  747. package/popover/index.d.ts +0 -182
  748. package/prebuilt-themes/dark-theme.css +0 -1
  749. package/prebuilt-themes/light-theme.css +0 -1
  750. package/progress-bar/index.d.ts +0 -31
  751. package/radio/index.d.ts +0 -203
  752. package/search-expandable/index.d.ts +0 -101
  753. package/sidebar/index.d.ts +0 -94
  754. package/sidepanel/index.d.ts +0 -272
  755. package/skeleton/index.d.ts +0 -26
  756. package/split-button/index.d.ts +0 -46
  757. package/table/index.d.ts +0 -25
  758. package/tabs/index.d.ts +0 -677
  759. package/textarea/index.d.ts +0 -138
  760. package/timepicker/index.d.ts +0 -197
  761. package/timezone/index.d.ts +0 -125
  762. package/title/index.d.ts +0 -139
  763. package/toast/index.d.ts +0 -187
  764. package/toggle/index.d.ts +0 -104
  765. package/tooltip/index.d.ts +0 -335
  766. package/top-bar/index.d.ts +0 -33
  767. package/tree/index.d.ts +0 -802
  768. package/tree-select/index.d.ts +0 -475
  769. package/username/index.d.ts +0 -194
  770. /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
  771. /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-username.mjs","sources":["../../../packages/components/username/types.ts","../../../packages/components/username/constants.ts","../../../packages/components/username/username.pipe.ts","../../../packages/components/username/username.ts","../../../packages/components/username/username.html","../../../packages/components/username/module.ts","../../../packages/components/username/koobiq-components-username.ts"],"sourcesContent":["/**\n * Keys for formatting username parts in short (initial) or full form.\n */\nexport enum KbqUsernameFormatKey {\n /**\n * Short form of the first name (e.g., \"John\" → \"J\")\n */\n FirstNameShort = 'f',\n\n /**\n * Full form of the first name (e.g., \"John\")\n */\n FirstNameFull = 'F',\n\n /**\n * Short form of the middle name (e.g., \"Henry\" → \"H\")\n */\n MiddleNameShort = 'm',\n\n /**\n * Full form of the middle name (e.g., \"Henry\")\n */\n MiddleNameFull = 'M',\n\n /**\n * Short form of the last name (e.g., \"Doe\" → \"D\")\n */\n LastNameShort = 'l',\n\n /**\n * Full form of the last name (e.g., \"Doe\")\n */\n LastNameFull = 'L',\n Dot = '.'\n}\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n */\nexport type KbqFormatKeyToProfileMapping<T = any> = {\n [\n key in Exclude<\n KbqUsernameFormatKey,\n KbqUsernameFormatKey.FirstNameFull | KbqUsernameFormatKey.MiddleNameFull | KbqUsernameFormatKey.LastNameFull\n >\n ]: keyof T | undefined;\n};\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n * @see KbqUsernameCustomPipe\n */\nexport type KbqFormatKeyToProfileMappingExtended<T = any> = {\n [key in KbqUsernameFormatKey]: keyof T | undefined;\n};\n\n/**\n * Layout mode for displaying a username and applying text-ellipsis.\n *\n * - `stacked`: Elements shown vertically.\n * - `inline`: Elements shown in one line. Text ellipsis is applied to both parts.\n * - `text`: Plain text, no layout styling. No text-ellipsis.\n */\nexport type KbqUsernameMode = 'stacked' | 'inline' | 'text';\n\n/**\n * Visual style of the username.\n *\n * - `default`: standard styling with primary and secondary colors.\n * - `error`: error colors (e.g., red).\n * - `accented`: no color theming; emphasizes via typography only.\n * - `inherit`: inherits parent styles, no theming. For example, useful when using inside links.\n */\nexport type KbqUsernameStyle = 'default' | 'error' | 'accented' | 'inherit';\n","import { InjectionToken } from '@angular/core';\nimport { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUsernameFormatKey } from './types';\n\n/** Default name format: Last name full, first and middle as initials. */\nexport const kbqDefaultFullNameFormatCustom = 'L f. m.';\n/** Default name format: Last name full, first and middle as initials. */\nexport const kbqDefaultFullNameFormat = 'lf.m.';\n\n/**\n * Throws an error when no profile field mapping is provided to the username pipe.\n * @docs-private\n */\nexport function KbqMappingMissingError() {\n return new Error('KbqUsernamePipe: profile field mapping is required but was not provided.');\n}\n\n/**\n * Injection token for providing a global username format-to-profile mapping.\n */\nexport const KBQ_PROFILE_MAPPING = new InjectionToken<\n KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n>('KBQ_PROFILE_MAPPING', {\n factory: () =>\n ({\n [KbqUsernameFormatKey.FirstNameShort]: 'firstName',\n [KbqUsernameFormatKey.MiddleNameShort]: 'middleName',\n [KbqUsernameFormatKey.LastNameShort]: 'lastName',\n [KbqUsernameFormatKey.Dot]: undefined\n }) satisfies KbqFormatKeyToProfileMapping<{ firstName: string; middleName: string; lastName: string }>\n});\n","import { inject, Injectable, Pipe, PipeTransform } from '@angular/core';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultFullNameFormatCustom,\n KbqMappingMissingError\n} from './constants';\nimport { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUsernameFormatKey } from './types';\nimport { KbqUserInfo } from './username';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqUsername',\n pure: true\n})\nexport class KbqUsernamePipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(profile: T, format = kbqDefaultFullNameFormat, customMapping?: KbqFormatKeyToProfileMapping): string {\n const resolvedMapping = customMapping || this.mapping;\n\n if (!resolvedMapping) {\n throw KbqMappingMissingError();\n }\n\n if (!profile || typeof profile !== 'object') return '';\n\n let result = '';\n\n const formatUnits = format.split('');\n\n formatUnits.forEach((letter: KbqUsernameFormatKey | string, index: number, array) => {\n if (letter !== KbqUsernameFormatKey.Dot) {\n const field: keyof T = resolvedMapping[letter];\n const fieldValue = profile[field];\n\n if (fieldValue) {\n const isShort = array[index + 1] === KbqUsernameFormatKey.Dot;\n const resolvedFieldValue = isShort ? `${fieldValue[0]}${KbqUsernameFormatKey.Dot}` : fieldValue;\n\n result += ` ${resolvedFieldValue}`;\n }\n }\n });\n\n return result.trim();\n }\n}\n\n/**\n * Pipe to format a user profile into a name string using a format pattern and field mapping.\n * Lowercase keys output initials; uppercase keys show full values.\n */\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqUsernameCustom',\n pure: true\n})\nexport class KbqUsernameCustomPipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(\n profile: T,\n format = kbqDefaultFullNameFormatCustom,\n customMapping?: KbqFormatKeyToProfileMappingExtended<T>\n ): string {\n const resolvedMapping = customMapping || this.mapping;\n\n if (!resolvedMapping) {\n throw KbqMappingMissingError();\n }\n\n if (!profile || typeof profile !== 'object') return '';\n\n let result = '';\n\n const formatUnits = format.split('');\n\n formatUnits.forEach((letter: KbqUsernameFormatKey | string) => {\n const field: keyof T | undefined = resolvedMapping[letter];\n\n if (!field) {\n result += letter;\n\n return;\n }\n\n const isShort = letter === letter.toLowerCase();\n const fieldValue = profile[field] || '';\n\n result += fieldValue && isShort ? fieldValue[0] : fieldValue;\n });\n\n return result.trim();\n }\n}\n\nexport interface KbqUsernameTextOptions {\n /** Formats the login segment. Defaults to identity. */\n formatLogin?: (login: string) => string;\n /**\n * Formats the site segment.\n * Defaults to wrapping in parentheses, matching kbq-username display.\n */\n formatSite?: (site: string) => string;\n}\n\n/**\n * Builds a full username string from a pre-formatted name plus optional login and site,\n * mirroring the text rendered by `kbq-username`.\n *\n * Provide custom `formatLogin` / `formatSite` to tailor the output.\n */\nexport function kbqBuildUsernameText(\n data: { name: string } & Partial<Pick<KbqUserInfo, 'login' | 'site'>>,\n options?: KbqUsernameTextOptions\n): string {\n const formatLogin = options?.formatLogin ?? ((login) => login);\n const formatSite = options?.formatSite ?? ((site) => `(${site})`);\n\n return [data.name, data.login && formatLogin(data.login), data.site && formatSite(data.site)]\n .filter(Boolean)\n .join(' ');\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { kbqDefaultFullNameFormat } from './constants';\nimport { KbqUsernameMode, KbqUsernameStyle } from './types';\nimport { KbqUsernamePipe } from './username.pipe';\n\nconst baseClass = 'kbq-username';\n\n/**\n * Basic user info\n * @docs-private\n */\nexport type KbqUserInfo = {\n firstName?: string;\n lastName?: string;\n middleName?: string;\n login?: string;\n site?: string;\n};\n\n/** Styles the primary part of the username (e.g. full name). */\n@Directive({\n selector: '[kbqUsernamePrimary]',\n host: {\n class: `${baseClass}__primary`\n },\n exportAs: 'kbqUsernamePrimary'\n})\nexport class KbqUsernamePrimary {}\n\n/** Styles the secondary part. */\n@Directive({\n selector: '[kbqUsernameSecondary]',\n host: {\n class: `${baseClass}__secondary`\n },\n exportAs: 'kbqUsernameSecondary'\n})\nexport class KbqUsernameSecondary {}\n\n/** Styles a secondary hint. */\n@Directive({\n selector: '[kbqUsernameSecondaryHint]',\n host: {\n class: `${baseClass}__secondary-hint`\n },\n exportAs: 'kbqUsernameSecondaryHint'\n})\nexport class KbqUsernameSecondaryHint {}\n\n/** Custom content for `KbqUsername`, overrides default view. */\n@Directive({\n selector: 'kbq-username-custom-view, [kbq-username-custom-view]',\n host: {\n class: `${baseClass}__custom-view`\n },\n exportAs: 'kbqUsernameCustomView'\n})\nexport class KbqUsernameCustomView {}\n\n/**\n * Displays a user's name based on profile data.\n * Supports different display modes and visual styles.\n * A custom view can be provided via `<kbq-username-custom-view>` for full control over the output.\n * Accepts input profile data and optional formatting options.\n */\n@Component({\n selector: 'kbq-username',\n imports: [\n KbqTitleModule,\n KbqUsernamePipe,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n ],\n templateUrl: './username.html',\n styleUrls: ['./username.scss', './username-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: baseClass,\n '[class]': 'class()'\n },\n exportAs: 'kbqUsername'\n})\nexport class KbqUsername {\n /** User profile data used for display. */\n readonly userInfo = input<KbqUserInfo>();\n /** Enables compact display mode */\n readonly isCompact = input(false, { transform: booleanAttribute });\n /** Format string for rendering the user's full name. */\n readonly fullNameFormat = input<string>(kbqDefaultFullNameFormat);\n /**\n * Display mode of the username.\n * @default inline\n */\n readonly mode = input<KbqUsernameMode>('inline');\n /**\n * Visual style of the username.\n * @default default\n */\n readonly type = input<KbqUsernameStyle>('default');\n /**\n * Custom projected view for username rendering.\n * @docs-private\n */\n protected readonly customView = contentChild(KbqUsernameCustomView);\n\n /** @docs-private */\n protected readonly hasFullName = computed(() => {\n const userInfo = this.userInfo();\n\n if (!userInfo) return false;\n\n return userInfo?.lastName && userInfo?.firstName;\n });\n\n /** @docs-private */\n protected readonly class = computed(() => {\n return [this.type(), this.mode()].map((modificator) => `${baseClass}_${modificator}`).join(' ');\n });\n}\n","@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @let fullName = profile | kbqUsername: fullNameFormat();\n\n @if (!isCompact()) {\n @if (hasFullName()) {\n <span kbq-title kbqUsernamePrimary>{{ fullName }}</span>\n }\n\n @if (profile.login) {\n <span kbq-title kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n } @else {\n <span kbq-title kbqUsernamePrimary>\n @if (hasFullName()) {\n <span>{{ fullName }}</span>\n }\n @if (!hasFullName() && profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>&nbsp;({{ profile.site }})</span>\n }\n </span>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqUsername, KbqUsernameCustomView, KbqUsernamePrimary, KbqUsernameSecondary } from './username';\nimport { KbqUsernameCustomPipe, KbqUsernamePipe } from './username.pipe';\n\nconst COMPONENTS = [\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameCustomPipe,\n KbqUsernamePipe\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqUsernameModule {}\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-username.mjs","sources":["../../../packages/components/username/types.ts","../../../packages/components/username/constants.ts","../../../packages/components/username/username.pipe.ts","../../../packages/components/username/username.ts","../../../packages/components/username/username.html","../../../packages/components/username/module.ts","../../../packages/components/username/koobiq-components-username.ts"],"sourcesContent":["/**\n * Keys naming the profile field a format character stands for.\n *\n * The key identifies the *field* only. Whether it renders in full or as an initial is decided by the\n * pipe that reads the format: `KbqUsernamePipe` abbreviates a key that is followed by {@link Dot},\n * `KbqUsernameCustomPipe` abbreviates the lowercase keys. The two upper/lower pairs therefore exist so\n * that a single mapping serves both rules.\n */\nexport enum KbqUsernameFormatKey {\n /** First name, abbreviated by `KbqUsernameCustomPipe`. */\n FirstNameShort = 'f',\n\n /** First name, rendered in full by `KbqUsernameCustomPipe`. */\n FirstNameFull = 'F',\n\n /** Middle name, abbreviated by `KbqUsernameCustomPipe`. */\n MiddleNameShort = 'm',\n\n /** Middle name, rendered in full by `KbqUsernameCustomPipe`. */\n MiddleNameFull = 'M',\n\n /** Last name, abbreviated by `KbqUsernameCustomPipe`. */\n LastNameShort = 'l',\n\n /** Last name, rendered in full by `KbqUsernameCustomPipe`. */\n LastNameFull = 'L',\n\n /** Abbreviation mark. `KbqUsernamePipe` abbreviates the key it follows; never maps to a field. */\n Dot = '.'\n}\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n *\n * Excludes the uppercase keys: `KbqUsernamePipe` decides shortness from a following\n * {@link KbqUsernameFormatKey.Dot}, so a case pair would carry no meaning for it. The mapping that does\n * carry them is {@link KbqFormatKeyToProfileMappingExtended}.\n */\nexport type KbqFormatKeyToProfileMapping<T = any> = {\n [\n key in Exclude<\n KbqUsernameFormatKey,\n KbqUsernameFormatKey.FirstNameFull | KbqUsernameFormatKey.MiddleNameFull | KbqUsernameFormatKey.LastNameFull\n >\n ]: keyof T | undefined;\n};\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n *\n * Covers the uppercase keys as well, which is the pair {@link KbqUsernameCustomPipe} derives the form from.\n */\nexport type KbqFormatKeyToProfileMappingExtended<T = any> = {\n [key in KbqUsernameFormatKey]: keyof T | undefined;\n};\n\n/** Basic user info rendered by `kbq-username`. */\nexport type KbqUserInfo = {\n /** Given name. */\n firstName?: string;\n /** Family name. */\n lastName?: string;\n /** Middle name or patronymic. */\n middleName?: string;\n /** Account name, rendered as the secondary part. */\n login?: string;\n /** Site the account belongs to, rendered in parentheses after the login. */\n site?: string;\n};\n\n/**\n * Layout mode for displaying a username and applying text-ellipsis.\n *\n * - `stacked`: Elements shown vertically.\n * - `inline`: Elements shown in one line. Text ellipsis is applied to both parts.\n * - `text`: `display: inline`, so the username flows inside a sentence; nothing clips it, hence no title.\n */\nexport type KbqUsernameMode = 'stacked' | 'inline' | 'text';\n\n/**\n * Visual style of the username.\n *\n * - `default`: standard styling with primary and secondary colors.\n * - `error`: error colors (e.g., red).\n * - `accented`: no color theming; emphasizes via typography only.\n * - `inherit`: inherits parent styles, no theming. For example, useful when using inside links.\n */\nexport type KbqUsernameStyle = 'default' | 'error' | 'accented' | 'inherit';\n","import { InjectionToken, Provider, Signal } from '@angular/core';\nimport {\n KbqDeepPartial,\n kbqInjectLocaleConfiguration,\n kbqLocaleConfigurationOverrideProvider,\n KbqUsernameLocaleConfiguration,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport {\n KbqFormatKeyToProfileMapping,\n KbqFormatKeyToProfileMappingExtended,\n KbqUserInfo,\n KbqUsernameFormatKey\n} from './types';\n\n/**\n * Default format of `KbqUsernameCustomPipe`: full last name, first and middle names as initials.\n *\n * Written in that pipe's own syntax — uppercase keys render the full value, lowercase ones an initial,\n * and every other character is copied verbatim, which is where the spaces and the dots come from.\n */\nexport const kbqDefaultFullNameFormatCustom = 'L f. m.';\n\n/**\n * Default format of `KbqUsernamePipe` and of the `kbq-username` component: full last name, first and\n * middle names as initials.\n *\n * Written in that pipe's own syntax — a key followed by `.` renders an initial, any other key renders\n * the full value, and the separating spaces are inserted by the pipe rather than by the format.\n */\nexport const kbqDefaultFullNameFormat = 'lf.m.';\n\n/**\n * Mapping of every format key onto a field of {@link KbqUserInfo}. Backs {@link KBQ_PROFILE_MAPPING}\n * and is the fallback of both pipes, so a profile shaped like `KbqUserInfo` needs no mapping at all.\n *\n * Covers the uppercase keys as well, which is what makes `kbqDefaultFullNameFormatCustom` work out of\n * the box; spread it to map extra fields without losing the defaults.\n */\nexport const kbqDefaultProfileMapping = {\n [KbqUsernameFormatKey.FirstNameShort]: 'firstName',\n [KbqUsernameFormatKey.FirstNameFull]: 'firstName',\n [KbqUsernameFormatKey.MiddleNameShort]: 'middleName',\n [KbqUsernameFormatKey.MiddleNameFull]: 'middleName',\n [KbqUsernameFormatKey.LastNameShort]: 'lastName',\n [KbqUsernameFormatKey.LastNameFull]: 'lastName',\n [KbqUsernameFormatKey.Dot]: undefined\n} satisfies KbqFormatKeyToProfileMappingExtended<KbqUserInfo>;\n\n/**\n * Injection token for providing a global username format-to-profile mapping.\n *\n * Resolved where the `kbq-username` component or the pipe lives, so a component-level or route-level\n * provider applies to that subtree. Outside a template, resolve it from your own injection context —\n * `kbqInjectUsernameFormatter()` does exactly that.\n */\nexport const KBQ_PROFILE_MAPPING = new InjectionToken<\n KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n>('KBQ_PROFILE_MAPPING', { factory: () => kbqDefaultProfileMapping });\n\n/** Default localized strings of `kbq-username`. */\nexport const KBQ_USERNAME_DEFAULT_LOCALE_CONFIGURATION: KbqUsernameLocaleConfiguration = ruRULocaleData.username;\n\n/** Localization configuration provider for `kbq-username`. */\nexport const KBQ_USERNAME_LOCALE_CONFIGURATION = new InjectionToken<KbqUsernameLocaleConfiguration>(\n 'KbqUsernameLocaleConfiguration',\n { factory: () => KBQ_USERNAME_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider. Only the strings you pass are overridden; the rest keep following the active locale.\n *\n * Provides {@link KBQ_USERNAME_LOCALE_CONFIGURATION}.\n */\nexport const kbqUsernameLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqUsernameLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('username', configuration);\n\n/**\n * Injection function that creates a reactive locale configuration signal for `kbq-username`.\n *\n * @docs-private\n */\nexport function kbqInjectUsernameLocaleConfiguration(): Signal<KbqUsernameLocaleConfiguration> {\n return kbqInjectLocaleConfiguration('username', KBQ_USERNAME_LOCALE_CONFIGURATION);\n}\n","import { inject, isDevMode, Pipe, PipeTransform } from '@angular/core';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultFullNameFormatCustom,\n kbqDefaultProfileMapping\n} from './constants';\nimport {\n KbqFormatKeyToProfileMapping,\n KbqFormatKeyToProfileMappingExtended,\n KbqUserInfo,\n KbqUsernameFormatKey\n} from './types';\n\n/** Format keys that name a profile field. `Dot` is a mark rather than a field and is deliberately absent. */\nconst fieldFormatKeys = new Set<string>([\n KbqUsernameFormatKey.FirstNameShort,\n KbqUsernameFormatKey.FirstNameFull,\n KbqUsernameFormatKey.MiddleNameShort,\n KbqUsernameFormatKey.MiddleNameFull,\n KbqUsernameFormatKey.LastNameShort,\n KbqUsernameFormatKey.LastNameFull\n]);\n\n/** Keys already reported by `warnAboutUnmappedKey`; a pure pipe runs on every check. */\nconst reportedUnmappedKeys = new Set<string>();\n\n/**\n * A format key with no mapped field is emitted verbatim, which is indistinguishable from a separator\n * and is how a wrong mapping ends up rendering a capital `L` where the surname should be.\n */\nconst warnAboutUnmappedKey = (letter: string): void => {\n if (!isDevMode() || !fieldFormatKeys.has(letter) || reportedUnmappedKeys.has(letter)) return;\n\n reportedUnmappedKeys.add(letter);\n\n // eslint-disable-next-line no-console\n console.warn(\n `KbqUsernameCustomPipe: format key \"${letter}\" is not mapped to a profile field, so it is rendered ` +\n 'as literal text. Provide it through KBQ_PROFILE_MAPPING (see kbqDefaultProfileMapping).'\n );\n};\n\n/** First character of a value, counted in code points so a surrogate pair survives as a single initial. */\nconst firstCharacter = (value: unknown): string => [...String(value)][0] ?? '';\n\n/** FIRST STRONG ISOLATE: opens a run whose base direction is taken from its own first strong character. */\nconst firstStrongIsolate = '\\u2068';\n\n/** POP DIRECTIONAL ISOLATE: closes the run opened by {@link firstStrongIsolate}. */\nconst popDirectionalIsolate = '\\u2069';\n\n/**\n * Formats a profile the way `KbqUsernamePipe` and `kbq-username` do: a key followed by\n * {@link KbqUsernameFormatKey.Dot} renders an initial, any other key renders the full value, and the\n * parts are joined with single spaces — a character that is neither a mapped key nor `.` is dropped.\n *\n * Fields the profile does not carry are skipped one by one, so a partial profile still renders whatever\n * it has.\n *\n * @param profile Profile to format. Anything that is not a record — null, a primitive, an array —\n * formats as an empty string.\n * @param format Format string, e.g. {@link kbqDefaultFullNameFormat}.\n * @param mapping Format key to profile field mapping, e.g. {@link kbqDefaultProfileMapping}. Resolve it\n * from your own injection context — `inject(KBQ_PROFILE_MAPPING)` — to honour a scoped override.\n */\nexport function kbqFormatUsername<T = unknown>(\n profile: T,\n format: string,\n mapping: KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n): string {\n if (!profile || typeof profile !== 'object' || Array.isArray(profile)) return '';\n\n const letters = format.split('');\n\n return letters\n .reduce<string[]>((parts, letter, index) => {\n if (letter === KbqUsernameFormatKey.Dot) return parts;\n\n const field = mapping[letter];\n const value = field === undefined ? undefined : profile[field];\n\n if (!value) return parts;\n\n const isShort = letters[index + 1] === KbqUsernameFormatKey.Dot;\n\n parts.push(isShort ? `${firstCharacter(value)}${KbqUsernameFormatKey.Dot}` : `${value}`);\n\n return parts;\n }, [])\n .join(' ');\n}\n\n/**\n * Formats a profile the way `KbqUsernameCustomPipe` does: a lowercase key renders an initial, an\n * uppercase one the full value, and every character with no mapped field — the separators — is emitted\n * verbatim, which is what lets the format carry its own punctuation.\n *\n * @param profile Profile to format. Anything that is not a record — null, a primitive, an array —\n * formats as an empty string.\n * @param format Format string, e.g. {@link kbqDefaultFullNameFormatCustom}.\n * @param mapping Format key to profile field mapping, e.g. {@link kbqDefaultProfileMapping}. Resolve it\n * from your own injection context — `inject(KBQ_PROFILE_MAPPING)` — to honour a scoped override.\n */\nexport function kbqFormatUsernameCustom<T = unknown>(\n profile: T,\n format: string,\n mapping: KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n): string {\n if (!profile || typeof profile !== 'object' || Array.isArray(profile)) return '';\n\n return format\n .split('')\n .map((letter) => {\n const field = mapping[letter];\n\n if (!field) {\n warnAboutUnmappedKey(letter);\n\n return letter;\n }\n\n const value = profile[field];\n\n if (!value) return '';\n\n return letter === letter.toLowerCase() ? firstCharacter(value) : `${value}`;\n })\n .join('')\n .trim();\n}\n\n/**\n * Formats a user profile into a name string.\n *\n * A key followed by `.` renders an initial and any other key renders the full value; the separating\n * spaces are inserted by the pipe, so a character that is neither a mapped key nor `.` is dropped.\n *\n * {@link KbqUsernameCustomPipe} derives the form from the key's case instead, and keeps the format's own\n * punctuation.\n */\n@Pipe({\n name: 'kbqUsername'\n})\nexport class KbqUsernamePipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(profile: T, format = kbqDefaultFullNameFormat, customMapping?: KbqFormatKeyToProfileMapping): string {\n return kbqFormatUsername(profile, format, customMapping || this.mapping);\n }\n}\n\n/**\n * Formats a user profile into a name string.\n *\n * A lowercase key renders an initial and an uppercase one the full value; every character with no\n * mapped field is emitted verbatim, so the format carries its own separators.\n *\n * {@link KbqUsernamePipe} derives the form from a following `.` instead.\n */\n@Pipe({\n name: 'kbqUsernameCustom'\n})\nexport class KbqUsernameCustomPipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(\n profile: T,\n format = kbqDefaultFullNameFormatCustom,\n customMapping?: KbqFormatKeyToProfileMappingExtended<T>\n ): string {\n return kbqFormatUsernameCustom(profile, format, customMapping || this.mapping);\n }\n}\n\n/**\n * Returns the formatter `kbq-username` renders with, bound to the `KBQ_PROFILE_MAPPING` visible at the\n * call site. Use it wherever the displayed string is needed outside a template — a search filter, an\n * option label — so that a scoped mapping applies to both paths.\n *\n * Must run in an injection context.\n */\nexport function kbqInjectUsernameFormatter(): <T>(profile: T, format?: string) => string {\n const mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n return (profile, format = kbqDefaultFullNameFormat) => kbqFormatUsername(profile, format, mapping);\n}\n\nexport interface KbqUsernameTextOptions {\n /** Formats the login segment. Defaults to identity. */\n formatLogin?: (login: string) => string;\n\n /**\n * Formats the site segment.\n * Defaults to wrapping in parentheses, matching kbq-username display.\n */\n formatSite?: (site: string) => string;\n\n /**\n * Wraps every segment in `U+2068`/`U+2069` so that a right-to-left name keeps its order next to a\n * left-to-right login, and the parentheses around the site stay attached to it.\n *\n * Off by default: the isolates are invisible but real characters, and this string is commonly fed to\n * an `includes()` filter that would stop matching.\n */\n bidiIsolate?: boolean;\n}\n\n/**\n * Builds a full username string from a pre-formatted name plus optional login and site,\n * mirroring the text rendered by `kbq-username`.\n *\n * Provide custom `formatLogin` / `formatSite` to tailor the output.\n */\nexport function kbqBuildUsernameText(\n data: { name: string } & Partial<Pick<KbqUserInfo, 'login' | 'site'>>,\n options?: KbqUsernameTextOptions\n): string {\n const formatLogin = options?.formatLogin ?? ((login: string) => login);\n const formatSite = options?.formatSite ?? ((site: string) => `(${site})`);\n const isolate = (segment: string): string =>\n options?.bidiIsolate ? `${firstStrongIsolate}${segment}${popDirectionalIsolate}` : segment;\n\n return [data.name, data.login && formatLogin(data.login), data.site && formatSite(data.site)]\n .filter((segment): segment is string => !!segment)\n .map(isolate)\n .join(' ');\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultProfileMapping,\n kbqInjectUsernameLocaleConfiguration\n} from './constants';\nimport { KbqUserInfo, KbqUsernameMode, KbqUsernameStyle } from './types';\nimport { kbqFormatUsername } from './username.pipe';\n\nconst baseClass = 'kbq-username';\n\n/**\n * Unabbreviated counterpart of a format: every key renders in full, so the abbreviation marks go.\n *\n * The case is left alone. `kbqFormatUsername` resolves a key through the mapping whatever its case, and\n * upper-casing would miss every mapping typed `KbqFormatKeyToProfileMapping` — the shape the token is\n * documented with, which by design carries the lowercase keys only.\n */\nconst expandFormat = (format: string): string => format.replaceAll('.', '');\n\n/** Styles the primary part of the username (e.g. full name). */\n@Directive({\n selector: '[kbqUsernamePrimary]',\n host: {\n class: `${baseClass}__primary`\n },\n exportAs: 'kbqUsernamePrimary'\n})\nexport class KbqUsernamePrimary {}\n\n/** Styles the secondary part. */\n@Directive({\n selector: '[kbqUsernameSecondary]',\n host: {\n class: `${baseClass}__secondary`\n },\n exportAs: 'kbqUsernameSecondary'\n})\nexport class KbqUsernameSecondary {}\n\n/** Styles a secondary hint. */\n@Directive({\n selector: '[kbqUsernameSecondaryHint]',\n host: {\n class: `${baseClass}__secondary-hint`\n },\n exportAs: 'kbqUsernameSecondaryHint'\n})\nexport class KbqUsernameSecondaryHint {}\n\n/** Custom content for `KbqUsername`, overrides default view. */\n@Directive({\n selector: 'kbq-username-custom-view, [kbq-username-custom-view]',\n host: {\n class: `${baseClass}__custom-view`\n },\n exportAs: 'kbqUsernameCustomView'\n})\nexport class KbqUsernameCustomView {}\n\n/**\n * Displays a user's name based on profile data.\n * Supports different display modes and visual styles.\n * A custom view can be provided via `<kbq-username-custom-view>` for full control over the output.\n * Accepts input profile data and optional formatting options.\n */\n@Component({\n selector: 'kbq-username',\n imports: [\n KbqTitleModule,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n ],\n templateUrl: './username.html',\n styleUrls: ['./username.scss', './username-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: baseClass,\n '[class]': 'class()'\n },\n exportAs: 'kbqUsername'\n})\nexport class KbqUsername {\n /**\n * Resolved at the component's own injector, so a mapping scoped to a route or a host component\n * applies to what is rendered here.\n */\n private readonly mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n /** User profile data used for display. */\n readonly userInfo = input<KbqUserInfo>();\n /** Enables compact display mode */\n readonly isCompact = input(false, { transform: booleanAttribute });\n /** Format string for rendering the user's full name. */\n readonly fullNameFormat = input<string>(kbqDefaultFullNameFormat);\n\n /**\n * Display mode of the username. Defaults to `'inline'`.\n */\n readonly mode = input<KbqUsernameMode>('inline');\n\n /**\n * Visual style of the username. Defaults to `'default'`.\n */\n readonly type = input<KbqUsernameStyle>('default');\n\n /**\n * Custom projected view for username rendering.\n *\n * @docs-private\n */\n protected readonly customView = contentChild(KbqUsernameCustomView);\n\n /** @docs-private */\n protected readonly localeConfiguration = kbqInjectUsernameLocaleConfiguration();\n\n /**\n * Name as rendered, i.e. abbreviated according to `fullNameFormat`.\n *\n * @docs-private\n */\n protected readonly formattedName = computed(() =>\n kbqFormatUsername(this.userInfo(), this.fullNameFormat(), this.mapping)\n );\n\n /**\n * Whether the profile yields any name at all. A profile carrying only one of the name fields still\n * has a name, and the formatter degrades to whatever it finds.\n *\n * @docs-private\n */\n protected readonly hasName = computed(() => !!this.formattedName());\n\n /**\n * Unabbreviated name, offered as the tooltip of the truncated primary part.\n *\n * @docs-private\n */\n protected readonly expandedName = computed(() =>\n kbqFormatUsername(this.userInfo(), expandFormat(this.fullNameFormat()), this.mapping)\n );\n\n /**\n * Tooltip of the secondary part: the login with the site hint it renders inline.\n *\n * @docs-private\n */\n protected readonly secondaryTitle = computed(() => this.withSite(this.userInfo()?.login || ''));\n\n /**\n * Tooltip of the compact layout, whose single part carries the name — or the login when there is\n * none — followed by the site.\n *\n * @docs-private\n */\n protected readonly compactTitle = computed(() =>\n this.withSite(this.hasName() ? this.expandedName() || this.formattedName() : this.userInfo()?.login || '')\n );\n\n /**\n * Whether the layout can clip its text. `kbq-truncate-line()` is applied to `stacked` and `inline`\n * only, so in `text` mode nothing is ever clipped and the verdict `kbq-title` computes is known in\n * advance. Attaching it there would cost a `MutationObserver` per part and a forced layout read on\n * every resize and every content mutation, for a tooltip that could never show.\n *\n * @docs-private\n */\n protected readonly canTruncate = computed(() => this.mode() !== 'text');\n\n /** @docs-private */\n protected readonly class = computed(() => {\n return [this.type(), this.mode()].map((modificator) => `${baseClass}_${modificator}`).join(' ');\n });\n\n private withSite(text: string): string {\n const site = this.userInfo()?.site;\n\n return site ? `${text} (${site})`.trim() : text;\n }\n}\n","@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @if (!isCompact()) {\n @if (hasName()) {\n @if (canTruncate()) {\n <span kbqUsernamePrimary dir=\"auto\" [kbq-title]=\"expandedName()\">{{ formattedName() }}</span>\n } @else {\n <span kbqUsernamePrimary dir=\"auto\">{{ formattedName() }}</span>\n }\n }\n\n @if (profile.login) {\n <!-- The two branches must stay in sync: `kbq-title` cannot be bound conditionally, and in\n `text` mode there is no ellipsis for it to detect. -->\n @if (canTruncate()) {\n <span kbqUsernameSecondary [kbq-title]=\"secondaryTitle()\">\n {{ profile.login }}\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n } @else {\n <span kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n }\n } @else {\n @if (canTruncate()) {\n <span kbqUsernamePrimary [kbq-title]=\"compactTitle()\">\n @if (hasName()) {\n <span dir=\"auto\">{{ formattedName() }}</span>\n } @else if (profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint>&nbsp;({{ profile.site }})</span>\n }\n </span>\n } @else {\n <span kbqUsernamePrimary>\n @if (hasName()) {\n <span dir=\"auto\">{{ formattedName() }}</span>\n } @else if (profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint>&nbsp;({{ profile.site }})</span>\n }\n </span>\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n} from './username';\nimport { KbqUsernameCustomPipe, KbqUsernamePipe } from './username.pipe';\n\nconst COMPONENTS = [\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint,\n KbqUsernameCustomPipe,\n KbqUsernamePipe\n];\n\n/** Exports every `kbq-username` building block: the component, the styling directives and both pipes. */\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqUsernameModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,24 @@
1
+ @use '../core/styles/common/animation';
2
+ @use '../core/styles/common/squircle' as *;
3
+
4
+ // `--kbq-background-overlay-theme` was dropped in @koobiq/design-tokens v4; it is now an opaque base
5
+ // plus `--kbq-opacity-overlay`. The two are normally composed with `opacity`, which is not available
6
+ // here — the overlay already animates its own appearance with it, and it would fade the dashed border
7
+ // and the empty state along with the background. Mixing keeps the alpha on the colour alone.
1
8
  .kbq-dropzone-overlay {
2
9
  --kbq-dropzone-padding: var(--kbq-size-s);
3
- --kbq-dropzone-overlay-background: var(--kbq-background-overlay-theme);
4
- --kbq-dropzone-component-background: var(--kbq-background-overlay-theme);
10
+ --kbq-dropzone-overlay-background: color-mix(
11
+ in srgb,
12
+ var(--kbq-background-overlay-base-theme) /* color-mix only allows percentage value */
13
+ calc(var(--kbq-opacity-overlay) * 100%),
14
+ transparent
15
+ );
16
+ --kbq-dropzone-component-background: color-mix(
17
+ in srgb,
18
+ var(--kbq-background-overlay-base-theme) /* color-mix only allows percentage value */
19
+ calc(var(--kbq-opacity-overlay) * 100%),
20
+ transparent
21
+ );
5
22
  --kbq-dropzone-border-color: var(--kbq-line-theme-fade);
6
23
 
7
24
  padding: var(--kbq-dropzone-padding);
@@ -10,6 +27,10 @@
10
27
  opacity: 0;
11
28
  transition: opacity 100ms ease-in-out;
12
29
 
30
+ // The overlay covers the whole viewport, so the fade is the largest animated surface the library
31
+ // produces — the one a reduced-motion preference is most about.
32
+ @include animation.kbq-animations-off();
33
+
13
34
  &.kbq-dropzone-overlay__attached {
14
35
  opacity: 1;
15
36
  }
@@ -21,7 +42,7 @@
21
42
  align-items: center;
22
43
  justify-content: center;
23
44
 
24
- border-radius: var(--kbq-size-border-radius);
45
+ @include kbq-squircle(var(--kbq-size-border-radius));
25
46
  border: var(--kbq-size-border-width) dashed var(--kbq-dropzone-border-color);
26
47
  background-color: var(--kbq-dropzone-component-background);
27
48
 
@@ -55,3 +76,10 @@
55
76
  --kbq-empty-state-size-normal-image-margin-bottom: var(--kbq-size-m);
56
77
  --kbq-empty-state-size-normal-title-margin-bottom: var(--kbq-size-xs);
57
78
  }
79
+
80
+ // Scoped to the dropzone, not to every kbq-file-upload-empty-state: inside the multiple file upload
81
+ // the caption is the secondary foreground, and it shares a line with a link that stays secondary —
82
+ // contrast there would split one sentence into two colors.
83
+ .kbq-dropzone-content .kbq-empty-state.kbq-multiple-file-upload__empty-state {
84
+ --kbq-empty-state-text-color: var(--kbq-foreground-contrast);
85
+ }
@@ -11,21 +11,17 @@
11
11
  --kbq-file-upload-size-single-container-content-gap-horizontal: var(--kbq-size-s);
12
12
  --kbq-file-upload-size-single-container-padding-vertical: var(--kbq-size-m);
13
13
  --kbq-file-upload-size-single-container-padding-horizontal: var(--kbq-size-l);
14
- --kbq-file-upload-size-single-text-block-padding-vertical: var(--kbq-size-3xs);
15
- --kbq-file-upload-size-single-text-block-content-gap-horizontal: var(--kbq-size-xxs);
16
14
  --kbq-file-upload-single-min-height: 44px;
15
+ /* Centers the 16px remove icon in the container: 16px + 2 x 13px fills the 42px content box. */
16
+ --kbq-file-upload-size-single-action-padding: 13px;
17
17
  /* THEME TOKENS */
18
18
  --kbq-file-upload-single-default-container-border: var(--kbq-line-contrast-fade);
19
19
  --kbq-file-upload-single-default-container-background: var(--kbq-background-bg);
20
20
  --kbq-file-upload-single-default-dropzone-icon-color: var(--kbq-icon-contrast-fade);
21
21
  --kbq-file-upload-single-default-left-icon-color: var(--kbq-icon-contrast-fade);
22
- --kbq-file-upload-single-default-text-block-color: var(--kbq-foreground-contrast);
23
22
  --kbq-file-upload-single-default-file-size-text-color: var(--kbq-foreground-contrast-secondary);
24
23
  --kbq-file-upload-single-states-on-drag-container-border: var(--kbq-line-theme-fade);
25
24
  --kbq-file-upload-single-states-on-drag-container-background: var(--kbq-background-theme-fade);
26
- --kbq-file-upload-single-states-on-drag-dropzone-icon-color: var(--kbq-icon-contrast-fade);
27
- --kbq-file-upload-single-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);
28
- --kbq-file-upload-single-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
29
25
  --kbq-file-upload-single-states-error-container-border: var(--kbq-line-error);
30
26
  --kbq-file-upload-single-states-error-container-background: var(--kbq-background-error-less);
31
27
  --kbq-file-upload-single-states-error-dropzone-icon-color: var(--kbq-icon-error);
@@ -38,7 +34,6 @@
38
34
  --kbq-file-upload-single-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);
39
35
  --kbq-file-upload-single-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);
40
36
  --kbq-file-upload-single-states-disabled-file-size-text-color: var(--kbq-states-foreground-disabled);
41
- --kbq-file-upload-single-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
42
37
  }
43
38
 
44
39
  :where(.kbq-multiple-file-upload) {
@@ -50,14 +45,7 @@
50
45
  --kbq-file-upload-size-multiple-big-container-min-width: 320px;
51
46
  --kbq-file-upload-size-multiple-big-container-border-radius: var(--kbq-size-s);
52
47
  --kbq-file-upload-size-multiple-big-container-border-width: 1px;
53
- --kbq-file-upload-size-multiple-big-container-content-gap-horizontal: var(--kbq-size-m);
54
- --kbq-file-upload-size-multiple-big-container-padding-vertical: var(--kbq-size-xxl);
55
- --kbq-file-upload-size-multiple-big-container-padding-horizontal: var(--kbq-size-xxl);
56
- --kbq-file-upload-size-multiple-big-dropzone-content-gap-horizontal: var(--kbq-size-s);
57
- --kbq-file-upload-size-multiple-big-text-block-content-gap-vertical: 0px;
58
- --kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal: var(--kbq-size-xxs);
59
48
  --kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal: var(--kbq-size-s);
60
- --kbq-file-upload-size-multiple-big-grid-cell-padding-vertical: var(--kbq-size-s);
61
49
  --kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal: var(--kbq-size-s);
62
50
  --kbq-file-upload-size-multiple-big-grid-cell-file-size-width: var(--kbq-size-7xl);
63
51
  /* THEME TOKENS */
@@ -67,16 +55,12 @@
67
55
  --kbq-file-upload-multiple-default-dropzone-icon-color: var(--kbq-icon-contrast-fade);
68
56
  --kbq-file-upload-multiple-default-left-icon-color: var(--kbq-icon-contrast-fade);
69
57
  --kbq-file-upload-multiple-default-text-block-color: var(--kbq-foreground-contrast);
70
- --kbq-file-upload-multiple-default-grid-divider-color: var(--kbq-line-contrast-less);
71
58
  --kbq-file-upload-multiple-default-file-size-text-color: var(--kbq-foreground-contrast-secondary);
72
59
 
73
60
  --kbq-file-upload-multiple-states-on-drag-container-border: var(--kbq-line-theme-fade);
74
61
  --kbq-file-upload-multiple-states-on-drag-container-background: var(--kbq-background-theme-fade);
75
62
  --kbq-file-upload-multiple-states-on-drag-upload-icon-color: var(--kbq-icon-contrast);
76
63
  --kbq-file-upload-multiple-states-on-drag-dropzone-icon-color: var(--kbq-icon-contrast-fade);
77
- --kbq-file-upload-multiple-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);
78
- --kbq-file-upload-multiple-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
79
- --kbq-file-upload-multiple-states-on-drag-grid-divider-color: var(--kbq-line-contrast-less);
80
64
 
81
65
  --kbq-file-upload-multiple-states-error-container-border: var(--kbq-line-error);
82
66
  --kbq-file-upload-multiple-states-error-container-background: var(--kbq-background-error-less);
@@ -91,13 +75,9 @@
91
75
  --kbq-file-upload-multiple-states-disabled-dropzone-icon-color: var(--kbq-states-icon-disabled);
92
76
  --kbq-file-upload-multiple-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);
93
77
  --kbq-file-upload-multiple-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);
94
- --kbq-file-upload-multiple-states-disabled-grid-divider-color: var(--kbq-states-line-disabled);
95
- --kbq-file-upload-multiple-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
96
78
  }
97
79
 
98
80
  :where(.kbq-file-upload.kbq-file-upload_compact) {
99
- --kbq-file-upload-multiple-compact-container-content-gap-horizontal: var(--kbq-size-s);
100
- --kbq-file-upload-multiple-compact-text-block-padding-vertical: var(--kbq-size-3xs);
101
81
  --kbq-file-upload-multiple-compact-container-padding-vertical: 11px;
102
82
  --kbq-file-upload-multiple-compact-container-padding-horizontal: 15px;
103
83
  }
@@ -1,5 +1,6 @@
1
1
  @use './file-upload-theme' as theme;
2
2
  @use '../form-field/form-field';
3
+ @use '../core/styles/common/link';
3
4
 
4
5
  .kbq-file-upload {
5
6
  box-sizing: border-box;
@@ -19,6 +20,11 @@
19
20
  }
20
21
  }
21
22
 
23
+ // The file input of a browse link is visually hidden inside its label, so the link shows the keyboard focus
24
+ .kbq-file-loader.cdk-keyboard-focused > .kbq-file-upload__browse-link {
25
+ @include link.kbq-link-keyboard-focus-outline();
26
+ }
27
+
22
28
  .kbq-file-upload__hint {
23
29
  @include form-field.kbq-form-field-hint-geometry();
24
30
  }
@@ -1,3 +1,5 @@
1
+ @use '../core/styles/common/squircle' as *;
2
+
1
3
  @mixin _kbq-list-item($state-name) {
2
4
  --kbq-option-background: var(--kbq-list-#{$state-name}-container-background);
3
5
 
@@ -14,8 +16,8 @@
14
16
  }
15
17
 
16
18
  .kbq-multiple-file-upload__empty-state {
17
- --kbq-empty-state-title: var(--kbq-file-upload-multiple-default-text-block-color);
18
- --kbq-empty-state-color: var(--kbq-file-upload-multiple-default-text-block-color);
19
+ --kbq-empty-state-title-color: var(--kbq-file-upload-multiple-default-text-block-color);
20
+ --kbq-empty-state-text-color: var(--kbq-file-upload-multiple-default-text-block-color);
19
21
  }
20
22
 
21
23
  .kbq-multiple-file-upload__empty-state-upload-icon {
@@ -61,8 +63,8 @@
61
63
  }
62
64
 
63
65
  .kbq-multiple-file-upload__empty-state {
64
- --kbq-empty-state-title: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
65
- --kbq-empty-state-color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
66
+ --kbq-empty-state-title-color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
67
+ --kbq-empty-state-text-color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
66
68
  }
67
69
 
68
70
  .kbq-file-upload__dropzone-caption {
@@ -103,8 +105,8 @@
103
105
  --kbq-file-upload-multiple-default-text-block-color
104
106
  );
105
107
 
106
- --kbq-empty-state-title: var(--kbq-file-upload-multiple-states-error-text-block-color);
107
- --kbq-empty-state-color: var(--kbq-file-upload-multiple-states-error-text-block-color);
108
+ --kbq-empty-state-title-color: var(--kbq-file-upload-multiple-states-error-text-block-color);
109
+ --kbq-empty-state-text-color: var(--kbq-file-upload-multiple-states-error-text-block-color);
108
110
  }
109
111
 
110
112
  .kbq-file-upload__list-footer {
@@ -167,9 +169,9 @@
167
169
  }
168
170
  }
169
171
 
170
- // todo нужно рефакторить со стилями тут сложно
172
+ // TODO: needs a refactor — the nesting and specificity below are hard to follow.
171
173
  .kbq-multiple-file-upload .kbq-file-upload {
172
- border-radius: var(--kbq-file-upload-size-multiple-big-container-border-radius);
174
+ @include kbq-squircle(var(--kbq-file-upload-size-multiple-big-container-border-radius));
173
175
  border-width: var(--kbq-file-upload-size-multiple-big-container-border-width);
174
176
  border-style: dashed;
175
177
 
@@ -204,7 +206,9 @@
204
206
  --kbq-empty-state-size-normal-title-margin-bottom: var(--kbq-size-xs);
205
207
  }
206
208
 
207
- .kbq-file-upload__list {
209
+ // The scroll viewport around the list, not the list itself: every declaration here sizes and pads
210
+ // the scrollport, and `<kbq-list>` sits inside it.
211
+ .kbq-file-upload__list-viewport {
208
212
  // Content-box so that the height cap counts rows and is not eaten by the 27px of padding
209
213
  // below — the same reasoning, and the same wording, as `%kbq-select-content` in
210
214
  // `core/styles/common/_select.scss`. A global `border-box` reset in a consuming application
@@ -214,8 +218,6 @@
214
218
  min-height: var(--kbq-file-upload-size-multiple-min-height);
215
219
  max-height: var(--kbq-file-upload-size-multiple-max-height);
216
220
 
217
- overflow-y: auto;
218
-
219
221
  padding-top: calc(var(--kbq-size-xxs) - var(--kbq-size-border-width));
220
222
  padding-bottom: var(--kbq-size-xxl);
221
223
  }
@@ -294,7 +296,7 @@
294
296
  padding: 0 calc(var(--kbq-size-xxs) - var(--kbq-size-border-width));
295
297
 
296
298
  .kbq-file-upload__row {
297
- border-radius: var(--kbq-size-xs);
299
+ @include kbq-squircle(var(--kbq-size-xs));
298
300
  }
299
301
  }
300
302
 
@@ -1,4 +1,5 @@
1
1
  @use '../core/styles/common/tokens' as *;
2
+ @use '../core/styles/common/squircle' as *;
2
3
 
3
4
  @mixin _kbq-single-file-upload-theme() {
4
5
  background-color: var(--kbq-file-upload-single-default-container-background);
@@ -107,7 +108,7 @@
107
108
  .kbq-file-upload {
108
109
  min-height: var(--kbq-file-upload-single-min-height);
109
110
 
110
- border-radius: var(--kbq-file-upload-size-single-container-border-radius);
111
+ @include kbq-squircle(var(--kbq-file-upload-size-single-container-border-radius));
111
112
  border-width: var(--kbq-file-upload-size-single-container-border-width);
112
113
  border-style: dashed;
113
114
 
@@ -141,7 +142,7 @@
141
142
  }
142
143
 
143
144
  .kbq-file-upload__action {
144
- padding: 13px;
145
+ padding: var(--kbq-file-upload-size-single-action-padding);
145
146
  }
146
147
 
147
148
  @include _kbq-single-file-upload-theme();
@@ -10,6 +10,13 @@
10
10
  & .kbq-button-wrapper {
11
11
  width: 100%;
12
12
  }
13
+
14
+ // the button's default slot is an inline text box; `.kbq-filters__filter-name` truncates
15
+ // itself and is measured by `kbq-title`, so it has to stay a block-level flex item
16
+ & .kbq-button-text {
17
+ display: flex;
18
+ align-items: center;
19
+ }
13
20
  }
14
21
 
15
22
  > .kbq-button .kbq-icon {
@@ -14,9 +14,9 @@
14
14
  height: unset;
15
15
  }
16
16
 
17
- // The button's default slot is a flex row; a pipe puts its own two independently truncated parts
18
- // (name + value) in there as two shrinkable grid tracks instead: as flex items they would give up
19
- // the same percentage, which wipes out a short name long before a long value becomes unreadable.
17
+ // The button's default slot is an inline text box; a pipe puts its own row of two independently
18
+ // truncated parts (name + value) in there, as two shrinkable tracks: as flex items they would give
19
+ // up the same percentage, which wipes out a short name long before a long value becomes unreadable.
20
20
  // Qualified with `.kbq-button` on purpose: the base rule is `.kbq-button .kbq-button-text`, so a
21
21
  // two-class selector would only win on source order, which differs between app bundles.
22
22
  .kbq-button .kbq-button-text {
@@ -31,7 +31,9 @@
31
31
  margin-inline-start: var(--kbq-size-s);
32
32
  align-self: center;
33
33
 
34
- color: var(--kbq-icon-fade-contrast-color);
34
+ // The design token is the fallback because `--kbq-icon-fade-contrast-color` is no longer
35
+ // declared on `.kbq-icon`; this selector outranks the themed one, so it has to carry it.
36
+ color: var(--kbq-icon-fade-contrast-color, var(--kbq-icon-contrast-fade));
35
37
  }
36
38
  }
37
39
  }
@@ -61,6 +63,11 @@
61
63
 
62
64
  gap: var(--kbq-size-s);
63
65
 
66
+ // No header: the pipe template has no presets to go back to.
67
+ &:first-child {
68
+ padding-block-start: var(--kbq-size-l);
69
+ }
70
+
64
71
  & .kbq-form__label {
65
72
  padding-inline-start: var(--kbq-size-l);
66
73
  }
@@ -0,0 +1,22 @@
1
+ // Declared with `:where()` so every token stays at zero specificity: a consumer overriding one from
2
+ // a plain global class rule wins, and the shape modifiers below still win over the base values
3
+ // because they are declared later.
4
+ :where(.kbq-flag) {
5
+ --kbq-flag-aspect-ratio: 3 / 2;
6
+ --kbq-flag-border-radius: 0;
7
+
8
+ // The faded contrast line resolves to a dark hairline in the light theme and a light one in the
9
+ // dark theme, so the flag stays separated from the background in both.
10
+ --kbq-flag-shadow-color: var(--kbq-line-contrast-fade);
11
+ // Opaque on purpose: a translucent fill would take on the hue of a colored card, a selected
12
+ // option or a toast instead of reading as an absent flag.
13
+ --kbq-flag-empty-background: var(--kbq-background-bg-tertiary);
14
+ }
15
+
16
+ :where(.kbq-flag.kbq-flag_square, .kbq-flag.kbq-flag_circle) {
17
+ --kbq-flag-aspect-ratio: 1 / 1;
18
+ }
19
+
20
+ :where(.kbq-flag.kbq-flag_circle) {
21
+ --kbq-flag-border-radius: 50%;
22
+ }
package/flag/flag.scss CHANGED
@@ -1,11 +1,6 @@
1
- .kbq-flag {
2
- // Theme tokens. The faded contrast line resolves to a dark hairline in the light theme and a
3
- // light one in the dark theme, so the flag stays separated from the background in both.
4
- --kbq-flag-shadow-color: var(--kbq-line-contrast-fade);
5
- --kbq-flag-empty-background: var(--kbq-states-background-disabled);
6
- --kbq-flag-border-radius: 0;
7
- --kbq-flag-aspect-ratio: 3 / 2;
1
+ @use '../core/styles/common/squircle' as *;
8
2
 
3
+ .kbq-flag {
9
4
  display: inline-block;
10
5
  position: relative;
11
6
  box-sizing: border-box;
@@ -15,11 +10,12 @@
15
10
  aspect-ratio: var(--kbq-flag-aspect-ratio);
16
11
  vertical-align: middle;
17
12
  overflow: hidden;
18
- border-radius: var(--kbq-flag-border-radius);
13
+ @include kbq-squircle(var(--kbq-flag-border-radius));
14
+
15
+ // The flag fills the box whether it is projected directly or passed through the `svg` input
16
+ // (the markup may sit inside a wrapper element). The two carriers need different mechanisms.
19
17
 
20
- // Size the flag image whether it is projected directly or bound via [innerHTML]
21
- // (the injected svg may sit inside a wrapper element).
22
- svg,
18
+ // `<img>` is a replaced element, so `object-fit` crops it.
23
19
  img {
24
20
  display: block;
25
21
  width: 100%;
@@ -27,27 +23,44 @@
27
23
  object-fit: cover;
28
24
  }
29
25
 
26
+ // An inline `<svg>` is not a replaced element: `object-fit` is dropped on it, and its own
27
+ // `preserveAspectRatio` (`xMidYMid meet`) would letterbox a source whose ratio differs from the
28
+ // shape. Growing it to at least the box in both axes reproduces `cover` — the intrinsic ratio
29
+ // from its `viewBox` keeps it undistorted, and the host clips the overflow.
30
+ svg {
31
+ position: absolute;
32
+ top: 50%;
33
+ left: 50%;
34
+ transform: translate(-50%, -50%);
35
+ width: auto;
36
+ height: auto;
37
+ min-width: 100%;
38
+ min-height: 100%;
39
+ }
40
+
41
+ // The `svg` input renders into this slot instead of the host element, so it cannot overwrite
42
+ // projected content. It generates no box of its own.
43
+ .kbq-flag__svg {
44
+ display: contents;
45
+ }
46
+
30
47
  // Inset hairline drawn on top of the flag, gated by the shadow input.
31
48
  &.kbq-flag_shadow-inset::after {
32
49
  content: '';
33
50
  position: absolute;
34
51
  inset: 0;
35
- border-radius: inherit;
52
+ @include kbq-squircle-inherit();
36
53
  box-shadow: inset 0 0 0 1px var(--kbq-flag-shadow-color);
37
54
  pointer-events: none;
38
55
  }
39
56
 
40
- &.kbq-flag_square,
41
- &.kbq-flag_circle {
42
- --kbq-flag-aspect-ratio: 1 / 1;
43
- }
44
-
45
- &.kbq-flag_circle {
46
- border-radius: 50%;
47
- }
48
-
49
57
  // Neutral placeholder when no flag is projected (unknown / invalid country code).
50
58
  &.kbq-flag_empty {
51
59
  background: var(--kbq-flag-empty-background);
52
60
  }
61
+
62
+ // The 50% radius already draws a circle, a squircle would turn it into a rounded square.
63
+ &.kbq-flag_circle {
64
+ corner-shape: round;
65
+ }
53
66
  }
@@ -1,13 +1,9 @@
1
1
  @use './form-field-theme';
2
- @use './form-field';
3
2
 
4
3
  @mixin kbq-fieldset-theme {
4
+ // Geometry of the hint area lives in `fieldset.scss`, next to the rest of the fieldset layout.
5
5
  .kbq-form-field__hint {
6
6
  @include form-field-theme.kbq-form-field-hint-theme();
7
7
  @include form-field-theme.kbq-form-field-hint-typography();
8
-
9
- &:empty {
10
- margin-top: 0;
11
- }
12
8
  }
13
9
  }
@@ -1,14 +1,13 @@
1
1
  @use '../core/styles/common/tokens';
2
2
 
3
3
  @mixin kbq-form-field-hint-theme {
4
- > .kbq-hint:not(.kbq-password-hint, .kbq-contrast-fade, .kbq-success, .kbq-warning, .kbq-error) {
4
+ > .kbq-hint:not(.kbq-contrast-fade, .kbq-success, .kbq-warning, .kbq-error) {
5
5
  color: var(--kbq-form-field-hint-text);
6
6
  }
7
7
  }
8
8
 
9
9
  @mixin kbq-form-field-hint-typography {
10
- > .kbq-hint:not(.kbq-password-hint, .kbq-reactive-password-hint, .kbq-contrast-fade, .kbq-success, .kbq-warning)
11
- .kbq-hint__text {
10
+ > .kbq-hint:not(.kbq-reactive-password-hint, .kbq-contrast-fade, .kbq-success, .kbq-warning) .kbq-hint__text {
12
11
  @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-compact);
13
12
  }
14
13
  }
@@ -98,9 +97,7 @@
98
97
  }
99
98
 
100
99
  // Invalid by control `ErrorStateMatcher`
101
- &.kbq-form-field_invalid,
102
- // Invalid by `KbqValidateDirective`
103
- &.kbq-form-field_has-validate-directive.ng-invalid {
100
+ &.kbq-form-field_invalid {
104
101
  @include _kbq-form-field-state(states-error);
105
102
  }
106
103
 
@@ -123,9 +120,7 @@
123
120
  }
124
121
 
125
122
  // Invalid by control `ErrorStateMatcher`
126
- &.kbq-form-field_invalid,
127
- // Invalid by `KbqValidateDirective`
128
- &.kbq-form-field_has-validate-directive.ng-invalid {
123
+ &.kbq-form-field_invalid {
129
124
  @include _kbq-form-field-state(states-error);
130
125
 
131
126
  &.cdk-focused .kbq-form-field__container {