@koobiq/components 20.4.2 → 21.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (798) hide show
  1. package/accordion/accordion-trigger.scss +3 -10
  2. package/accordion/accordion.scss +4 -6
  3. package/actions-panel/actions-panel-container.scss +45 -1
  4. package/alert/alert.component.scss +3 -2
  5. package/app-switcher/_app-switcher-theme.scss +0 -4
  6. package/app-switcher/app-switcher-dropdown-app.scss +3 -2
  7. package/app-switcher/app-switcher-dropdown-site.scss +2 -1
  8. package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
  9. package/app-switcher/app-switcher-tokens.scss +15 -0
  10. package/app-switcher/app-switcher.scss +14 -4
  11. package/autocomplete/autocomplete.scss +7 -6
  12. package/badge/badge.component.scss +5 -8
  13. package/breadcrumbs/breadcrumbs.scss +25 -10
  14. package/button/_button-base.scss +30 -7
  15. package/button/_button-theme.scss +16 -0
  16. package/button/button-group.scss +7 -0
  17. package/button/button-tokens.scss +0 -2
  18. package/button/button.scss +34 -2
  19. package/button-toggle/_button-toggle-theme.scss +7 -2
  20. package/button-toggle/button-toggle.scss +65 -15
  21. package/checkbox/_checkbox-theme.scss +4 -3
  22. package/checkbox/checkbox.scss +3 -6
  23. package/clamped-text/clamped-text.scss +6 -2
  24. package/code-block/code-block-tokens.scss +0 -224
  25. package/code-block/code-block.scss +20 -9
  26. package/content-panel/content-panel-aside.scss +3 -2
  27. package/content-panel/content-panel-container.scss +37 -0
  28. package/content-panel/content-panel.scss +4 -3
  29. package/core/highlight/_highlight-theme.scss +3 -1
  30. package/core/option/action-container.scss +2 -2
  31. package/core/option/action.scss +2 -1
  32. package/core/option/option.scss +2 -1
  33. package/core/pop-up/_pop-up.scss +0 -37
  34. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
  35. package/core/styles/_core.scss +3 -0
  36. package/core/styles/_koobiq-theme.scss +5 -6
  37. package/core/styles/common/_animation.scss +44 -16
  38. package/core/styles/common/_groups-mixins.scss +21 -19
  39. package/core/styles/common/_groups.scss +4 -32
  40. package/core/styles/common/_index.scss +0 -2
  41. package/core/styles/common/_link.scss +117 -0
  42. package/core/styles/common/_list.scss +0 -26
  43. package/core/styles/common/_overlay.scss +8 -10
  44. package/core/styles/common/_rtl.scss +0 -14
  45. package/core/styles/common/_select.scss +33 -15
  46. package/core/styles/common/_squircle.scss +63 -0
  47. package/core/styles/common/_tokens.scss +0 -11
  48. package/core/styles/common/_vendor-prefixes.scss +0 -20
  49. package/core/styles/functions/_timing.scss +0 -22
  50. package/core/styles/theming/_scrollbar-theme.scss +6 -1
  51. package/core/styles/theming/_theming.scss +13 -65
  52. package/core/styles/typography/_index.scss +0 -1
  53. package/core/styles/typography/_typography.scss +0 -143
  54. package/core/styles/visual/_body.scss +1 -6
  55. package/core/styles/visual/_layout.scss +0 -12
  56. package/datepicker/calendar-body.scss +3 -1
  57. package/datepicker/calendar-header.scss +0 -1
  58. package/datepicker/datepicker-content.scss +33 -1
  59. package/datepicker/datepicker-toggle.scss +0 -38
  60. package/dl/dl-tokens.scss +10 -0
  61. package/dl/dl.scss +113 -13
  62. package/dropdown/_dropdown-theme.scss +4 -16
  63. package/dropdown/dropdown-item.scss +4 -10
  64. package/dropdown/dropdown.scss +2 -1
  65. package/empty-state/_empty-state-theme.scss +10 -4
  66. package/empty-state/empty-state-tokens.scss +4 -4
  67. package/empty-state/empty-state.scss +4 -0
  68. package/fesm2022/koobiq-components-accordion.mjs +347 -229
  69. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
  71. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-alert.mjs +39 -39
  73. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
  75. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
  77. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-badge.mjs +46 -48
  79. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
  81. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
  83. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-button.mjs +332 -116
  85. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-checkbox.mjs +172 -132
  87. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
  89. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-code-block.mjs +791 -609
  91. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-content-panel.mjs +260 -143
  93. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-core.mjs +4342 -1595
  95. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
  97. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-divider.mjs +73 -36
  99. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-dl.mjs +447 -89
  101. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-dropdown.mjs +703 -599
  103. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
  105. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
  107. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-empty-state.mjs +116 -60
  109. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-file-upload.mjs +550 -290
  111. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-filter-bar.mjs +2871 -2595
  113. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-flag.mjs +79 -24
  115. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-form-field.mjs +389 -525
  117. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-icon.mjs +400 -149
  119. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
  121. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-input.mjs +601 -459
  123. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
  125. package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
  126. package/fesm2022/koobiq-components-link.mjs +328 -125
  127. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-list.mjs +583 -433
  129. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
  131. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-markdown.mjs +55 -78
  133. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-modal.mjs +853 -475
  135. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-navbar.mjs +895 -556
  137. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-notification-center.mjs +680 -310
  139. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
  141. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-popover.mjs +684 -285
  143. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
  145. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
  147. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-radio.mjs +450 -231
  149. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-resizer.mjs +127 -21
  151. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
  153. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
  154. package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
  155. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
  157. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-select.mjs +883 -693
  159. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-sidebar.mjs +207 -88
  161. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
  163. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-skeleton.mjs +815 -41
  165. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-split-button.mjs +109 -88
  167. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
  169. package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
  170. package/fesm2022/koobiq-components-splitter.mjs +890 -501
  171. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-table.mjs +63 -49
  173. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-tabs.mjs +1062 -603
  175. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-tags.mjs +886 -733
  177. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-textarea.mjs +213 -185
  179. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-time-range.mjs +299 -147
  181. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-timepicker.mjs +233 -245
  183. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-timezone.mjs +344 -142
  185. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-title.mjs +229 -145
  187. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-toast.mjs +463 -143
  189. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-toggle.mjs +177 -130
  191. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-tooltip.mjs +657 -214
  193. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-top-bar.mjs +61 -32
  195. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-tree-select.mjs +734 -488
  197. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-tree.mjs +1700 -617
  199. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-username.mjs +290 -135
  201. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  202. package/file-upload/dropzone.scss +31 -3
  203. package/file-upload/file-upload-tokens.scss +2 -22
  204. package/file-upload/file-upload.scss +6 -0
  205. package/file-upload/multiple-file-upload.component.scss +14 -12
  206. package/file-upload/single-file-upload.component.scss +3 -2
  207. package/filter-bar/filters.scss +7 -0
  208. package/filter-bar/pipes/base-pipe.scss +3 -3
  209. package/filter-bar/pipes/pipe-date.scss +8 -1
  210. package/flag/flag-tokens.scss +22 -0
  211. package/flag/flag.scss +34 -21
  212. package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
  213. package/form-field/_form-field-theme.scss +4 -9
  214. package/form-field/cleaner.scss +3 -1
  215. package/form-field/fieldset.scss +3 -4
  216. package/form-field/form-field.scss +26 -21
  217. package/form-field/password-toggle.scss +3 -1
  218. package/icon/_icon-button-theme.scss +7 -0
  219. package/icon/_icon-theme.scss +10 -7
  220. package/icon/icon-button.scss +0 -2
  221. package/icon/icon-tokens.scss +12 -9
  222. package/inline-edit/inline-edit.scss +40 -54
  223. package/input/input.scss +4 -0
  224. package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
  225. package/link/deprecated/link-tokens.scss +27 -0
  226. package/link/link-tokens.scss +6 -25
  227. package/link/link.scss +137 -0
  228. package/list/list.scss +3 -2
  229. package/loader-overlay/_loader-overlay-theme.scss +19 -10
  230. package/loader-overlay/loader-overlay-tokens.scss +0 -2
  231. package/loader-overlay/loader-overlay.scss +7 -1
  232. package/markdown/_markdown-theme.scss +16 -0
  233. package/markdown/markdown-tokens.scss +5 -0
  234. package/markdown/markdown.scss +2 -1
  235. package/modal/_modal-animation.scss +23 -14
  236. package/modal/modal-tokens.scss +2 -1
  237. package/modal/modal.scss +35 -31
  238. package/navbar/_navbar-item_horizontal.scss +8 -6
  239. package/navbar/_navbar-item_vertical.scss +18 -6
  240. package/navbar/_navbar-theme.scss +9 -1
  241. package/navbar/navbar-brand.scss +8 -6
  242. package/navbar/navbar-divider.scss +1 -1
  243. package/navbar/navbar-item.scss +8 -9
  244. package/navbar/navbar-toggle.scss +3 -3
  245. package/navbar/navbar-tokens.scss +14 -0
  246. package/navbar/navbar.scss +1 -2
  247. package/navbar/vertical-navbar.scss +2 -2
  248. package/notification-center/_notification-center-theme.scss +11 -6
  249. package/notification-center/notification-center-tokens.scss +33 -0
  250. package/notification-center/notification-center.scss +58 -20
  251. package/notification-center/notification-item.scss +15 -6
  252. package/package.json +112 -81
  253. package/popover/popover-tokens.scss +0 -2
  254. package/popover/popover.scss +41 -19
  255. package/prebuilt-themes/theme.css +1 -1
  256. package/progress-bar/_progress-bar-theme.scss +20 -3
  257. package/progress-bar/progress-bar-tokens.scss +3 -0
  258. package/progress-bar/progress-bar.scss +36 -8
  259. package/progress-spinner/progress-spinner.scss +4 -3
  260. package/radio/_radio-theme.scss +21 -4
  261. package/radio/radio-tokens.scss +7 -3
  262. package/radio/radio.scss +55 -8
  263. package/schematics/collection.json +415 -18
  264. package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
  265. package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
  266. package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -0
  267. package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
  268. package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
  269. package/schematics/migrations/actions-panel-overlay-container/data.cjs +47 -0
  270. package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -0
  271. package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
  272. package/schematics/migrations/alert-signals/README.md +13 -7
  273. package/schematics/migrations/alert-signals/{data.js → data.cjs} +3 -0
  274. package/schematics/migrations/alert-signals/index.cjs +221 -0
  275. package/schematics/migrations/angular-animations-removal/README.md +46 -0
  276. package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
  277. package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
  278. package/schematics/migrations/angular-animations-removal/schema.json +15 -0
  279. package/schematics/migrations/app-switcher-signals/README.md +88 -0
  280. package/schematics/migrations/app-switcher-signals/data.cjs +136 -0
  281. package/schematics/migrations/app-switcher-signals/index.cjs +366 -0
  282. package/schematics/migrations/app-switcher-signals/schema.json +20 -0
  283. package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
  284. package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
  285. package/schematics/migrations/autocomplete-signals/README.md +92 -0
  286. package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
  287. package/schematics/migrations/autocomplete-signals/index.cjs +707 -0
  288. package/schematics/migrations/autocomplete-signals/schema.json +20 -0
  289. package/schematics/migrations/badge-signals/README.md +77 -0
  290. package/schematics/migrations/badge-signals/data.cjs +109 -0
  291. package/schematics/migrations/badge-signals/index.cjs +694 -0
  292. package/schematics/migrations/badge-signals/schema.json +20 -0
  293. package/schematics/migrations/button-state-and-styles/README.md +129 -0
  294. package/schematics/migrations/button-state-and-styles/data.cjs +136 -0
  295. package/schematics/migrations/button-state-and-styles/index.cjs +221 -0
  296. package/schematics/migrations/button-state-and-styles/schema.json +20 -0
  297. package/schematics/migrations/button-supported-colors/README.md +73 -0
  298. package/schematics/migrations/button-supported-colors/data.cjs +106 -0
  299. package/schematics/migrations/button-supported-colors/index.cjs +261 -0
  300. package/schematics/migrations/button-supported-colors/schema.json +20 -0
  301. package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
  302. package/schematics/migrations/button-toggle-signals-and-aria/data.cjs +200 -0
  303. package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -0
  304. package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
  305. package/schematics/migrations/button-truncation/README.md +110 -0
  306. package/schematics/migrations/button-truncation/data.cjs +88 -0
  307. package/schematics/migrations/button-truncation/index.cjs +270 -0
  308. package/schematics/migrations/button-truncation/schema.json +20 -0
  309. package/schematics/migrations/checkbox-signals/README.md +76 -0
  310. package/schematics/migrations/checkbox-signals/data.cjs +114 -0
  311. package/schematics/migrations/checkbox-signals/index.cjs +635 -0
  312. package/schematics/migrations/checkbox-signals/schema.json +20 -0
  313. package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
  314. package/schematics/migrations/clamped-text-disclosure/data.cjs +101 -0
  315. package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
  316. package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
  317. package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
  318. package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
  319. package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
  320. package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
  321. package/schematics/migrations/code-block-signals/README.md +84 -0
  322. package/schematics/migrations/code-block-signals/data.cjs +121 -0
  323. package/schematics/migrations/code-block-signals/index.cjs +701 -0
  324. package/schematics/migrations/code-block-signals/schema.json +20 -0
  325. package/schematics/migrations/color-signals/README.md +46 -0
  326. package/schematics/migrations/color-signals/data.cjs +131 -0
  327. package/schematics/migrations/color-signals/index.cjs +20 -0
  328. package/schematics/migrations/color-signals/schema.json +20 -0
  329. package/schematics/migrations/core-mixins-removal/README.md +20 -0
  330. package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
  331. package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
  332. package/schematics/migrations/core-mixins-removal/schema.json +15 -0
  333. package/schematics/migrations/css-selectors/README.md +2 -2
  334. package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
  335. package/schematics/migrations/datepicker-signals/README.md +24 -0
  336. package/schematics/migrations/datepicker-signals/data.cjs +49 -0
  337. package/schematics/migrations/datepicker-signals/index.cjs +18 -0
  338. package/schematics/migrations/datepicker-signals/schema.json +15 -0
  339. package/schematics/migrations/deprecated-icons/README.md +2 -2
  340. package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
  341. package/schematics/migrations/design-tokens-v4/README.md +75 -0
  342. package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
  343. package/schematics/migrations/design-tokens-v4/schema.json +15 -0
  344. package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
  345. package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
  346. package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
  347. package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
  348. package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
  349. package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
  350. package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
  351. package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
  352. package/schematics/migrations/dl-standalone-names/README.md +49 -0
  353. package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
  354. package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
  355. package/schematics/migrations/dl-standalone-names/schema.json +20 -0
  356. package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
  357. package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
  358. package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
  359. package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
  360. package/schematics/migrations/dropdown-signals/README.md +83 -0
  361. package/schematics/migrations/dropdown-signals/data.cjs +152 -0
  362. package/schematics/migrations/dropdown-signals/index.cjs +20 -0
  363. package/schematics/migrations/dropdown-signals/schema.json +20 -0
  364. package/schematics/migrations/empty-state-error-color/README.md +84 -0
  365. package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
  366. package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
  367. package/schematics/migrations/empty-state-error-color/schema.json +15 -0
  368. package/schematics/migrations/empty-state-size-attr/README.md +2 -2
  369. package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
  370. package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
  371. package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
  372. package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
  373. package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
  374. package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
  375. package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
  376. package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
  377. package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
  378. package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
  379. package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
  380. package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
  381. package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
  382. package/schematics/migrations/filter-bar-signals/README.md +27 -16
  383. package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
  384. package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
  385. package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
  386. package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
  387. package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
  388. package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
  389. package/schematics/migrations/flag-inner-html/README.md +67 -0
  390. package/schematics/migrations/flag-inner-html/data.cjs +58 -0
  391. package/schematics/migrations/flag-inner-html/index.cjs +62 -0
  392. package/schematics/migrations/flag-inner-html/schema.json +15 -0
  393. package/schematics/migrations/form-field-signals/README.md +125 -0
  394. package/schematics/migrations/form-field-signals/data.cjs +288 -0
  395. package/schematics/migrations/form-field-signals/index.cjs +383 -0
  396. package/schematics/migrations/form-field-signals/schema.json +20 -0
  397. package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
  398. package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
  399. package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
  400. package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
  401. package/schematics/migrations/icons-replacement/README.md +5 -5
  402. package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
  403. package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
  404. package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
  405. package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
  406. package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
  407. package/schematics/migrations/input-number-surface/README.md +140 -0
  408. package/schematics/migrations/input-number-surface/data.cjs +135 -0
  409. package/schematics/migrations/input-number-surface/index.cjs +293 -0
  410. package/schematics/migrations/input-number-surface/schema.json +20 -0
  411. package/schematics/migrations/input-signals/README.md +20 -0
  412. package/schematics/migrations/input-signals/data.cjs +30 -0
  413. package/schematics/migrations/input-signals/index.cjs +18 -0
  414. package/schematics/migrations/input-signals/schema.json +15 -0
  415. package/schematics/migrations/link-deprecated-path/README.md +144 -0
  416. package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
  417. package/schematics/migrations/link-deprecated-path/schema.json +20 -0
  418. package/schematics/migrations/link-signals/README.md +71 -0
  419. package/schematics/migrations/link-signals/data.cjs +116 -0
  420. package/schematics/migrations/link-signals/index.cjs +416 -0
  421. package/schematics/migrations/link-signals/schema.json +20 -0
  422. package/schematics/migrations/list-signals/README.md +22 -0
  423. package/schematics/migrations/list-signals/data.cjs +35 -0
  424. package/schematics/migrations/list-signals/index.cjs +18 -0
  425. package/schematics/migrations/list-signals/schema.json +15 -0
  426. package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
  427. package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
  428. package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
  429. package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
  430. package/schematics/migrations/loader-overlay-signals/README.md +62 -0
  431. package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
  432. package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
  433. package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
  434. package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
  435. package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
  436. package/schematics/migrations/locale-configuration-providers/README.md +163 -0
  437. package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
  438. package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
  439. package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
  440. package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
  441. package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
  442. package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
  443. package/schematics/migrations/markdown-signals/README.md +58 -0
  444. package/schematics/migrations/markdown-signals/data.cjs +79 -0
  445. package/schematics/migrations/markdown-signals/index.cjs +640 -0
  446. package/schematics/migrations/markdown-signals/schema.json +20 -0
  447. package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
  448. package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
  449. package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
  450. package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
  451. package/schematics/migrations/modal-signals/README.md +88 -0
  452. package/schematics/migrations/modal-signals/data.cjs +132 -0
  453. package/schematics/migrations/modal-signals/index.cjs +20 -0
  454. package/schematics/migrations/modal-signals/schema.json +20 -0
  455. package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
  456. package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
  457. package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
  458. package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
  459. package/schematics/migrations/new-icons-pack/README.md +10 -10
  460. package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
  461. package/schematics/migrations/notification-center-signals/README.md +67 -0
  462. package/schematics/migrations/notification-center-signals/data.cjs +66 -0
  463. package/schematics/migrations/notification-center-signals/index.cjs +62 -0
  464. package/schematics/migrations/notification-center-signals/schema.json +15 -0
  465. package/schematics/migrations/option-signals/README.md +37 -0
  466. package/schematics/migrations/option-signals/data.cjs +86 -0
  467. package/schematics/migrations/option-signals/index.cjs +20 -0
  468. package/schematics/migrations/option-signals/schema.json +20 -0
  469. package/schematics/migrations/popover-leave-delay/README.md +51 -0
  470. package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
  471. package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
  472. package/schematics/migrations/popover-leave-delay/schema.json +15 -0
  473. package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
  474. package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
  475. package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
  476. package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
  477. package/schematics/migrations/progress-spinner-signals/README.md +72 -0
  478. package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
  479. package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
  480. package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
  481. package/schematics/migrations/query-list-signals/README.md +32 -0
  482. package/schematics/migrations/query-list-signals/data.cjs +70 -0
  483. package/schematics/migrations/query-list-signals/index.cjs +18 -0
  484. package/schematics/migrations/query-list-signals/schema.json +15 -0
  485. package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
  486. package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
  487. package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
  488. package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
  489. package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
  490. package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
  491. package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
  492. package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
  493. package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
  494. package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
  495. package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
  496. package/schematics/migrations/select-signal-inputs/README.md +61 -0
  497. package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
  498. package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
  499. package/schematics/migrations/select-signal-inputs/schema.json +15 -0
  500. package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
  501. package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
  502. package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
  503. package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
  504. package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
  505. package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
  506. package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
  507. package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
  508. package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
  509. package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
  510. package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
  511. package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
  512. package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
  513. package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
  514. package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
  515. package/schematics/migrations/state-saving-default/README.md +67 -0
  516. package/schematics/migrations/state-saving-default/data.cjs +88 -0
  517. package/schematics/migrations/state-saving-default/index.cjs +63 -0
  518. package/schematics/migrations/state-saving-default/schema.json +15 -0
  519. package/schematics/migrations/table-cell-content/README.md +55 -0
  520. package/schematics/migrations/table-cell-content/data.cjs +66 -0
  521. package/schematics/migrations/table-cell-content/index.cjs +67 -0
  522. package/schematics/migrations/table-cell-content/schema.json +15 -0
  523. package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
  524. package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
  525. package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
  526. package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
  527. package/schematics/migrations/tag-list-cleaner/README.md +58 -0
  528. package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
  529. package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
  530. package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
  531. package/schematics/migrations/tag-slots/README.md +41 -0
  532. package/schematics/migrations/tag-slots/index.cjs +191 -0
  533. package/schematics/migrations/tag-slots/schema.json +20 -0
  534. package/schematics/migrations/tags-signals/README.md +85 -0
  535. package/schematics/migrations/tags-signals/data.cjs +103 -0
  536. package/schematics/migrations/tags-signals/index.cjs +674 -0
  537. package/schematics/migrations/tags-signals/schema.json +20 -0
  538. package/schematics/migrations/textarea-signals/README.md +72 -0
  539. package/schematics/migrations/textarea-signals/data.cjs +121 -0
  540. package/schematics/migrations/textarea-signals/index.cjs +380 -0
  541. package/schematics/migrations/textarea-signals/schema.json +20 -0
  542. package/schematics/migrations/time-range-title-for/README.md +164 -0
  543. package/schematics/migrations/time-range-title-for/data.cjs +139 -0
  544. package/schematics/migrations/time-range-title-for/index.cjs +164 -0
  545. package/schematics/migrations/time-range-title-for/schema.json +20 -0
  546. package/schematics/migrations/timepicker-signals/README.md +78 -0
  547. package/schematics/migrations/timepicker-signals/data.cjs +82 -0
  548. package/schematics/migrations/timepicker-signals/index.cjs +710 -0
  549. package/schematics/migrations/timepicker-signals/schema.json +20 -0
  550. package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
  551. package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
  552. package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
  553. package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
  554. package/schematics/migrations/title-encapsulation/README.md +49 -0
  555. package/schematics/migrations/title-encapsulation/data.cjs +69 -0
  556. package/schematics/migrations/title-encapsulation/index.cjs +58 -0
  557. package/schematics/migrations/title-encapsulation/schema.json +15 -0
  558. package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
  559. package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
  560. package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
  561. package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
  562. package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
  563. package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
  564. package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
  565. package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
  566. package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
  567. package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
  568. package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
  569. package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
  570. package/schematics/migrations/tree-select-signals/README.md +61 -0
  571. package/schematics/migrations/tree-select-signals/data.cjs +106 -0
  572. package/schematics/migrations/tree-select-signals/index.cjs +59 -0
  573. package/schematics/migrations/tree-select-signals/schema.json +15 -0
  574. package/schematics/migrations/tree-signals/README.md +82 -0
  575. package/schematics/migrations/tree-signals/data.cjs +123 -0
  576. package/schematics/migrations/tree-signals/index.cjs +55 -0
  577. package/schematics/migrations/tree-signals/schema.json +15 -0
  578. package/schematics/migrations/tree-state-saving-default/README.md +66 -0
  579. package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
  580. package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
  581. package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
  582. package/schematics/migrations/username-pipe-injection/README.md +59 -0
  583. package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
  584. package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
  585. package/schematics/migrations/username-pipe-injection/schema.json +15 -0
  586. package/schematics/migrations/v20-upgrade/README.md +36 -16
  587. package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
  588. package/schematics/migrations/v20-upgrade/index.cjs +19 -0
  589. package/schematics/migrations/v21-upgrade/README.md +271 -0
  590. package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
  591. package/schematics/migrations/v21-upgrade/index.cjs +95 -0
  592. package/schematics/migrations/v21-upgrade/schema.json +20 -0
  593. package/schematics/migrations/zoneless-change-detection/README.md +30 -0
  594. package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
  595. package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
  596. package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
  597. package/schematics/migrations.json +401 -6
  598. package/schematics/ng-add/index.cjs +266 -0
  599. package/schematics/ng-add/schema.json +15 -0
  600. package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
  601. package/schematics/utils/deprecated-path-migration.cjs +62 -0
  602. package/schematics/utils/html-config.cjs +148 -0
  603. package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
  604. package/schematics/utils/list-item-pattern.cjs +16 -0
  605. package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
  606. package/schematics/utils/project-files.cjs +25 -0
  607. package/schematics/utils/replacement-driver.cjs +337 -0
  608. package/schematics/utils/safe-rule.cjs +23 -0
  609. package/schematics/utils/signal-members-migration.cjs +779 -0
  610. package/schematics/utils/tag-patterns.cjs +21 -0
  611. package/schematics/utils/template-ref-access.cjs +155 -0
  612. package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
  613. package/schematics/utils/warn-only-migration.cjs +52 -0
  614. package/schematics/utils/workspace-styles.cjs +123 -0
  615. package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
  616. package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
  617. package/scrollbar/native-scrollbar.scss +68 -0
  618. package/scrollbar/scrollbar-tokens.scss +13 -22
  619. package/scrollbar/scrollbar-track.scss +94 -0
  620. package/scrollbar/scrollbar-viewport.scss +33 -0
  621. package/scrollbar/scrollbar.scss +24 -0
  622. package/search-expandable/search-expandable-tokens.scss +4 -0
  623. package/search-expandable/search-expandable.scss +4 -2
  624. package/select/_select-theme.scss +3 -16
  625. package/select/select.scss +0 -6
  626. package/sidebar/sidebar.scss +20 -0
  627. package/sidepanel/_sidepanel-theme.scss +1 -1
  628. package/sidepanel/sidepanel-tokens.scss +7 -1
  629. package/sidepanel/sidepanel.scss +41 -5
  630. package/skeleton/skeleton-presets.scss +350 -0
  631. package/skeleton/skeleton-tokens.scss +127 -0
  632. package/skeleton/skeleton.scss +53 -45
  633. package/split-button/_split-button-theme.scss +4 -4
  634. package/split-button/split-button.scss +2 -6
  635. package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
  636. package/splitter/deprecated/splitter.scss +51 -0
  637. package/splitter/splitter-tokens.scss +19 -0
  638. package/splitter/splitter.scss +148 -28
  639. package/table/_table-theme.scss +13 -12
  640. package/table/table-tokens.scss +8 -0
  641. package/table/table.scss +47 -22
  642. package/tabs/_tabs-common.scss +14 -14
  643. package/tabs/_tabs-theme.scss +4 -5
  644. package/tabs/tab-body.scss +49 -1
  645. package/tabs/tab-header.scss +2 -1
  646. package/tags/tag-list.scss +4 -0
  647. package/tags/tag.scss +19 -1
  648. package/time-range/time-range.scss +9 -0
  649. package/timezone/timezone-option.component.scss +4 -7
  650. package/timezone/timezone-select.component.scss +3 -0
  651. package/toast/_toast-theme.scss +1 -4
  652. package/toast/toast-container.component.scss +19 -13
  653. package/toast/toast-tokens.scss +12 -6
  654. package/toast/toast.component.scss +42 -19
  655. package/toggle/_toggle-theme.scss +4 -10
  656. package/toggle/toggle.scss +67 -26
  657. package/tooltip/_tooltip-theme.scss +7 -1
  658. package/tooltip/tooltip-tokens.scss +1 -2
  659. package/tooltip/tooltip.scss +55 -9
  660. package/top-bar/top-bar-tokens.scss +13 -2
  661. package/top-bar/top-bar.scss +24 -19
  662. package/tree/_tree-theme.scss +0 -1
  663. package/tree/toggle.scss +5 -9
  664. package/tree/tree-option.scss +2 -4
  665. package/tree/tree-tokens.scss +2 -1
  666. package/tree/tree.scss +3 -5
  667. package/tree-select/_tree-select-theme.scss +4 -15
  668. package/tree-select/tree-select-tokens.scss +16 -0
  669. package/tree-select/tree-select.scss +0 -6
  670. package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
  671. package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
  672. package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
  673. package/types/koobiq-components-app-switcher.d.ts +406 -0
  674. package/types/koobiq-components-autocomplete.d.ts +443 -0
  675. package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
  676. package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
  677. package/types/koobiq-components-button-toggle.d.ts +340 -0
  678. package/types/koobiq-components-button.d.ts +296 -0
  679. package/types/koobiq-components-checkbox.d.ts +172 -0
  680. package/types/koobiq-components-clamped-text.d.ts +184 -0
  681. package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
  682. package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
  683. package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
  684. package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
  685. package/types/koobiq-components-divider.d.ts +43 -0
  686. package/types/koobiq-components-dl.d.ts +235 -0
  687. package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
  688. package/types/koobiq-components-ellipsis-center.d.ts +85 -0
  689. package/types/koobiq-components-empty-state.d.ts +106 -0
  690. package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
  691. package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
  692. package/types/koobiq-components-flag.d.ts +68 -0
  693. package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
  694. package/types/koobiq-components-icon.d.ts +333 -0
  695. package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
  696. package/types/koobiq-components-input.d.ts +477 -0
  697. package/types/koobiq-components-link-deprecated.d.ts +101 -0
  698. package/types/koobiq-components-link.d.ts +176 -0
  699. package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
  700. package/types/koobiq-components-loader-overlay.d.ts +101 -0
  701. package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
  702. package/types/koobiq-components-modal.d.ts +666 -0
  703. package/types/koobiq-components-navbar.d.ts +569 -0
  704. package/types/koobiq-components-notification-center.d.ts +500 -0
  705. package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
  706. package/types/koobiq-components-popover.d.ts +468 -0
  707. package/types/koobiq-components-progress-bar.d.ts +67 -0
  708. package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
  709. package/types/koobiq-components-radio.d.ts +294 -0
  710. package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
  711. package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
  712. package/types/koobiq-components-scrollbar.d.ts +154 -0
  713. package/types/koobiq-components-search-expandable.d.ts +164 -0
  714. package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
  715. package/types/koobiq-components-sidebar.d.ts +152 -0
  716. package/types/koobiq-components-sidepanel.d.ts +436 -0
  717. package/types/koobiq-components-skeleton.d.ts +234 -0
  718. package/types/koobiq-components-split-button.d.ts +65 -0
  719. package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
  720. package/types/koobiq-components-splitter.d.ts +406 -0
  721. package/types/koobiq-components-table.d.ts +44 -0
  722. package/types/koobiq-components-tabs.d.ts +888 -0
  723. package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
  724. package/types/koobiq-components-textarea.d.ts +178 -0
  725. package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
  726. package/types/koobiq-components-timepicker.d.ts +223 -0
  727. package/types/koobiq-components-timezone.d.ts +266 -0
  728. package/types/koobiq-components-title.d.ts +184 -0
  729. package/types/koobiq-components-toast.d.ts +289 -0
  730. package/types/koobiq-components-toggle.d.ts +121 -0
  731. package/types/koobiq-components-tooltip.d.ts +610 -0
  732. package/types/koobiq-components-top-bar.d.ts +61 -0
  733. package/types/koobiq-components-tree-select.d.ts +670 -0
  734. package/types/koobiq-components-tree.d.ts +1339 -0
  735. package/types/koobiq-components-username.d.ts +340 -0
  736. package/username/_username-theme.scss +35 -0
  737. package/username/username.scss +10 -34
  738. package/app-switcher/index.d.ts +0 -276
  739. package/autocomplete/index.d.ts +0 -286
  740. package/button/index.d.ts +0 -153
  741. package/button-toggle/index.d.ts +0 -162
  742. package/checkbox/index.d.ts +0 -163
  743. package/clamped-text/index.d.ts +0 -146
  744. package/core/styles/_tokens.scss +0 -7
  745. package/core/styles/common/_clearfix.scss +0 -13
  746. package/core/styles/common/_popup.scss +0 -6
  747. package/core/styles/functions/_index.scss +0 -3
  748. package/core/styles/functions/_number.scss +0 -60
  749. package/core/styles/functions/_string.scss +0 -18
  750. package/core/styles/theming/scrollbar-tokens.scss +0 -25
  751. package/core/styles/typography/_typography-utils.scss +0 -84
  752. package/divider/index.d.ts +0 -20
  753. package/dl/index.d.ts +0 -45
  754. package/ellipsis-center/index.d.ts +0 -71
  755. package/empty-state/index.d.ts +0 -45
  756. package/flag/index.d.ts +0 -44
  757. package/icon/index.d.ts +0 -200
  758. package/input/index.d.ts +0 -354
  759. package/link/index.d.ts +0 -56
  760. package/loader-overlay/index.d.ts +0 -57
  761. package/modal/index.d.ts +0 -339
  762. package/navbar/index.d.ts +0 -372
  763. package/notification-center/index.d.ts +0 -323
  764. package/popover/index.d.ts +0 -182
  765. package/prebuilt-themes/dark-theme.css +0 -1
  766. package/prebuilt-themes/light-theme.css +0 -1
  767. package/progress-bar/index.d.ts +0 -31
  768. package/radio/index.d.ts +0 -203
  769. package/schematics/migrations/alert-signals/index.js +0 -353
  770. package/schematics/migrations/filter-bar-signals/index.js +0 -319
  771. package/schematics/migrations/v20-upgrade/index.js +0 -225
  772. package/schematics/ng-add/index.js +0 -39
  773. package/search-expandable/index.d.ts +0 -101
  774. package/sidebar/index.d.ts +0 -94
  775. package/sidepanel/index.d.ts +0 -272
  776. package/skeleton/index.d.ts +0 -26
  777. package/split-button/index.d.ts +0 -46
  778. package/table/index.d.ts +0 -25
  779. package/tabs/index.d.ts +0 -677
  780. package/textarea/index.d.ts +0 -138
  781. package/timepicker/index.d.ts +0 -197
  782. package/timezone/index.d.ts +0 -125
  783. package/title/index.d.ts +0 -139
  784. package/toast/index.d.ts +0 -178
  785. package/toggle/index.d.ts +0 -104
  786. package/tooltip/index.d.ts +0 -335
  787. package/top-bar/index.d.ts +0 -33
  788. package/tree/index.d.ts +0 -802
  789. package/tree-select/index.d.ts +0 -475
  790. package/username/index.d.ts +0 -194
  791. /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
  792. /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
  793. /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
  794. /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
  795. /package/schematics/utils/{ast.js → ast.cjs} +0 -0
  796. /package/schematics/utils/{messages.js → messages.cjs} +0 -0
  797. /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
  798. /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
@@ -1,12 +1,12 @@
1
- import { FocusMonitor, A11yModule } from '@angular/cdk/a11y';
1
+ import { _IdGenerator, FocusMonitor, A11yModule } from '@angular/cdk/a11y';
2
2
  import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
3
+ import { Platform } from '@angular/cdk/platform';
3
4
  import * as i0 from '@angular/core';
4
- import { forwardRef, inject, ChangeDetectorRef, input, output, booleanAttribute, ContentChildren, Input, Directive, viewChild, numberAttribute, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
5
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
- import { KbqColorDirective } from '@koobiq/components/core';
5
+ import { forwardRef, untracked, inject, Injector, input, signal, booleanAttribute, computed, contentChild, contentChildren, Renderer2, output, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, ChangeDetectorRef, viewChild, NgModule } from '@angular/core';
6
+ import { NG_VALUE_ACCESSOR, FormGroupDirective, NgForm, NgControl } from '@angular/forms';
7
+ import { KbqColorDirective, KbqErrorStateTracker, ErrorStateMatcher, kbqQueryListFrom, kbqOptionalNumberAttribute } from '@koobiq/components/core';
8
+ import { KbqError, KbqHint } from '@koobiq/components/form-field';
7
9
 
8
- // Increasing integer for generating unique ids for radio components.
9
- let nextUniqueId = 0;
10
10
  /** Change event object emitted by KbqRadio. */
11
11
  class KbqRadioChange {
12
12
  constructor(
@@ -21,6 +21,7 @@ class KbqRadioChange {
21
21
  /**
22
22
  * Provider Expression that allows kbq-radio-group to register as a ControlValueAccessor. This
23
23
  * allows it to support [(ngModel)] and ngControl.
24
+ *
24
25
  * @docs-private
25
26
  */
26
27
  const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {
@@ -28,122 +29,237 @@ const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {
28
29
  useExisting: forwardRef(() => KbqRadioGroup),
29
30
  multi: true
30
31
  };
31
- class KbqRadioGroup {
32
+ /**
33
+ * Selection group for `KbqRadioButton`.
34
+ *
35
+ * The host is a `radiogroup`, which is not a name-from-content role, so it reaches assistive
36
+ * technology unnamed unless the consumer names it. Name it with a plain `aria-label` /
37
+ * `aria-labelledby` attribute pointing at the visible group label: the host is the very element the
38
+ * consumer writes, so an input aliased to the same name would only write back what is already there —
39
+ * and would wipe an `[attr.aria-label]` binding, which never reaches the input.
40
+ *
41
+ * To show a validation error, bind the group to a form control and put the error text in a `kbq-error` inside the
42
+ * group. A `kbq-hint` put inside the group is shown under the options, below the error.
43
+ */
44
+ class KbqRadioGroup extends KbqColorDirective {
45
+ /** Value of the radio button. */
46
+ // `value`, `selected` and `disabled` are accessors over signals, fed by aliased inputs, because code outside the
47
+ // template writes them too: `writeValue` and `setDisabledState` the first and last, the buttons their selection
48
+ // back into `selected`. `disabled` is no `model()` because it coerces with `booleanAttribute`, which a `model()`
49
+ // cannot carry; `value` is none because `writeValue` has to resolve the checked button synchronously before the
50
+ // first render, and a `model()` would also publish a `valueChange` output that duplicates `change`.
51
+ get value() {
52
+ return this._value();
53
+ }
54
+ set value(newValue) {
55
+ // Untracked, as the other setters and methods that select: called from a consumer's `effect()`, the selection
56
+ // read on the way — the group's and its buttons' — would make the effect run again whenever the user picks
57
+ // another button.
58
+ untracked(() => {
59
+ if (this._value() !== newValue) {
60
+ // Set this before proceeding to ensure no circular loop occurs with selection.
61
+ this._value.set(newValue);
62
+ this.updateSelectedRadioFromValue();
63
+ this.checkSelectedRadioButton();
64
+ }
65
+ });
66
+ }
67
+ /** Whether the radio button is selected. */
68
+ get selected() {
69
+ return this._selected();
70
+ }
71
+ set selected(selected) {
72
+ untracked(() => {
73
+ this._selected.set(selected);
74
+ this.value = selected ? selected.value : null;
75
+ this.checkSelectedRadioButton();
76
+ });
77
+ }
78
+ /** Whether the radio group is disabled */
79
+ get disabled() {
80
+ return this._disabled();
81
+ }
82
+ set disabled(value) {
83
+ this._disabled.set(value);
84
+ }
85
+ ngOnChanges(changes) {
86
+ // A bound input is handed to its member, a bound `undefined` included;
87
+ // unbound, it leaves what code wrote.
88
+ if (changes['valueInput']) {
89
+ this.value = this.valueInput();
90
+ }
91
+ if (changes['selectedInput']) {
92
+ this.selected = this.selectedInput() ?? null;
93
+ }
94
+ if (changes['disabledInput']) {
95
+ const disabled = this.disabledInput();
96
+ if (disabled !== undefined)
97
+ this.disabled = disabled;
98
+ }
99
+ }
100
+ /** Child radio buttons. */
101
+ get radios() {
102
+ return this.radiosList();
103
+ }
104
+ checkSelectedRadioButton() {
105
+ untracked(() => {
106
+ const selected = this._selected();
107
+ if (selected && !selected.checked) {
108
+ selected.checked = true;
109
+ }
110
+ });
111
+ }
32
112
  constructor() {
33
- this.changeDetector = inject(ChangeDetectorRef);
34
- this.big = input(false, ...(ngDevMode ? [{ debugName: "big" }] : []));
35
- this._disabled = false;
36
- /** Whether the radio group is required. */
37
- this._required = false;
113
+ super();
114
+ this.injector = inject(Injector);
115
+ // The control is resolved in `ngOnInit`: `NgControl` injects the group as its value accessor, so injecting it
116
+ // back from the constructor is a cyclic dependency.
117
+ this.errorStateTracker = new KbqErrorStateTracker(inject(ErrorStateMatcher), null, inject(FormGroupDirective, { optional: true }), inject(NgForm, { optional: true }));
118
+ /** Whether the radio group is in an error state. */
119
+ this.errorState = this.errorStateTracker.errorState;
120
+ /** An object used to control when the error state is shown. */
121
+ this.errorStateMatcher = input(...(ngDevMode ? [undefined, { debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
122
+ this.big = input(false, ...(ngDevMode ? [{ debugName: "big" }] : /* istanbul ignore next */ []));
123
+ /**
124
+ * Name of the radio button group. All radio buttons inside this group will use this name,
125
+ * unless they were given one of their own.
126
+ */
127
+ this.name = input(inject(_IdGenerator).getId('kbq-radio-group-'), ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
128
+ /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */
129
+ this.labelPosition = input('after', { ...(ngDevMode ? { debugName: "labelPosition" } : /* istanbul ignore next */ {}), transform: (value) => (value === 'before' ? 'before' : 'after') });
130
+ this._disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
131
+ /** @docs-private */
132
+ this.valueInput = input(undefined, { ...(ngDevMode ? { debugName: "valueInput" } : /* istanbul ignore next */ {}), alias: 'value' });
133
+ /** @docs-private */
134
+ this.selectedInput = input(undefined, { ...(ngDevMode ? { debugName: "selectedInput" } : /* istanbul ignore next */ {}), alias: 'selected' });
135
+ /** @docs-private */
136
+ this.disabledInput = input(undefined, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled',
137
+ transform: booleanAttribute });
138
+ /** Whether the radio group is required */
139
+ this.required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
140
+ /**
141
+ * Value of `aria-invalid`: set whenever the group is painted as invalid.
142
+ *
143
+ * @internal
144
+ */
145
+ this.ariaInvalid = computed(() => (this.errorState() || this.color() === 'error' ? 'true' : null), ...(ngDevMode ? [{ debugName: "ariaInvalid" }] : /* istanbul ignore next */ []));
146
+ /** Error text projected into the group. */
147
+ this.error = contentChild(KbqError, { ...(ngDevMode ? { debugName: "error" } : /* istanbul ignore next */ {}), descendants: false });
148
+ /**
149
+ * Whether the projected `kbq-error` is shown. Without one, nothing is rendered under the options.
150
+ *
151
+ * @internal
152
+ */
153
+ this.showError = computed(() => this.errorState() && !!this.error(), ...(ngDevMode ? [{ debugName: "showError" }] : /* istanbul ignore next */ []));
154
+ /**
155
+ * Id of the element wrapping the projected `kbq-error`.
156
+ *
157
+ * @internal
158
+ */
159
+ this.errorId = inject(_IdGenerator).getId('kbq-radio-group-error-');
160
+ /**
161
+ * Hints of the group itself, shown under the options. The hints of the buttons are their own.
162
+ *
163
+ * @internal
164
+ */
165
+ this.hints = contentChildren(KbqHint, { ...(ngDevMode ? { debugName: "hints" } : /* istanbul ignore next */ {}), descendants: false });
166
+ /** Ids the group last added to `aria-describedby` of the host, so the consumer's own survive an update. */
167
+ this.ownDescribedByIds = [];
168
+ this.renderer = inject(Renderer2);
169
+ this.isBrowser = inject(Platform).isBrowser;
38
170
  /**
39
171
  * Event emitted when the group value changes.
40
172
  * Change events are only emitted when the value changes due to user interaction with
41
173
  * a radio button (the same behavior as `<input type-"radio">`).
42
174
  */
43
175
  this.change = output();
176
+ this.radiosQuery = contentChildren(forwardRef(() => KbqRadioButton), { ...(ngDevMode ? { debugName: "radiosQuery" } : /* istanbul ignore next */ {}), descendants: true });
177
+ this.radiosList = kbqQueryListFrom(this.radiosQuery);
44
178
  /**
45
179
  * Selected value for group. Should equal the value of the selected radio button if there *is*
46
180
  * a corresponding radio button with a matching value. If there is *not* such a corresponding
47
181
  * radio button, this value persists to be applied in case a new radio button is added with a
48
182
  * matching value.
49
183
  */
50
- this._value = null;
51
- /** The HTML name attribute applied to radio buttons in this group. */
52
- this._name = `kbq-radio-group-${nextUniqueId++}`;
184
+ this._value = signal(null, ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
53
185
  /** The currently selected radio button. Should match value. */
54
- this._selected = null;
186
+ this._selected = signal(null, ...(ngDevMode ? [{ debugName: "_selected" }] : /* istanbul ignore next */ []));
55
187
  /** Whether the `value` has been set to its initial value. */
56
188
  this.isInitialized = false;
57
- /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */
58
- this._labelPosition = 'after';
59
- /** The method to be called in order to update ngModel */
189
+ /**
190
+ * Called when the value changes. Needed to properly implement `ControlValueAccessor`.
191
+ *
192
+ * @docs-private
193
+ */
60
194
  this.controlValueAccessorChangeFn = () => { };
61
195
  /**
62
196
  * onTouch function registered via registerOnTouch (ControlValueAccessor).
197
+ *
63
198
  * @docs-private
64
199
  */
65
200
  this.onTouched = () => { };
201
+ // Written by hand rather than bound: the host is the element the consumer writes, and a host binding would
202
+ // overwrite an `[attr.aria-describedby]` the consumer binds on it. Not on the server: after hydration the ids
203
+ // it wrote would be read back as the consumer's own.
204
+ effect(() => {
205
+ if (!this.isBrowser)
206
+ return;
207
+ const ids = [...(this.showError() ? [this.errorId] : []), ...this.hints().map((hint) => hint.id())];
208
+ untracked(() => this.setDescribedByIds(ids));
209
+ });
66
210
  }
67
- /** Name of the radio button group. All radio buttons inside this group will use this name. */
68
- // TODO: Skipped for migration because:
69
- // Accessor inputs cannot be migrated as they are too complex.
70
- get name() {
71
- return this._name;
72
- }
73
- set name(value) {
74
- this._name = value;
75
- this.updateRadioButtonNames();
76
- }
77
- /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */
78
- // TODO: Skipped for migration because:
79
- // Accessor inputs cannot be migrated as they are too complex.
80
- get labelPosition() {
81
- return this._labelPosition;
82
- }
83
- set labelPosition(v) {
84
- this._labelPosition = v === 'before' ? 'before' : 'after';
85
- this.markRadiosForCheck();
86
- }
87
- /** Value of the radio button. */
88
- // TODO: Skipped for migration because:
89
- // Accessor inputs cannot be migrated as they are too complex.
90
- get value() {
91
- return this._value;
92
- }
93
- set value(newValue) {
94
- if (this._value !== newValue) {
95
- // Set this before proceeding to ensure no circular loop occurs with selection.
96
- this._value = newValue;
97
- this.updateSelectedRadioFromValue();
98
- this.checkSelectedRadioButton();
211
+ ngOnInit() {
212
+ this.errorStateTracker.ngControl = this.injector.get(NgControl, null, { self: true, optional: true });
213
+ }
214
+ ngDoCheck() {
215
+ // Re-evaluated on every check: a submit of the parent form notifies nothing a signal could follow.
216
+ if (this.errorStateTracker.ngControl)
217
+ this.updateErrorState();
218
+ }
219
+ /** Updates the error state based on the error state matcher. */
220
+ updateErrorState() {
221
+ this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();
222
+ this.errorStateTracker.updateErrorState();
223
+ }
224
+ /** Writes the error and the hints of the group to `aria-describedby` of the host, after the consumer's own ids. */
225
+ setDescribedByIds(ids) {
226
+ const element = this.elementRef.nativeElement;
227
+ const consumerIds = (element.getAttribute('aria-describedby') ?? '')
228
+ .split(/\s+/)
229
+ .filter((id) => id && !this.ownDescribedByIds.includes(id));
230
+ const next = [...consumerIds, ...ids];
231
+ this.ownDescribedByIds = ids;
232
+ if (next.length) {
233
+ this.renderer.setAttribute(element, 'aria-describedby', next.join(' '));
99
234
  }
100
- }
101
- /** Whether the radio button is selected. */
102
- // TODO: Skipped for migration because:
103
- // Accessor inputs cannot be migrated as they are too complex.
104
- get selected() {
105
- return this._selected;
106
- }
107
- set selected(selected) {
108
- this._selected = selected;
109
- this.value = selected ? selected.value : null;
110
- this.checkSelectedRadioButton();
111
- }
112
- /** Whether the radio group is disabled */
113
- // TODO: Skipped for migration because:
114
- // Accessor inputs cannot be migrated as they are too complex.
115
- get disabled() {
116
- return this._disabled;
117
- }
118
- set disabled(value) {
119
- this._disabled = value;
120
- this.markRadiosForCheck();
121
- }
122
- /** Whether the radio group is required */
123
- // TODO: Skipped for migration because:
124
- // Accessor inputs cannot be migrated as they are too complex.
125
- get required() {
126
- return this._required;
127
- }
128
- set required(value) {
129
- this._required = value;
130
- this.markRadiosForCheck();
131
- }
132
- checkSelectedRadioButton() {
133
- if (this._selected && !this._selected.checked) {
134
- this._selected.checked = true;
235
+ else {
236
+ this.renderer.removeAttribute(element, 'aria-describedby');
135
237
  }
136
238
  }
137
- /**
138
- * Initialize properties once content children are available.
139
- * This allows us to propagate relevant attributes to associated buttons.
140
- */
141
239
  ngAfterContentInit() {
142
240
  // Mark this component as initialized in AfterContentInit because the initial value can
143
241
  // possibly be set by NgModel on KbqRadioGroup, and it is possible that the OnInit of the
144
242
  // NgModel occurs *after* the OnInit of the KbqRadioGroup.
145
243
  this.isInitialized = true;
146
244
  }
245
+ /**
246
+ * Initialize properties once content children are available.
247
+ * This allows us to propagate relevant attributes to associated buttons.
248
+ */
249
+ ngAfterContentChecked() {
250
+ // Syncs the list here so `changes` emits after the projected items are bound and before the host bindings.
251
+ this.radiosList();
252
+ }
253
+ /**
254
+ * Moves focus to the checked radio button, or to the first enabled one when nothing is checked —
255
+ * the same rule the browser follows when the group is reached with <kbd>Tab</kbd>.
256
+ */
257
+ focus(origin = 'program') {
258
+ untracked(() => {
259
+ const target = this._selected() ?? this.radios?.find((radio) => !radio.disabled);
260
+ target?.focus(origin);
261
+ });
262
+ }
147
263
  /**
148
264
  * Mark this group as being "touched" (for ngModel). Meant to be called by the contained
149
265
  * radio buttons upon their blur.
@@ -156,10 +272,17 @@ class KbqRadioGroup {
156
272
  /** Dispatch change event with current selection and group value. */
157
273
  emitChangeEvent() {
158
274
  if (this.isInitialized) {
159
- this.change.emit(new KbqRadioChange(this._selected, this._value));
275
+ this.change.emit(new KbqRadioChange(untracked(this._selected), untracked(this._value)));
160
276
  }
161
277
  }
278
+ /**
279
+ * Marks every radio button of the group for a change-detection check.
280
+ *
281
+ * Kept for back-compatibility. A button derives `checked` and `disabled` from signals, its own and its
282
+ * group's, so it re-renders on its own and nothing in the library calls this any more.
283
+ */
162
284
  markRadiosForCheck() {
285
+ // Kept at the DS-2196 review, like `KbqButtonToggle.markForCheck()`, which the migration guide promises stays.
163
286
  if (this.radios) {
164
287
  this.radios.forEach((radio) => radio.markForCheck());
165
288
  }
@@ -169,11 +292,11 @@ class KbqRadioGroup {
169
292
  */
170
293
  writeValue(value) {
171
294
  this.value = value;
172
- this.changeDetector.markForCheck();
173
295
  }
174
296
  /**
175
297
  * Registers a callback to be triggered when the model value changes.
176
298
  * Implemented as part of ControlValueAccessor.
299
+ *
177
300
  * @param fn Callback to be registered.
178
301
  */
179
302
  registerOnChange(fn) {
@@ -182,6 +305,7 @@ class KbqRadioGroup {
182
305
  /**
183
306
  * Registers a callback to be triggered when the control is touched.
184
307
  * Implemented as part of ControlValueAccessor.
308
+ *
185
309
  * @param fn Callback to be registered.
186
310
  */
187
311
  registerOnTouched(fn) {
@@ -189,158 +313,229 @@ class KbqRadioGroup {
189
313
  }
190
314
  /**
191
315
  * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.
316
+ *
192
317
  * @param isDisabled Whether the control should be disabled.
193
318
  */
194
319
  setDisabledState(isDisabled) {
195
320
  this.disabled = isDisabled;
196
- this.changeDetector.markForCheck();
197
- }
198
- updateRadioButtonNames() {
199
- this.radios?.forEach((radio) => (radio.name = this.name));
200
321
  }
201
322
  /** Updates the `selected` radio button from the internal _value state. */
202
323
  updateSelectedRadioFromValue() {
203
324
  // If the value already matches the selected radio, do nothing.
204
- const isAlreadySelected = this._selected !== null && this._selected.value === this._value;
205
- if (this.radios != null && !isAlreadySelected) {
206
- this._selected = null;
325
+ const selected = this._selected();
326
+ const isAlreadySelected = selected !== null && selected.value === this._value();
327
+ // Before the content is initialized the buttons are not bound yet; each one reads the group value itself.
328
+ if (this.isInitialized && !isAlreadySelected) {
329
+ this._selected.set(null);
207
330
  this.radios.forEach((radio) => {
208
331
  radio.checked = this.value === radio.value;
209
332
  if (radio.checked) {
210
- this._selected = radio;
333
+ this._selected.set(radio);
211
334
  }
212
335
  });
213
336
  }
214
337
  }
215
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
216
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.30", type: KbqRadioGroup, isStandalone: true, selector: "kbq-radio-group", inputs: { big: { classPropertyName: "big", publicName: "big", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: booleanAttribute } }, outputs: { change: "change" }, host: { attributes: { "role": "radiogroup" }, properties: { "class.kbq-radio-group_normal": "!big()", "class.kbq-radio-group_big": "big()" }, classAttribute: "kbq-radio-group" }, providers: [KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR], queries: [{ propertyName: "radios", predicate: i0.forwardRef(() => KbqRadioButton), descendants: true }], exportAs: ["kbqRadioGroup"], ngImport: i0 }); }
338
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
339
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqRadioGroup, isStandalone: true, selector: "kbq-radio-group", inputs: { errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, big: { classPropertyName: "big", publicName: "big", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, selectedInput: { classPropertyName: "selectedInput", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { attributes: { "role": "radiogroup" }, properties: { "class.kbq-radio-group_normal": "!big()", "class.kbq-radio-group_big": "big()", "class.kbq-radio-group_label-before": "labelPosition() === 'before'", "class.kbq-invalid": "errorState()", "attr.aria-required": "required() ? 'true' : null", "attr.aria-invalid": "ariaInvalid()" }, classAttribute: "kbq-radio-group" }, providers: [KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR], queries: [{ propertyName: "error", first: true, predicate: KbqError, isSignal: true }, { propertyName: "hints", predicate: KbqHint, isSignal: true }, { propertyName: "radiosQuery", predicate: i0.forwardRef(() => KbqRadioButton), descendants: true, isSignal: true }], exportAs: ["kbqRadioGroup"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
340
+ <ng-content />
341
+
342
+ <!--
343
+ Under the options, as in a form field: the error first, rendered only in the error state so that
344
+ assistive technology announces the alert as it appears, then the hints of the group.
345
+ -->
346
+ @if (showError() || hints().length) {
347
+ <div class="kbq-radio-group__subscript">
348
+ @if (showError()) {
349
+ <div class="kbq-radio-group__error" [id]="errorId">
350
+ <ng-content select="kbq-error" />
351
+ </div>
352
+ }
353
+
354
+ <ng-content select="kbq-hint" />
355
+ </div>
356
+ }
357
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
217
358
  }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioGroup, decorators: [{
219
- type: Directive,
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioGroup, decorators: [{
360
+ type: Component,
220
361
  args: [{
221
362
  selector: 'kbq-radio-group',
363
+ // Styled by `radio.scss`, which the buttons carry: the error and the hints of a group stand under its buttons.
364
+ template: `
365
+ <ng-content />
366
+
367
+ <!--
368
+ Under the options, as in a form field: the error first, rendered only in the error state so that
369
+ assistive technology announces the alert as it appears, then the hints of the group.
370
+ -->
371
+ @if (showError() || hints().length) {
372
+ <div class="kbq-radio-group__subscript">
373
+ @if (showError()) {
374
+ <div class="kbq-radio-group__error" [id]="errorId">
375
+ <ng-content select="kbq-error" />
376
+ </div>
377
+ }
378
+
379
+ <ng-content select="kbq-hint" />
380
+ </div>
381
+ }
382
+ `,
222
383
  providers: [KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],
384
+ changeDetection: ChangeDetectionStrategy.OnPush,
385
+ encapsulation: ViewEncapsulation.None,
223
386
  host: {
224
387
  role: 'radiogroup',
225
388
  class: 'kbq-radio-group',
226
389
  '[class.kbq-radio-group_normal]': '!big()',
227
- '[class.kbq-radio-group_big]': 'big()'
390
+ '[class.kbq-radio-group_big]': 'big()',
391
+ '[class.kbq-radio-group_label-before]': "labelPosition() === 'before'",
392
+ '[class.kbq-invalid]': 'errorState()',
393
+ '[attr.aria-required]': "required() ? 'true' : null",
394
+ // A signal of its own: the color class binding reads `color` first, and the host bindings of every group in a
395
+ // view run in that view's reactive consumer, where a signal read again after others costs a scan of all it has
396
+ // read so far.
397
+ '[attr.aria-invalid]': 'ariaInvalid()'
228
398
  },
229
399
  exportAs: 'kbqRadioGroup'
230
400
  }]
231
- }], propDecorators: { big: [{ type: i0.Input, args: [{ isSignal: true, alias: "big", required: false }] }], name: [{
232
- type: Input
233
- }], labelPosition: [{
234
- type: Input
235
- }], value: [{
236
- type: Input
237
- }], selected: [{
238
- type: Input
239
- }], disabled: [{
240
- type: Input,
241
- args: [{ transform: booleanAttribute }]
242
- }], required: [{
243
- type: Input,
244
- args: [{ transform: booleanAttribute }]
245
- }], change: [{ type: i0.Output, args: ["change"] }], radios: [{
246
- type: ContentChildren,
247
- args: [forwardRef(() => KbqRadioButton), { descendants: true }]
248
- }] } });
401
+ }], ctorParameters: () => [], propDecorators: { errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }], big: [{ type: i0.Input, args: [{ isSignal: true, alias: "big", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], selectedInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], error: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqError), { ...{ descendants: false }, isSignal: true }] }], hints: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => KbqHint), { ...{ descendants: false }, isSignal: true }] }], change: [{ type: i0.Output, args: ["change"] }], radiosQuery: [{ type: i0.ContentChildren, args: [forwardRef(() => KbqRadioButton), { ...{ descendants: true }, isSignal: true }] }] } });
249
402
  class KbqRadioButton extends KbqColorDirective {
250
403
  /** Whether this radio button is checked. */
251
- // TODO: Skipped for migration because:
252
- // Accessor inputs cannot be migrated as they are too complex.
253
404
  get checked() {
254
- return this._checked;
405
+ return this._checked();
255
406
  }
256
407
  set checked(value) {
257
- if (this._checked !== value) {
258
- this._checked = value;
259
- if (value && this.radioGroup && this.radioGroup.value !== this.value) {
260
- this.radioGroup.selected = this;
261
- }
262
- else if (!value && this.radioGroup && this.radioGroup.value === this.value) {
263
- // When unchecking the selected radio button, update the selected radio
264
- // property on the group.
265
- this.radioGroup.selected = null;
266
- }
267
- if (value) {
268
- // Notify all radio buttons with the same name to un-check.
269
- this.radioDispatcher.notify(this.id, this.name);
408
+ // Untracked, as the `value` setter: called from a consumer's `effect()`, the selection read on the way — the
409
+ // button's, its group's and its siblings' — would make the effect run again whenever the user picks another
410
+ // button.
411
+ untracked(() => {
412
+ if (this._checked() !== value) {
413
+ this._checked.set(value);
414
+ if (value && this.radioGroup && this.radioGroup.value !== this.value) {
415
+ this.radioGroup.selected = this;
416
+ }
417
+ else if (!value && this.radioGroup && this.radioGroup.value === this.value) {
418
+ // When unchecking the selected radio button, update the selected radio
419
+ // property on the group.
420
+ this.radioGroup.selected = null;
421
+ }
422
+ if (value) {
423
+ // Notify all radio buttons with the same name to un-check.
424
+ this.radioDispatcher.notify(this.id(), this.name);
425
+ }
270
426
  }
271
- this.changeDetector.markForCheck();
272
- }
427
+ });
273
428
  }
274
429
  /** The value of this radio button. */
275
- // TODO: Skipped for migration because:
276
- // Accessor inputs cannot be migrated as they are too complex.
277
430
  get value() {
278
- return this._value;
431
+ return this._value();
279
432
  }
280
433
  set value(value) {
281
- if (this._value !== value) {
282
- this._value = value;
283
- if (this.radioGroup != null) {
284
- if (!this.checked) {
285
- // Update checked when the value changed to match the radio group's value
286
- this.checked = this.radioGroup.value === value;
287
- }
288
- if (this.checked) {
289
- this.radioGroup.selected = this;
434
+ untracked(() => {
435
+ if (this._value() !== value) {
436
+ this._value.set(value);
437
+ if (this.radioGroup) {
438
+ if (!this.checked) {
439
+ // Update checked when the value changed to match the radio group's value
440
+ this.checked = this.radioGroup.value === value;
441
+ }
442
+ if (this.checked) {
443
+ this.radioGroup.selected = this;
444
+ }
290
445
  }
291
446
  }
292
- }
447
+ });
293
448
  }
294
- /** Whether the radio button is disabled. */
295
- // TODO: Skipped for migration because:
296
- // Accessor inputs cannot be migrated as they are too complex.
449
+ /** Whether the radio button is disabled. A button inside a disabled group is disabled as well. */
297
450
  get disabled() {
298
- return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);
451
+ return this._disabled() || !!this.radioGroup?.disabled;
299
452
  }
300
453
  set disabled(value) {
301
- if (this._disabled !== value) {
302
- this._disabled = value;
303
- this.changeDetector.markForCheck();
304
- }
454
+ this._disabled.set(value);
305
455
  }
306
- // TODO: Skipped for migration because:
307
- // Accessor inputs cannot be migrated as they are too complex.
456
+ /** Tabindex of the native input. A disabled button is taken out of the tab order. */
308
457
  get tabIndex() {
309
- return this.disabled ? -1 : this._tabIndex;
458
+ return this.disabled ? -1 : this._tabIndex();
310
459
  }
311
460
  set tabIndex(value) {
312
- this._tabIndex = value;
461
+ this._tabIndex.set(value);
313
462
  }
314
- /** Whether the radio button is required. */
315
- // TODO: Skipped for migration because:
316
- // Accessor inputs cannot be migrated as they are too complex.
463
+ /** Whether the radio button is required. A button inside a required group is required as well. */
317
464
  get required() {
318
- return this._required || (this.radioGroup && this.radioGroup.required);
465
+ return this._required() || !!this.radioGroup?.required();
319
466
  }
320
467
  set required(value) {
321
- this._required = value;
468
+ this._required.set(value);
322
469
  }
323
470
  /** Whether the label should appear after or before the radio button. Defaults to 'after' */
324
- // TODO: Skipped for migration because:
325
- // Accessor inputs cannot be migrated as they are too complex.
326
471
  get labelPosition() {
327
- return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';
472
+ return this._labelPosition() || this.radioGroup?.labelPosition() || 'after';
328
473
  }
329
474
  /** @docs-private */
330
475
  set labelPosition(value) {
331
- this._labelPosition = value;
476
+ this._labelPosition.set(value);
477
+ }
478
+ /**
479
+ * Analog to HTML 'name' attribute used to group radios for unique selection. Defaults to the
480
+ * parent group's name, or — outside a group — to an id unique to this button.
481
+ */
482
+ // An accessor rather than a plain field: the app-global UniqueSelectionDispatcher isolates its
483
+ // listeners by name alone, so a button that resolved to `undefined` would share one selection
484
+ // group with every other unnamed radio button in the application. Resolving the group's name here
485
+ // rather than copying it in `ngOnInit` is also what keeps an explicitly bound `[name]` alive.
486
+ get name() {
487
+ return this._name() ?? this.radioGroup?.name() ?? this.uniqueId;
488
+ }
489
+ set name(value) {
490
+ this._name.set(value);
332
491
  }
333
- /** ID of the native input element inside `<kbq-radio-button>` */
334
- get inputId() {
335
- return `${this.id || this.uniqueId}-input`;
492
+ /**
493
+ * The `value` attribute of the native input. An `<input type="radio">` with no `value` submits the
494
+ * literal string `"on"`, so only string-like values round-trip through native form submission.
495
+ */
496
+ get nativeValue() {
497
+ const value = this._value();
498
+ return value == null ? null : String(value);
499
+ }
500
+ ngOnChanges(changes) {
501
+ // A bound input is handed to its member, a bound `undefined` included;
502
+ // unbound, it leaves what code wrote.
503
+ if (changes['valueInput']) {
504
+ this.value = this.valueInput();
505
+ }
506
+ if (changes['checkedInput']) {
507
+ const checked = this.checkedInput();
508
+ if (checked !== undefined)
509
+ this.checked = checked;
510
+ }
511
+ if (changes['disabledInput']) {
512
+ const disabled = this.disabledInput();
513
+ if (disabled !== undefined)
514
+ this.disabled = disabled;
515
+ }
516
+ if (changes['tabIndexInput'])
517
+ this.tabIndex = this.tabIndexInput() ?? 0;
518
+ if (changes['requiredInput']) {
519
+ const required = this.requiredInput();
520
+ if (required !== undefined)
521
+ this.required = required;
522
+ }
523
+ if (changes['labelPositionInput']) {
524
+ this.labelPosition = this.labelPositionInput();
525
+ }
526
+ if (changes['nameInput']) {
527
+ this.name = this.nameInput();
528
+ }
336
529
  }
337
530
  constructor() {
338
- const radioGroup = inject(KbqRadioGroup, { optional: true });
339
531
  super();
340
532
  this.changeDetector = inject(ChangeDetectorRef);
341
533
  this.focusMonitor = inject(FocusMonitor);
342
534
  this.radioDispatcher = inject(UniqueSelectionDispatcher);
343
- this._tabIndex = 0;
535
+ this._disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
536
+ this._tabIndex = signal(0, ...(ngDevMode ? [{ debugName: "_tabIndex" }] : /* istanbul ignore next */ []));
537
+ /** Whether this radio is required. */
538
+ this._required = signal(false, ...(ngDevMode ? [{ debugName: "_required" }] : /* istanbul ignore next */ []));
344
539
  /** The native `<input type=radio>` element */
345
540
  this.inputElement = viewChild.required('input');
346
541
  /**
@@ -349,19 +544,58 @@ class KbqRadioButton extends KbqColorDirective {
349
544
  * the radio button (the same behavior as `<input type-"radio">`).
350
545
  */
351
546
  this.change = output();
352
- this.isFocused = input(false, ...(ngDevMode ? [{ debugName: "isFocused" }] : []));
353
- this.uniqueId = `kbq-radio-${++nextUniqueId}`;
547
+ /** The parent radio group. `null` when the button is used outside one. */
548
+ this.radioGroup = inject(KbqRadioGroup, { optional: true });
549
+ /**
550
+ * Whether the button takes the big size of its group.
551
+ *
552
+ * @internal
553
+ */
554
+ this.big = computed(() => !!this.radioGroup?.big(), ...(ngDevMode ? [{ debugName: "big" }] : /* istanbul ignore next */ []));
555
+ this.uniqueId = inject(_IdGenerator).getId('kbq-radio-');
556
+ /**
557
+ * A unique id for the radio button. If none is supplied — or `null` is bound explicitly — it is
558
+ * auto-generated, so a read always yields the id the element actually carries.
559
+ */
560
+ this.id = input(this.uniqueId, { ...(ngDevMode ? { debugName: "id" } : /* istanbul ignore next */ {}), transform: (value) => value || this.uniqueId });
561
+ /** ID of the native input element inside `<kbq-radio-button>` */
562
+ this.inputId = computed(() => `${this.id()}-input`, ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
563
+ /**
564
+ * ID of the element holding the option text. The native input points its `aria-labelledby` at it,
565
+ * so the accessible name is the option text alone rather than everything the wrapping `<label>`
566
+ * contains — the projected hint included.
567
+ */
568
+ this.labelId = computed(() => `${this.id()}-label`, ...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
569
+ /** Hint projected into the button, referenced by the native input's `aria-describedby`. */
570
+ this.hint = contentChild(KbqHint, ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
571
+ this._labelPosition = signal(undefined, ...(ngDevMode ? [{ debugName: "_labelPosition" }] : /* istanbul ignore next */ []));
572
+ this._name = signal(undefined, ...(ngDevMode ? [{ debugName: "_name" }] : /* istanbul ignore next */ []));
573
+ /** @docs-private */
574
+ this.valueInput = input(undefined, { ...(ngDevMode ? { debugName: "valueInput" } : /* istanbul ignore next */ {}), alias: 'value' });
575
+ /** @docs-private */
576
+ this.checkedInput = input(undefined, { ...(ngDevMode ? { debugName: "checkedInput" } : /* istanbul ignore next */ {}), alias: 'checked',
577
+ transform: booleanAttribute });
578
+ /** @docs-private */
579
+ this.disabledInput = input(undefined, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled',
580
+ transform: booleanAttribute });
581
+ /** @docs-private */
582
+ this.tabIndexInput = input(undefined, { ...(ngDevMode ? { debugName: "tabIndexInput" } : /* istanbul ignore next */ {}), alias: 'tabIndex',
583
+ transform: kbqOptionalNumberAttribute });
584
+ /** @docs-private */
585
+ this.requiredInput = input(undefined, { ...(ngDevMode ? { debugName: "requiredInput" } : /* istanbul ignore next */ {}), alias: 'required',
586
+ transform: booleanAttribute });
587
+ /** @docs-private */
588
+ this.labelPositionInput = input(undefined, { ...(ngDevMode ? { debugName: "labelPositionInput" } : /* istanbul ignore next */ {}), alias: 'labelPosition' });
589
+ /** @docs-private */
590
+ this.nameInput = input(undefined, { ...(ngDevMode ? { debugName: "nameInput" } : /* istanbul ignore next */ {}), alias: 'name' });
354
591
  /** Whether this radio is checked. */
355
- this._checked = false;
592
+ this._checked = signal(false, ...(ngDevMode ? [{ debugName: "_checked" }] : /* istanbul ignore next */ []));
356
593
  /** Value assigned to this radio. */
357
- this._value = null;
594
+ this._value = signal(null, ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
358
595
  /** Unregister function for _radioDispatcher */
359
596
  this.removeUniqueSelectionListener = () => { };
360
- const radioDispatcher = this.radioDispatcher;
361
- this.id = this.uniqueId;
362
- this.radioGroup = radioGroup;
363
- this.removeUniqueSelectionListener = radioDispatcher.listen((id, name) => {
364
- if (id !== this.id && name === this.name) {
597
+ this.removeUniqueSelectionListener = this.radioDispatcher.listen((id, name) => {
598
+ if (id !== this.id() && name === this.name) {
365
599
  this.checked = false;
366
600
  }
367
601
  });
@@ -369,9 +603,7 @@ class KbqRadioButton extends KbqColorDirective {
369
603
  ngOnInit() {
370
604
  if (this.radioGroup) {
371
605
  // If the radio is inside a radio group, determine if it should be checked
372
- this.checked = this.radioGroup.value === this._value;
373
- // Copy name from parent radio group
374
- this.name = this.radioGroup.name;
606
+ this.checked = this.radioGroup.value === this._value();
375
607
  }
376
608
  }
377
609
  ngAfterViewInit() {
@@ -385,18 +617,23 @@ class KbqRadioButton extends KbqColorDirective {
385
617
  this.focusMonitor.stopMonitoring(this.elementRef);
386
618
  this.removeUniqueSelectionListener();
387
619
  }
388
- /** Focuses the radio button. */
389
- focus() {
390
- this.inputElement().nativeElement.focus();
620
+ /**
621
+ * Focuses the radio button.
622
+ *
623
+ * Routed through the `FocusMonitor` so the origin is recorded: the focus ring is keyed off
624
+ * `.cdk-keyboard-focused`, which a bare `element.focus()` never produces.
625
+ */
626
+ focus(origin = 'program') {
627
+ this.focusMonitor.focusVia(this.inputElement(), origin);
391
628
  }
392
629
  /**
393
630
  * Marks the radio button as needing checking for change detection.
394
- * This method is exposed because the parent radio group will directly
395
- * update bound properties of the radio button.
631
+ *
632
+ * Kept for back-compatibility. A button derives its state from signals, its own and its group's, so it
633
+ * re-renders on its own and nothing in the library calls this any more.
396
634
  */
397
635
  markForCheck() {
398
- // When group value changes, the button will not be notified. Use `markForCheck` to explicit
399
- // update radio button's status
636
+ // Kept at the DS-2196 review, like `KbqButtonToggle.markForCheck()`, which the migration guide promises stays.
400
637
  this.changeDetector.markForCheck();
401
638
  }
402
639
  onInputClick(event) {
@@ -428,48 +665,30 @@ class KbqRadioButton extends KbqColorDirective {
428
665
  }
429
666
  /** Dispatch change event with current value. */
430
667
  emitChangeEvent() {
431
- this.change.emit(new KbqRadioChange(this, this._value));
668
+ this.change.emit(new KbqRadioChange(this, this._value()));
432
669
  }
433
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
434
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.30", type: KbqRadioButton, isStandalone: true, selector: "kbq-radio-button", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { properties: { "attr.id": "id", "class.kbq-radio-button_big": "radioGroup?.big()", "class.kbq-selected": "checked", "class.kbq-disabled": "disabled" }, classAttribute: "kbq-radio-button" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], exportAs: ["kbqRadioButton"], usesInheritance: true, ngImport: i0, template: "<label #label class=\"kbq-radio-label\" [attr.for]=\"inputId\">\n <input\n #input\n type=\"radio\"\n class=\"kbq-radio-input cdk-visually-hidden\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n\n <div class=\"kbq-radio-label-content\" [class.kbq-radio-label-before]=\"labelPosition === 'before'\">\n <div class=\"kbq-radio-button__outer-circle\">\n <div class=\"kbq-radio-button__inner-circle\"></div>\n </div>\n\n <div class=\"kbq-radio__text-container\">\n <span class=\"kbq-radio__text\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n </div>\n</label>\n", styles: [".kbq-radio-group{display:inline-flex;flex-direction:column}.kbq-radio-group.kbq-radio-group_normal{gap:var(--kbq-radio-size-normal-vertical-gap)}.kbq-radio-group.kbq-radio-group_big{gap:var(--kbq-radio-size-big-vertical-gap)}.kbq-radio-button{display:inline-flex}.kbq-radio-label{display:inline-flex;align-items:center;vertical-align:middle;cursor:pointer;width:100%}.kbq-radio-label-content{display:inline-flex;position:relative;order:0;line-height:inherit;padding-left:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2);padding-right:0}.kbq-radio-label-content .kbq-radio-button__outer-circle,.kbq-radio-label-content .kbq-radio-button__inner-circle{box-sizing:content-box;position:absolute;display:flex;content:\"\";border-style:solid;border-radius:50%}.kbq-radio-label-content .kbq-radio-button__outer-circle{border-width:var(--kbq-radio-size-normal-outer-circle-border-width);left:0;top:calc((var(--kbq-typography-text-normal-line-height) - var(--kbq-radio-size-normal-outer-size) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-normal-outer-size);height:var(--kbq-radio-size-normal-outer-size)}.kbq-radio-label-content .kbq-radio-button__inner-circle{position:relative;margin:auto;width:var(--kbq-radio-size-normal-inner-size);height:var(--kbq-radio-size-normal-inner-size)}.kbq-radio-label-content .kbq-radio__text-container{display:flex;flex-direction:column}.kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-normal-vertical-content-padding)}.kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-label-content.kbq-radio-label-before .kbq-radio-button__outer-circle{left:unset;right:0}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content{padding-left:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__outer-circle{border-width:var(--kbq-radio-size-big-outer-circle-border-width);top:calc((var(--kbq-typography-text-big-line-height) - var(--kbq-radio-size-big-outer-size) - var(--kbq-radio-size-big-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-big-outer-size);height:var(--kbq-radio-size-big-outer-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__inner-circle{width:var(--kbq-radio-size-big-inner-size);height:var(--kbq-radio-size-big-inner-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-big-vertical-content-padding)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button .kbq-radio-button__inner-circle{border-width:0!important}.kbq-radio-button .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-default-outer-circle-border);background:var(--kbq-radio-theme-default-outer-circle-background)}.kbq-radio-button .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-default-inner-circle-background)}.kbq-radio-button .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-default-caption)}.kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-hover-outer-circle-border);background:var(--kbq-radio-theme-states-hover-outer-circle-background)}.kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-hover-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-focused-outer-circle-border);background:var(--kbq-radio-theme-states-focused-outer-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-focused-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-outer-circle-border);background:var(--kbq-radio-theme-states-checked-outer-circle-background)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-focused-outer-circle-border);background:var(--kbq-radio-theme-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button{color:var(--kbq-foreground-contrast)}.kbq-radio-button.kbq-error .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-default-outer-circle-border);background:var(--kbq-radio-error-default-outer-circle-background)}.kbq-radio-button.kbq-error .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-default-inner-circle-background)}.kbq-radio-button.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-default-caption)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-hover-outer-circle-border);background:var(--kbq-radio-error-states-hover-outer-circle-background)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-hover-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-focused-outer-circle-border);background:var(--kbq-radio-error-states-focused-outer-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-focused-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-outer-circle-border);background:var(--kbq-radio-error-states-checked-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-focused-outer-circle-border);background:var(--kbq-radio-error-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-error-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-disabled-outer-circle-border);background:var(--kbq-radio-error-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error{color:var(--kbq-foreground-contrast)}.kbq-radio-button{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-radio-button .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-radio-button.kbq-radio-button_big{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-radio-button.kbq-radio-button_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-radio-group{--kbq-radio-size-big-vertical-gap: var(--kbq-size-m);--kbq-radio-size-normal-vertical-gap: var(--kbq-size-s);--kbq-radio-size-big-top: var(--kbq-size-3xs);--kbq-radio-theme-default-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-default-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-default-inner-circle-background: transparent;--kbq-radio-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-radio-theme-states-hover-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-states-hover-outer-circle-background: var(--kbq-states-background-transparent-hover);--kbq-radio-theme-states-hover-inner-circle-background: transparent;--kbq-radio-theme-states-checked-outer-circle-border: transparent;--kbq-radio-theme-states-checked-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-hover-outer-circle-border: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-outer-circle-background: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-theme-states-focused-outer-circle-border: transparent;--kbq-radio-theme-states-focused-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-states-focused-inner-circle-background: transparent;--kbq-radio-theme-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-checked-focused-outer-circle-border: transparent;--kbq-radio-theme-states-checked-focused-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-focused-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-disabled-inner-circle-background: transparent;--kbq-radio-theme-states-disabled-caption: var(--kbq-states-foreground-disabled);--kbq-radio-error-default-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-default-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-default-inner-circle-background: transparent;--kbq-radio-error-states-hover-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-states-hover-outer-circle-background: var(--kbq-states-background-error-fade-hover);--kbq-radio-error-states-hover-inner-circle-background: transparent;--kbq-radio-error-states-checked-outer-circle-border: transparent;--kbq-radio-error-states-checked-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-hover-outer-circle-border: transparent;--kbq-radio-error-states-checked-hover-outer-circle-background: var(--kbq-states-background-error-hover);--kbq-radio-error-states-checked-hover-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-error-states-focused-outer-circle-border: transparent;--kbq-radio-error-states-focused-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-states-focused-inner-circle-background: transparent;--kbq-radio-error-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-checked-focused-outer-circle-border: transparent;--kbq-radio-error-states-checked-focused-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-focused-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-disabled-inner-circle-background: transparent;--kbq-radio-error-states-disabled-caption: var(--kbq-states-foreground-disabled)}.kbq-radio-button{--kbq-radio-size-normal-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-normal-outer-size: calc( var(--kbq-size-l) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2 );--kbq-radio-size-normal-inner-size: var(--kbq-size-xs);--kbq-radio-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-radio-size-normal-top: 0;--kbq-radio-size-big-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-big-outer-size: calc(var(--kbq-size-l) - var(--kbq-radio-size-big-outer-circle-border-width) * 2);--kbq-radio-size-big-inner-size: var(--kbq-size-xs);--kbq-radio-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-big-vertical-content-padding: var(--kbq-size-3xs)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
670
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
671
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.25", type: KbqRadioButton, isStandalone: true, selector: "kbq-radio-button", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, checkedInput: { classPropertyName: "checkedInput", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, tabIndexInput: { classPropertyName: "tabIndexInput", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, requiredInput: { classPropertyName: "requiredInput", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, labelPositionInput: { classPropertyName: "labelPositionInput", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, nameInput: { classPropertyName: "nameInput", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { properties: { "attr.id": "id()", "class.kbq-radio-button_big": "big()", "class.kbq-selected": "checked", "class.kbq-disabled": "disabled" }, classAttribute: "kbq-radio-button" }, queries: [{ propertyName: "hint", first: true, predicate: KbqHint, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], exportAs: ["kbqRadioButton"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label #label class=\"kbq-radio-label\" [attr.for]=\"inputId()\">\n <!--\n The wrapping label would fold everything it contains \u2014 the projected hint included \u2014 into the\n accessible name, so the name is overridden with an explicit `aria-labelledby` pointing at the\n option text alone, and the hint arrives as a description instead.\n -->\n <input\n #input\n type=\"radio\"\n class=\"kbq-radio-input cdk-visually-hidden\"\n [attr.aria-describedby]=\"hint()?.id() ?? null\"\n [attr.aria-labelledby]=\"labelId()\"\n [attr.name]=\"name\"\n [attr.value]=\"nativeValue\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId()\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n\n <div class=\"kbq-radio-label-content\" [class.kbq-radio-label-before]=\"labelPosition === 'before'\">\n <div class=\"kbq-radio-button__outer-circle\">\n <div class=\"kbq-radio-button__inner-circle\"></div>\n </div>\n\n <div class=\"kbq-radio__text-container\">\n <span class=\"kbq-radio__text\" [id]=\"labelId()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n </div>\n</label>\n", styles: [".kbq-radio-group{display:inline-flex;flex-direction:column}.kbq-radio-group.kbq-radio-group_normal{gap:var(--kbq-radio-size-normal-vertical-gap)}.kbq-radio-group.kbq-radio-group_big{gap:var(--kbq-radio-size-big-vertical-gap)}.kbq-radio-group__subscript{display:flex;flex-direction:column;gap:var(--kbq-radio-size-normal-vertical-content-padding);margin-top:calc(var(--kbq-radio-size-normal-vertical-content-padding) - var(--kbq-radio-size-normal-vertical-gap));padding-left:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-group_label-before .kbq-radio-group__subscript{padding-left:0;padding-right:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-group_big .kbq-radio-group__subscript{margin-top:calc(var(--kbq-radio-size-big-vertical-content-padding) - var(--kbq-radio-size-big-vertical-gap));padding-left:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-group_big.kbq-radio-group_label-before .kbq-radio-group__subscript{padding-left:0;padding-right:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button{display:inline-block}.kbq-radio-label{position:relative;display:inline-flex;align-items:center;vertical-align:top;cursor:pointer;width:100%}.kbq-radio-label-content{display:inline-flex;position:relative;order:0;line-height:inherit;padding-left:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2);padding-right:0}.kbq-radio-label-content .kbq-radio-button__outer-circle,.kbq-radio-label-content .kbq-radio-button__inner-circle{box-sizing:content-box;position:absolute;display:flex;border-radius:50%}.kbq-radio-label-content .kbq-radio-button__outer-circle{border-style:solid;border-width:var(--kbq-radio-size-normal-outer-circle-border-width);left:0;top:calc((var(--kbq-typography-text-normal-line-height) - var(--kbq-radio-size-normal-outer-size) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-normal-outer-size);height:var(--kbq-radio-size-normal-outer-size)}.kbq-radio-label-content .kbq-radio-button__inner-circle{position:relative;margin:auto;width:var(--kbq-radio-size-normal-inner-size);height:var(--kbq-radio-size-normal-inner-size)}.kbq-radio-label-content .kbq-radio__text-container{display:flex;flex-direction:column}.kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-normal-vertical-content-padding)}.kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-label-content.kbq-radio-label-before .kbq-radio-button__outer-circle{left:unset;right:0}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content{padding-left:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__outer-circle{border-width:var(--kbq-radio-size-big-outer-circle-border-width);top:calc((var(--kbq-typography-text-big-line-height) - var(--kbq-radio-size-big-outer-size) - var(--kbq-radio-size-big-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-big-outer-size);height:var(--kbq-radio-size-big-outer-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__inner-circle{width:var(--kbq-radio-size-big-inner-size);height:var(--kbq-radio-size-big-inner-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-big-vertical-content-padding)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-default-outer-circle-border);background:var(--kbq-radio-theme-default-outer-circle-background)}.kbq-radio-button .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-default-inner-circle-background)}.kbq-radio-button .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-default-caption)}.kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-hover-outer-circle-border);background:var(--kbq-radio-theme-states-hover-outer-circle-background)}.kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-hover-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-focused-outer-circle-border);background:var(--kbq-radio-theme-states-focused-outer-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-focused-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-outer-circle-border);background:var(--kbq-radio-theme-states-checked-outer-circle-background)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-focused-outer-circle-border);background:var(--kbq-radio-theme-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button{color:var(--kbq-foreground-contrast)}.kbq-radio-button.kbq-error .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-default-outer-circle-border);background:var(--kbq-radio-error-default-outer-circle-background)}.kbq-radio-button.kbq-error .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-default-inner-circle-background)}.kbq-radio-button.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-default-caption)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-hover-outer-circle-border);background:var(--kbq-radio-error-states-hover-outer-circle-background)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-hover-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-focused-outer-circle-border);background:var(--kbq-radio-error-states-focused-outer-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-focused-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-outer-circle-border);background:var(--kbq-radio-error-states-checked-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-focused-outer-circle-border);background:var(--kbq-radio-error-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-error-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-disabled-outer-circle-border);background:var(--kbq-radio-error-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error{color:var(--kbq-foreground-contrast)}.kbq-radio-group.kbq-error .kbq-radio-button .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-default-outer-circle-border);background:var(--kbq-radio-error-default-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-default-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button .kbq-hint .kbq-hint__text,.kbq-radio-group.kbq-invalid .kbq-radio-button .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-default-caption)}.kbq-radio-group.kbq-error .kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-error .kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-hover-outer-circle-border);background:var(--kbq-radio-error-states-hover-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-error .kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-hover-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-focused-outer-circle-border);background:var(--kbq-radio-error-states-focused-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-focused-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-focused-outer-circle-shadow)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-outer-circle-border);background:var(--kbq-radio-error-states-checked-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-focused-outer-circle-border);background:var(--kbq-radio-error-states-checked-focused-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-focused-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-checked-focused-outer-circle-shadow)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-error-states-checked-disabled-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-disabled-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-disabled-outer-circle-border);background:var(--kbq-radio-error-states-disabled-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-disabled-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-radio-label,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-group__subscript .kbq-hint:where(:not(.kbq-error)) .kbq-hint__text{color:var(--kbq-radio-theme-default-caption)}.kbq-radio-button{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-radio-button .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-radio-button.kbq-radio-button_big{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-radio-button.kbq-radio-button_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-radio-group_normal .kbq-radio-group__subscript .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-radio-group_big .kbq-radio-group__subscript .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-radio-group{--kbq-radio-size-big-vertical-gap: var(--kbq-size-m);--kbq-radio-size-normal-vertical-gap: var(--kbq-size-s);--kbq-radio-theme-default-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-default-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-default-inner-circle-background: transparent;--kbq-radio-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-radio-theme-states-hover-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-states-hover-outer-circle-background: var(--kbq-states-background-transparent-hover);--kbq-radio-theme-states-hover-inner-circle-background: transparent;--kbq-radio-theme-states-checked-outer-circle-border: transparent;--kbq-radio-theme-states-checked-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-hover-outer-circle-border: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-outer-circle-background: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-theme-states-focused-outer-circle-border: transparent;--kbq-radio-theme-states-focused-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-states-focused-inner-circle-background: transparent;--kbq-radio-theme-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-checked-focused-outer-circle-border: transparent;--kbq-radio-theme-states-checked-focused-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-focused-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-disabled-inner-circle-background: transparent;--kbq-radio-theme-states-disabled-caption: var(--kbq-states-foreground-disabled);--kbq-radio-error-default-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-default-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-default-inner-circle-background: transparent;--kbq-radio-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-radio-error-states-hover-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-states-hover-outer-circle-background: var(--kbq-states-background-error-fade-hover);--kbq-radio-error-states-hover-inner-circle-background: transparent;--kbq-radio-error-states-checked-outer-circle-border: transparent;--kbq-radio-error-states-checked-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-hover-outer-circle-border: transparent;--kbq-radio-error-states-checked-hover-outer-circle-background: var(--kbq-states-background-error-hover);--kbq-radio-error-states-checked-hover-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-error-states-focused-outer-circle-border: transparent;--kbq-radio-error-states-focused-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-states-focused-inner-circle-background: transparent;--kbq-radio-error-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-checked-focused-outer-circle-border: transparent;--kbq-radio-error-states-checked-focused-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-focused-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-disabled-inner-circle-background: transparent;--kbq-radio-error-states-disabled-caption: var(--kbq-states-foreground-disabled)}.kbq-radio-button,.kbq-radio-group__subscript{--kbq-radio-size-normal-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-normal-outer-size: calc( var(--kbq-size-l) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2 );--kbq-radio-size-normal-inner-size: var(--kbq-size-xs);--kbq-radio-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-radio-size-big-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-big-outer-size: calc(var(--kbq-size-l) - var(--kbq-radio-size-big-outer-circle-border-width) * 2);--kbq-radio-size-big-inner-size: var(--kbq-size-xs);--kbq-radio-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-big-vertical-content-padding: var(--kbq-size-3xs)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
435
672
  }
436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioButton, decorators: [{
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioButton, decorators: [{
437
674
  type: Component,
438
675
  args: [{ selector: 'kbq-radio-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
439
676
  class: 'kbq-radio-button',
440
- '[attr.id]': 'id',
441
- '[class.kbq-radio-button_big]': 'radioGroup?.big()',
677
+ '[attr.id]': 'id()',
678
+ // The group's `big` through a signal of the button's own: the group's host bindings read `big`, and they run in
679
+ // the same reactive consumer, where a signal read again after others costs a scan of all it has read so far.
680
+ '[class.kbq-radio-button_big]': 'big()',
442
681
  '[class.kbq-selected]': 'checked',
443
682
  '[class.kbq-disabled]': 'disabled'
444
- }, exportAs: 'kbqRadioButton', template: "<label #label class=\"kbq-radio-label\" [attr.for]=\"inputId\">\n <input\n #input\n type=\"radio\"\n class=\"kbq-radio-input cdk-visually-hidden\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n\n <div class=\"kbq-radio-label-content\" [class.kbq-radio-label-before]=\"labelPosition === 'before'\">\n <div class=\"kbq-radio-button__outer-circle\">\n <div class=\"kbq-radio-button__inner-circle\"></div>\n </div>\n\n <div class=\"kbq-radio__text-container\">\n <span class=\"kbq-radio__text\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n </div>\n</label>\n", styles: [".kbq-radio-group{display:inline-flex;flex-direction:column}.kbq-radio-group.kbq-radio-group_normal{gap:var(--kbq-radio-size-normal-vertical-gap)}.kbq-radio-group.kbq-radio-group_big{gap:var(--kbq-radio-size-big-vertical-gap)}.kbq-radio-button{display:inline-flex}.kbq-radio-label{display:inline-flex;align-items:center;vertical-align:middle;cursor:pointer;width:100%}.kbq-radio-label-content{display:inline-flex;position:relative;order:0;line-height:inherit;padding-left:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2);padding-right:0}.kbq-radio-label-content .kbq-radio-button__outer-circle,.kbq-radio-label-content .kbq-radio-button__inner-circle{box-sizing:content-box;position:absolute;display:flex;content:\"\";border-style:solid;border-radius:50%}.kbq-radio-label-content .kbq-radio-button__outer-circle{border-width:var(--kbq-radio-size-normal-outer-circle-border-width);left:0;top:calc((var(--kbq-typography-text-normal-line-height) - var(--kbq-radio-size-normal-outer-size) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-normal-outer-size);height:var(--kbq-radio-size-normal-outer-size)}.kbq-radio-label-content .kbq-radio-button__inner-circle{position:relative;margin:auto;width:var(--kbq-radio-size-normal-inner-size);height:var(--kbq-radio-size-normal-inner-size)}.kbq-radio-label-content .kbq-radio__text-container{display:flex;flex-direction:column}.kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-normal-vertical-content-padding)}.kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-label-content.kbq-radio-label-before .kbq-radio-button__outer-circle{left:unset;right:0}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content{padding-left:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__outer-circle{border-width:var(--kbq-radio-size-big-outer-circle-border-width);top:calc((var(--kbq-typography-text-big-line-height) - var(--kbq-radio-size-big-outer-size) - var(--kbq-radio-size-big-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-big-outer-size);height:var(--kbq-radio-size-big-outer-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__inner-circle{width:var(--kbq-radio-size-big-inner-size);height:var(--kbq-radio-size-big-inner-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-big-vertical-content-padding)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button .kbq-radio-button__inner-circle{border-width:0!important}.kbq-radio-button .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-default-outer-circle-border);background:var(--kbq-radio-theme-default-outer-circle-background)}.kbq-radio-button .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-default-inner-circle-background)}.kbq-radio-button .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-default-caption)}.kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-hover-outer-circle-border);background:var(--kbq-radio-theme-states-hover-outer-circle-background)}.kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-hover-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-focused-outer-circle-border);background:var(--kbq-radio-theme-states-focused-outer-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-focused-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-outer-circle-border);background:var(--kbq-radio-theme-states-checked-outer-circle-background)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-focused-outer-circle-border);background:var(--kbq-radio-theme-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button{color:var(--kbq-foreground-contrast)}.kbq-radio-button.kbq-error .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-default-outer-circle-border);background:var(--kbq-radio-error-default-outer-circle-background)}.kbq-radio-button.kbq-error .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-default-inner-circle-background)}.kbq-radio-button.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-default-caption)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-hover-outer-circle-border);background:var(--kbq-radio-error-states-hover-outer-circle-background)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-hover-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-focused-outer-circle-border);background:var(--kbq-radio-error-states-focused-outer-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-focused-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-outer-circle-border);background:var(--kbq-radio-error-states-checked-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-focused-outer-circle-border);background:var(--kbq-radio-error-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-error-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-disabled-outer-circle-border);background:var(--kbq-radio-error-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error{color:var(--kbq-foreground-contrast)}.kbq-radio-button{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-radio-button .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-radio-button.kbq-radio-button_big{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-radio-button.kbq-radio-button_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-radio-group{--kbq-radio-size-big-vertical-gap: var(--kbq-size-m);--kbq-radio-size-normal-vertical-gap: var(--kbq-size-s);--kbq-radio-size-big-top: var(--kbq-size-3xs);--kbq-radio-theme-default-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-default-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-default-inner-circle-background: transparent;--kbq-radio-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-radio-theme-states-hover-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-states-hover-outer-circle-background: var(--kbq-states-background-transparent-hover);--kbq-radio-theme-states-hover-inner-circle-background: transparent;--kbq-radio-theme-states-checked-outer-circle-border: transparent;--kbq-radio-theme-states-checked-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-hover-outer-circle-border: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-outer-circle-background: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-theme-states-focused-outer-circle-border: transparent;--kbq-radio-theme-states-focused-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-states-focused-inner-circle-background: transparent;--kbq-radio-theme-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-checked-focused-outer-circle-border: transparent;--kbq-radio-theme-states-checked-focused-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-focused-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-disabled-inner-circle-background: transparent;--kbq-radio-theme-states-disabled-caption: var(--kbq-states-foreground-disabled);--kbq-radio-error-default-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-default-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-default-inner-circle-background: transparent;--kbq-radio-error-states-hover-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-states-hover-outer-circle-background: var(--kbq-states-background-error-fade-hover);--kbq-radio-error-states-hover-inner-circle-background: transparent;--kbq-radio-error-states-checked-outer-circle-border: transparent;--kbq-radio-error-states-checked-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-hover-outer-circle-border: transparent;--kbq-radio-error-states-checked-hover-outer-circle-background: var(--kbq-states-background-error-hover);--kbq-radio-error-states-checked-hover-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-error-states-focused-outer-circle-border: transparent;--kbq-radio-error-states-focused-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-states-focused-inner-circle-background: transparent;--kbq-radio-error-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-checked-focused-outer-circle-border: transparent;--kbq-radio-error-states-checked-focused-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-focused-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-disabled-inner-circle-background: transparent;--kbq-radio-error-states-disabled-caption: var(--kbq-states-foreground-disabled)}.kbq-radio-button{--kbq-radio-size-normal-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-normal-outer-size: calc( var(--kbq-size-l) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2 );--kbq-radio-size-normal-inner-size: var(--kbq-size-xs);--kbq-radio-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-radio-size-normal-top: 0;--kbq-radio-size-big-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-big-outer-size: calc(var(--kbq-size-l) - var(--kbq-radio-size-big-outer-circle-border-width) * 2);--kbq-radio-size-big-inner-size: var(--kbq-size-xs);--kbq-radio-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-big-vertical-content-padding: var(--kbq-size-3xs)}\n"] }]
445
- }], ctorParameters: () => [], propDecorators: { checked: [{
446
- type: Input,
447
- args: [{ transform: booleanAttribute }]
448
- }], value: [{
449
- type: Input
450
- }], disabled: [{
451
- type: Input,
452
- args: [{ transform: booleanAttribute }]
453
- }], tabIndex: [{
454
- type: Input,
455
- args: [{ transform: numberAttribute }]
456
- }], required: [{
457
- type: Input,
458
- args: [{ transform: booleanAttribute }]
459
- }], labelPosition: [{
460
- type: Input
461
- }], name: [{
462
- type: Input
463
- }], inputElement: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], change: [{ type: i0.Output, args: ["change"] }], isFocused: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFocused", required: false }] }], id: [{
464
- type: Input
465
- }] } });
683
+ }, exportAs: 'kbqRadioButton', template: "<label #label class=\"kbq-radio-label\" [attr.for]=\"inputId()\">\n <!--\n The wrapping label would fold everything it contains \u2014 the projected hint included \u2014 into the\n accessible name, so the name is overridden with an explicit `aria-labelledby` pointing at the\n option text alone, and the hint arrives as a description instead.\n -->\n <input\n #input\n type=\"radio\"\n class=\"kbq-radio-input cdk-visually-hidden\"\n [attr.aria-describedby]=\"hint()?.id() ?? null\"\n [attr.aria-labelledby]=\"labelId()\"\n [attr.name]=\"name\"\n [attr.value]=\"nativeValue\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId()\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n\n <div class=\"kbq-radio-label-content\" [class.kbq-radio-label-before]=\"labelPosition === 'before'\">\n <div class=\"kbq-radio-button__outer-circle\">\n <div class=\"kbq-radio-button__inner-circle\"></div>\n </div>\n\n <div class=\"kbq-radio__text-container\">\n <span class=\"kbq-radio__text\" [id]=\"labelId()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n </div>\n</label>\n", styles: [".kbq-radio-group{display:inline-flex;flex-direction:column}.kbq-radio-group.kbq-radio-group_normal{gap:var(--kbq-radio-size-normal-vertical-gap)}.kbq-radio-group.kbq-radio-group_big{gap:var(--kbq-radio-size-big-vertical-gap)}.kbq-radio-group__subscript{display:flex;flex-direction:column;gap:var(--kbq-radio-size-normal-vertical-content-padding);margin-top:calc(var(--kbq-radio-size-normal-vertical-content-padding) - var(--kbq-radio-size-normal-vertical-gap));padding-left:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-group_label-before .kbq-radio-group__subscript{padding-left:0;padding-right:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-group_big .kbq-radio-group__subscript{margin-top:calc(var(--kbq-radio-size-big-vertical-content-padding) - var(--kbq-radio-size-big-vertical-gap));padding-left:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-group_big.kbq-radio-group_label-before .kbq-radio-group__subscript{padding-left:0;padding-right:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button{display:inline-block}.kbq-radio-label{position:relative;display:inline-flex;align-items:center;vertical-align:top;cursor:pointer;width:100%}.kbq-radio-label-content{display:inline-flex;position:relative;order:0;line-height:inherit;padding-left:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2);padding-right:0}.kbq-radio-label-content .kbq-radio-button__outer-circle,.kbq-radio-label-content .kbq-radio-button__inner-circle{box-sizing:content-box;position:absolute;display:flex;border-radius:50%}.kbq-radio-label-content .kbq-radio-button__outer-circle{border-style:solid;border-width:var(--kbq-radio-size-normal-outer-circle-border-width);left:0;top:calc((var(--kbq-typography-text-normal-line-height) - var(--kbq-radio-size-normal-outer-size) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-normal-outer-size);height:var(--kbq-radio-size-normal-outer-size)}.kbq-radio-label-content .kbq-radio-button__inner-circle{position:relative;margin:auto;width:var(--kbq-radio-size-normal-inner-size);height:var(--kbq-radio-size-normal-inner-size)}.kbq-radio-label-content .kbq-radio__text-container{display:flex;flex-direction:column}.kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-normal-vertical-content-padding)}.kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-normal-outer-size) + var(--kbq-radio-size-normal-horizontal-content-padding) + var(--kbq-radio-size-normal-outer-circle-border-width) * 2)}.kbq-radio-label-content.kbq-radio-label-before .kbq-radio-button__outer-circle{left:unset;right:0}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content{padding-left:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__outer-circle{border-width:var(--kbq-radio-size-big-outer-circle-border-width);top:calc((var(--kbq-typography-text-big-line-height) - var(--kbq-radio-size-big-outer-size) - var(--kbq-radio-size-big-outer-circle-border-width) * 2) / 2);width:var(--kbq-radio-size-big-outer-size);height:var(--kbq-radio-size-big-outer-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-radio-button__inner-circle{width:var(--kbq-radio-size-big-inner-size);height:var(--kbq-radio-size-big-inner-size)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content .kbq-hint{margin-top:var(--kbq-radio-size-big-vertical-content-padding)}.kbq-radio-button.kbq-radio-button_big .kbq-radio-label-content.kbq-radio-label-before{padding-left:0;padding-right:calc(var(--kbq-radio-size-big-outer-size) + var(--kbq-radio-size-big-horizontal-content-padding) + var(--kbq-radio-size-big-outer-circle-border-width) * 2)}.kbq-radio-button .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-default-outer-circle-border);background:var(--kbq-radio-theme-default-outer-circle-background)}.kbq-radio-button .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-default-inner-circle-background)}.kbq-radio-button .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-default-caption)}.kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-hover-outer-circle-border);background:var(--kbq-radio-theme-states-hover-outer-circle-background)}.kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-hover-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-focused-outer-circle-border);background:var(--kbq-radio-theme-states-focused-outer-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-focused-inner-circle-background)}.kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-outer-circle-border);background:var(--kbq-radio-theme-states-checked-outer-circle-background)}.kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-focused-outer-circle-border);background:var(--kbq-radio-theme-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-theme-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-theme-states-disabled-outer-circle-border);background:var(--kbq-radio-theme-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-theme-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-theme-states-disabled-caption)}.kbq-radio-button{color:var(--kbq-foreground-contrast)}.kbq-radio-button.kbq-error .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-default-outer-circle-border);background:var(--kbq-radio-error-default-outer-circle-background)}.kbq-radio-button.kbq-error .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-default-inner-circle-background)}.kbq-radio-button.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-default-caption)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__outer-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-hover-outer-circle-border);background:var(--kbq-radio-error-states-hover-outer-circle-background)}.kbq-radio-button.kbq-error:hover .kbq-radio-button__inner-circle,.kbq-radio-button.kbq-error.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-hover-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-focused-outer-circle-border);background:var(--kbq-radio-error-states-focused-outer-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-focused-inner-circle-background)}.kbq-radio-button.kbq-error.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-outer-circle-border);background:var(--kbq-radio-error-states-checked-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-focused-outer-circle-border);background:var(--kbq-radio-error-states-checked-focused-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-focused-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-checked-focused-outer-circle-shadow)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-error-states-checked-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-disabled-outer-circle-border);background:var(--kbq-radio-error-states-disabled-outer-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-disabled-inner-circle-background)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-button.kbq-error{color:var(--kbq-foreground-contrast)}.kbq-radio-group.kbq-error .kbq-radio-button .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-default-outer-circle-border);background:var(--kbq-radio-error-default-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-default-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button .kbq-hint .kbq-hint__text,.kbq-radio-group.kbq-invalid .kbq-radio-button .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-default-caption)}.kbq-radio-group.kbq-error .kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-error .kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button:hover .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-hovered .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-hover-outer-circle-border);background:var(--kbq-radio-error-states-hover-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-error .kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button:hover .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-hovered .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-hover-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-focused-outer-circle-border);background:var(--kbq-radio-error-states-focused-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-focused-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.cdk-keyboard-focused .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-focused-outer-circle-shadow)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-outer-circle-border);background:var(--kbq-radio-error-states-checked-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-focused-outer-circle-border);background:var(--kbq-radio-error-states-checked-focused-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-focused-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.cdk-keyboard-focused:not(.kbq-disabled) .kbq-radio-button__outer-circle{box-shadow:var(--kbq-radio-error-states-checked-focused-outer-circle-shadow)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-checked-disabled-outer-circle-border);background:var(--kbq-radio-error-states-checked-disabled-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-selected.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-checked-disabled-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-radio-button__outer-circle{border-color:var(--kbq-radio-error-states-disabled-outer-circle-border);background:var(--kbq-radio-error-states-disabled-outer-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-radio-button__inner-circle{background:var(--kbq-radio-error-states-disabled-inner-circle-background)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-radio-label,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-radio-label{cursor:default;color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-group.kbq-error .kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text,.kbq-radio-group.kbq-invalid .kbq-radio-button.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-radio-error-states-disabled-caption)}.kbq-radio-group__subscript .kbq-hint:where(:not(.kbq-error)) .kbq-hint__text{color:var(--kbq-radio-theme-default-caption)}.kbq-radio-button{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-radio-button .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-radio-button.kbq-radio-button_big{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-radio-button.kbq-radio-button_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-radio-group_normal .kbq-radio-group__subscript .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-radio-group_big .kbq-radio-group__subscript .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-radio-group{--kbq-radio-size-big-vertical-gap: var(--kbq-size-m);--kbq-radio-size-normal-vertical-gap: var(--kbq-size-s);--kbq-radio-theme-default-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-default-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-default-inner-circle-background: transparent;--kbq-radio-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-radio-theme-states-hover-outer-circle-border: var(--kbq-line-contrast-fade);--kbq-radio-theme-states-hover-outer-circle-background: var(--kbq-states-background-transparent-hover);--kbq-radio-theme-states-hover-inner-circle-background: transparent;--kbq-radio-theme-states-checked-outer-circle-border: transparent;--kbq-radio-theme-states-checked-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-hover-outer-circle-border: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-outer-circle-background: var(--kbq-states-background-theme-hover);--kbq-radio-theme-states-checked-hover-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-theme-states-focused-outer-circle-border: transparent;--kbq-radio-theme-states-focused-outer-circle-background: var(--kbq-background-bg);--kbq-radio-theme-states-focused-inner-circle-background: transparent;--kbq-radio-theme-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-checked-focused-outer-circle-border: transparent;--kbq-radio-theme-states-checked-focused-outer-circle-background: var(--kbq-background-theme);--kbq-radio-theme-states-checked-focused-inner-circle-background: var(--kbq-foreground-white);--kbq-radio-theme-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-theme);--kbq-radio-theme-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-theme-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-theme-states-disabled-inner-circle-background: transparent;--kbq-radio-theme-states-disabled-caption: var(--kbq-states-foreground-disabled);--kbq-radio-error-default-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-default-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-default-inner-circle-background: transparent;--kbq-radio-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-radio-error-states-hover-outer-circle-border: var(--kbq-line-error);--kbq-radio-error-states-hover-outer-circle-background: var(--kbq-states-background-error-fade-hover);--kbq-radio-error-states-hover-inner-circle-background: transparent;--kbq-radio-error-states-checked-outer-circle-border: transparent;--kbq-radio-error-states-checked-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-hover-outer-circle-border: transparent;--kbq-radio-error-states-checked-hover-outer-circle-background: var(--kbq-states-background-error-hover);--kbq-radio-error-states-checked-hover-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-checked-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-checked-disabled-inner-circle-background: var(--kbq-states-icon-disabled);--kbq-radio-error-states-focused-outer-circle-border: transparent;--kbq-radio-error-states-focused-outer-circle-background: var(--kbq-background-error-less);--kbq-radio-error-states-focused-inner-circle-background: transparent;--kbq-radio-error-states-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-checked-focused-outer-circle-border: transparent;--kbq-radio-error-states-checked-focused-outer-circle-background: var(--kbq-background-error);--kbq-radio-error-states-checked-focused-inner-circle-background: var(--kbq-icon-white);--kbq-radio-error-states-checked-focused-outer-circle-shadow: 0 0 .1px 2px var(--kbq-states-line-focus-error);--kbq-radio-error-states-disabled-outer-circle-border: var(--kbq-states-line-disabled);--kbq-radio-error-states-disabled-outer-circle-background: var(--kbq-states-background-disabled);--kbq-radio-error-states-disabled-inner-circle-background: transparent;--kbq-radio-error-states-disabled-caption: var(--kbq-states-foreground-disabled)}.kbq-radio-button,.kbq-radio-group__subscript{--kbq-radio-size-normal-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-normal-outer-size: calc( var(--kbq-size-l) - var(--kbq-radio-size-normal-outer-circle-border-width) * 2 );--kbq-radio-size-normal-inner-size: var(--kbq-size-xs);--kbq-radio-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-radio-size-big-outer-circle-border-width: var(--kbq-size-border-width);--kbq-radio-size-big-outer-size: calc(var(--kbq-size-l) - var(--kbq-radio-size-big-outer-circle-border-width) * 2);--kbq-radio-size-big-inner-size: var(--kbq-size-xs);--kbq-radio-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-radio-size-big-vertical-content-padding: var(--kbq-size-3xs)}\n"] }]
684
+ }], ctorParameters: () => [], propDecorators: { inputElement: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], change: [{ type: i0.Output, args: ["change"] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], hint: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqHint), { isSignal: true }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], checkedInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], tabIndexInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], requiredInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], labelPositionInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], nameInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] } });
466
685
 
467
686
  class KbqRadioModule {
468
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
469
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioModule, imports: [A11yModule, KbqRadioGroup, KbqRadioButton], exports: [KbqRadioGroup, KbqRadioButton] }); }
470
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioModule, imports: [A11yModule] }); }
687
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
688
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioModule, imports: [A11yModule, KbqRadioGroup, KbqRadioButton], exports: [KbqRadioGroup, KbqRadioButton] }); }
689
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioModule, imports: [A11yModule] }); }
471
690
  }
472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqRadioModule, decorators: [{
691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqRadioModule, decorators: [{
473
692
  type: NgModule,
474
693
  args: [{
475
694
  imports: [A11yModule, KbqRadioGroup, KbqRadioButton],