@public-ui/components 4.5.0-rc.7 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/assets/kolicons/kolicons.eot +0 -0
  2. package/assets/kolicons/kolicons.ttf +0 -0
  3. package/assets/kolicons/kolicons.woff +0 -0
  4. package/assets/kolicons/kolicons.woff2 +0 -0
  5. package/assets/kolicons/style.css +6 -6
  6. package/custom-elements.json +1 -1
  7. package/dist/cjs/{Heading-d30Feghg.js → Heading-CFe7VL6f.js} +3 -3
  8. package/dist/cjs/{Heading-d30Feghg.js.map → Heading-CFe7VL6f.js.map} +1 -1
  9. package/dist/cjs/{api-C8ZkIyx7.js → api-kNqVTMqf.js} +8 -8
  10. package/dist/cjs/{api-C8ZkIyx7.js.map → api-kNqVTMqf.js.map} +1 -1
  11. package/dist/cjs/{api-CRSjJs8P.js → api-n8IopicV.js} +12 -12
  12. package/dist/cjs/{api-CRSjJs8P.js.map → api-n8IopicV.js.map} +1 -1
  13. package/dist/cjs/{app-globals-B6wB2cXk.js → app-globals-KA8S4Kl9.js} +4 -4
  14. package/dist/cjs/{app-globals-B6wB2cXk.js.map → app-globals-KA8S4Kl9.js.map} +1 -1
  15. package/dist/cjs/{base-LmwA5h1k.js → base-B07RMt0-.js} +5 -5
  16. package/dist/cjs/{base-LmwA5h1k.js.map → base-B07RMt0-.js.map} +1 -1
  17. package/dist/cjs/{base-C3MDHUog.js → base-Bw44v5Il.js} +4 -4
  18. package/dist/cjs/{base-C3MDHUog.js.map → base-Bw44v5Il.js.map} +1 -1
  19. package/dist/cjs/{base-DgUZAiNc.js → base-DGx5qxja.js} +16 -16
  20. package/dist/cjs/{base-DgUZAiNc.js.map → base-DGx5qxja.js.map} +1 -1
  21. package/dist/cjs/{base-CyQnTxi6.js → base-Og0FJHrO.js} +4 -4
  22. package/dist/cjs/{base-CyQnTxi6.js.map → base-Og0FJHrO.js.map} +1 -1
  23. package/dist/cjs/{base-web-component-C-CwpVZw.js → base-web-component-9l9kVbBw.js} +5 -5
  24. package/dist/cjs/{base-web-component-C-CwpVZw.js.map → base-web-component-9l9kVbBw.js.map} +1 -1
  25. package/dist/cjs/{base-web-component-d2k3Mc9P.js → base-web-component-MA3Hmf00.js} +7 -7
  26. package/dist/cjs/{base-web-component-d2k3Mc9P.js.map → base-web-component-MA3Hmf00.js.map} +1 -1
  27. package/dist/cjs/{behavior-C-BdOoSN.js → behavior-CddJDVDz.js} +3 -3
  28. package/dist/cjs/{behavior-C-BdOoSN.js.map → behavior-CddJDVDz.js.map} +1 -1
  29. package/dist/cjs/{component-D2kI8uwF.js → component-8M23HGR8.js} +5 -5
  30. package/dist/cjs/{component-D2kI8uwF.js.map → component-8M23HGR8.js.map} +1 -1
  31. package/dist/cjs/{component-BIz_gAas.js → component-B1t_MP4V.js} +7 -7
  32. package/dist/cjs/{component-BIz_gAas.js.map → component-B1t_MP4V.js.map} +1 -1
  33. package/dist/cjs/{component-B1kzY-J5.js → component-B92xMW4N.js} +4 -4
  34. package/dist/cjs/{component-B1kzY-J5.js.map → component-B92xMW4N.js.map} +1 -1
  35. package/dist/cjs/{component-BairlFHi.js → component-BGdViN9u.js} +3 -3
  36. package/dist/cjs/{component-BairlFHi.js.map → component-BGdViN9u.js.map} +1 -1
  37. package/dist/cjs/{component-B1zMXSkZ.js → component-BZKcc9iM.js} +5 -5
  38. package/dist/cjs/{component-B1zMXSkZ.js.map → component-BZKcc9iM.js.map} +1 -1
  39. package/dist/cjs/{component-CmyhDJ0r.js → component-C8WDkeRK.js} +3 -3
  40. package/dist/cjs/{component-CmyhDJ0r.js.map → component-C8WDkeRK.js.map} +1 -1
  41. package/dist/cjs/{component-BHDnSaCH.js → component-CESKZB76.js} +3 -3
  42. package/dist/cjs/{component-BHDnSaCH.js.map → component-CESKZB76.js.map} +1 -1
  43. package/dist/cjs/{component-D33lYKYT.js → component-CQRRF1jV.js} +3 -3
  44. package/dist/cjs/{component-D33lYKYT.js.map → component-CQRRF1jV.js.map} +1 -1
  45. package/dist/cjs/{component-DaAVlb5U.js → component-D7IXFVHR.js} +4 -4
  46. package/dist/cjs/{component-DaAVlb5U.js.map → component-D7IXFVHR.js.map} +1 -1
  47. package/dist/cjs/{component-DITtC2F9.js → component-Dzx6SM5K.js} +7 -7
  48. package/dist/cjs/{component-DITtC2F9.js.map → component-Dzx6SM5K.js.map} +1 -1
  49. package/dist/cjs/{component-_jdRFw0Y.js → component-K9JCKLMC.js} +4 -4
  50. package/dist/cjs/{component-_jdRFw0Y.js.map → component-K9JCKLMC.js.map} +1 -1
  51. package/dist/cjs/{component-KT0MKnL5.js → component-inHq7qad.js} +5 -5
  52. package/dist/cjs/{component-KT0MKnL5.js.map → component-inHq7qad.js.map} +1 -1
  53. package/dist/cjs/{dev.utils-B1bWgxrQ.js → dev.utils-CIsKrkDZ.js} +3 -3
  54. package/dist/cjs/{dev.utils-B1bWgxrQ.js.map → dev.utils-CIsKrkDZ.js.map} +1 -1
  55. package/dist/cjs/{devtools-DlcIXbRm.js → devtools-DEHRYx1J.js} +4 -4
  56. package/dist/cjs/{devtools-DlcIXbRm.js.map → devtools-DEHRYx1J.js.map} +1 -1
  57. package/dist/cjs/{field-control-D0lryu2-.js → field-control-gMhh35Xz.js} +8 -8
  58. package/dist/cjs/{field-control-D0lryu2-.js.map → field-control-gMhh35Xz.js.map} +1 -1
  59. package/dist/cjs/{group-DIGY9sM6.js → group-eUk7QHkH.js} +5 -5
  60. package/dist/cjs/{group-DIGY9sM6.js.map → group-eUk7QHkH.js.map} +1 -1
  61. package/dist/cjs/{index-qcrGfEY6.js → index-CjTDipy9.js} +3 -3
  62. package/dist/cjs/index-CjTDipy9.js.map +1 -0
  63. package/dist/cjs/{input-BjNjOSo5.js → input-D1hDtOel.js} +5 -5
  64. package/dist/cjs/{input-BjNjOSo5.js.map → input-D1hDtOel.js.map} +1 -1
  65. package/dist/cjs/{input-container-DghKiuUH.js → input-container-C9wW0ZFj.js} +7 -7
  66. package/dist/cjs/{input-container-DghKiuUH.js.map → input-container-C9wW0ZFj.js.map} +1 -1
  67. package/dist/cjs/{item-BMB6SaVm.js → item-C6TgTi4l.js} +4 -4
  68. package/dist/cjs/{item-BMB6SaVm.js.map → item-C6TgTi4l.js.map} +1 -1
  69. package/dist/cjs/{item-BKz8BDg2.js → item-D2TI8Iec.js} +4 -4
  70. package/dist/cjs/{item-BKz8BDg2.js.map → item-D2TI8Iec.js.map} +1 -1
  71. package/dist/cjs/{item-DdnTb-BP.js → item-DoAJ6Wmk.js} +3 -3
  72. package/dist/cjs/{item-DdnTb-BP.js.map → item-DoAJ6Wmk.js.map} +1 -1
  73. package/dist/cjs/{item-CFojolE7.js → item-se0KVw5y.js} +8 -8
  74. package/dist/cjs/{item-CFojolE7.js.map → item-se0KVw5y.js.map} +1 -1
  75. package/dist/cjs/kol-abbr.cjs.entry.js +2 -2
  76. package/dist/cjs/kol-accordion.cjs.entry.js +7 -7
  77. package/dist/cjs/kol-alert.cjs.entry.js +11 -11
  78. package/dist/cjs/kol-avatar.cjs.entry.js +1 -1
  79. package/dist/cjs/kol-badge.cjs.entry.js +10 -10
  80. package/dist/cjs/kol-breadcrumb.cjs.entry.js +9 -9
  81. package/dist/cjs/kol-button-link.cjs.entry.js +10 -10
  82. package/dist/cjs/kol-button.cjs.entry.js +10 -10
  83. package/dist/cjs/kol-card.cjs.entry.js +11 -11
  84. package/dist/cjs/kol-click-button.cjs.entry.js +2 -2
  85. package/dist/cjs/kol-combobox.cjs.entry.js +18 -18
  86. package/dist/cjs/kol-details.cjs.entry.js +7 -7
  87. package/dist/cjs/kol-dialog.cjs.entry.js +13 -13
  88. package/dist/cjs/kol-drawer.cjs.entry.js +12 -12
  89. package/dist/cjs/kol-form.cjs.entry.js +12 -12
  90. package/dist/cjs/kol-heading.cjs.entry.js +1 -1
  91. package/dist/cjs/kol-icon.cjs.entry.js +3 -3
  92. package/dist/cjs/kol-image.cjs.entry.js +1 -1
  93. package/dist/cjs/kol-input-checkbox.cjs.entry.js +17 -17
  94. package/dist/cjs/kol-input-color.cjs.entry.js +18 -18
  95. package/dist/cjs/kol-input-date.cjs.entry.js +18 -18
  96. package/dist/cjs/kol-input-email.cjs.entry.js +20 -20
  97. package/dist/cjs/kol-input-file.cjs.entry.js +17 -17
  98. package/dist/cjs/kol-input-number.cjs.entry.js +18 -18
  99. package/dist/cjs/kol-input-password.cjs.entry.js +20 -20
  100. package/dist/cjs/kol-input-radio.cjs.entry.js +17 -17
  101. package/dist/cjs/kol-input-range.cjs.entry.js +18 -18
  102. package/dist/cjs/kol-input-text.cjs.entry.js +20 -20
  103. package/dist/cjs/kol-kolibri.cjs.entry.js +2 -2
  104. package/dist/cjs/kol-link-button.cjs.entry.js +10 -10
  105. package/dist/cjs/kol-link.cjs.entry.js +10 -10
  106. package/dist/cjs/kol-meter.cjs.entry.js +1 -1
  107. package/dist/cjs/kol-modal.cjs.entry.js +13 -13
  108. package/dist/cjs/kol-nav.cjs.entry.js +13 -13
  109. package/dist/cjs/kol-pagination.cjs.entry.js +18 -18
  110. package/dist/cjs/kol-popover-button.cjs.entry.js +11 -11
  111. package/dist/cjs/kol-progress.cjs.entry.js +1 -1
  112. package/dist/cjs/kol-quote.cjs.entry.js +1 -1
  113. package/dist/cjs/kol-select.cjs.entry.js +17 -17
  114. package/dist/cjs/kol-single-select.cjs.entry.js +18 -18
  115. package/dist/cjs/kol-skeleton.cjs.entry.js +2 -2
  116. package/dist/cjs/kol-skip-nav.cjs.entry.js +9 -9
  117. package/dist/cjs/kol-spin.cjs.entry.js +3 -3
  118. package/dist/cjs/kol-split-button.cjs.entry.js +12 -12
  119. package/dist/cjs/kol-table-stateful.cjs.entry.js +25 -25
  120. package/dist/cjs/kol-table-stateless.cjs.entry.js +19 -19
  121. package/dist/cjs/kol-tabs.cjs.entry.js +9 -9
  122. package/dist/cjs/kol-textarea.cjs.entry.js +17 -17
  123. package/dist/cjs/kol-toast-container.cjs.entry.js +11 -11
  124. package/dist/cjs/kol-toolbar.cjs.entry.js +11 -11
  125. package/dist/cjs/kol-tooltip-wc.cjs.entry.js +4 -4
  126. package/dist/cjs/kol-tree-item.cjs.entry.js +9 -9
  127. package/dist/cjs/kol-tree.cjs.entry.js +1 -1
  128. package/dist/cjs/kol-version.cjs.entry.js +9 -9
  129. package/dist/cjs/kolibri.cjs.js +2 -2
  130. package/dist/cjs/loader.cjs.js +2 -2
  131. package/dist/cjs/{resolve-props-pAyNSZMT.js → resolve-props-JqnN_2MF.js} +3 -3
  132. package/dist/cjs/{resolve-props-pAyNSZMT.js.map → resolve-props-JqnN_2MF.js.map} +1 -1
  133. package/dist/cjs/{scroll-lock-CNwobwd2.js → scroll-lock-CxkP-oj1.js} +3 -3
  134. package/dist/cjs/{scroll-lock-CNwobwd2.js.map → scroll-lock-CxkP-oj1.js.map} +1 -1
  135. package/dist/cjs/{suggestions-D4TMMZSv.js → suggestions-BDfdREI5.js} +4 -4
  136. package/dist/cjs/{suggestions-D4TMMZSv.js.map → suggestions-BDfdREI5.js.map} +1 -1
  137. package/dist/cjs/test-component.cjs.entry.js +1 -1
  138. package/dist/cjs/{toggle-handler-mIB8gvse.js → toggle-handler-Bm0e15f-.js} +5 -5
  139. package/dist/cjs/{toggle-handler-mIB8gvse.js.map → toggle-handler-Bm0e15f-.js.map} +1 -1
  140. package/dist/collection/components/accordion/style.css +2 -2
  141. package/dist/collection/components/alert/style.css +2 -2
  142. package/dist/collection/components/badge/style.css +2 -2
  143. package/dist/collection/components/breadcrumb/style.css +2 -2
  144. package/dist/collection/components/button/style.css +2 -2
  145. package/dist/collection/components/button-link/style.css +2 -2
  146. package/dist/collection/components/card/style.css +2 -2
  147. package/dist/collection/components/combobox/style.css +2 -2
  148. package/dist/collection/components/details/style.css +2 -2
  149. package/dist/collection/components/dialog/style.css +2 -2
  150. package/dist/collection/components/drawer/style.css +2 -2
  151. package/dist/collection/components/form/style.css +2 -2
  152. package/dist/collection/components/icon/style.css +2 -2
  153. package/dist/collection/components/input-checkbox/style.css +2 -2
  154. package/dist/collection/components/input-color/style.css +2 -2
  155. package/dist/collection/components/input-date/style.css +2 -2
  156. package/dist/collection/components/input-email/style.css +2 -2
  157. package/dist/collection/components/input-file/style.css +2 -2
  158. package/dist/collection/components/input-number/style.css +2 -2
  159. package/dist/collection/components/input-password/style.css +2 -2
  160. package/dist/collection/components/input-radio/style.css +2 -2
  161. package/dist/collection/components/input-range/style.css +2 -2
  162. package/dist/collection/components/input-text/style.css +2 -2
  163. package/dist/collection/components/link/style.css +2 -2
  164. package/dist/collection/components/link-button/style.css +2 -2
  165. package/dist/collection/components/modal/style.css +2 -2
  166. package/dist/collection/components/nav/style.css +2 -2
  167. package/dist/collection/components/pagination/style.css +2 -2
  168. package/dist/collection/components/popover-button/style.css +2 -2
  169. package/dist/collection/components/select/style.css +2 -2
  170. package/dist/collection/components/single-select/style.css +2 -2
  171. package/dist/collection/components/skip-nav/style.css +2 -2
  172. package/dist/collection/components/split-button/style.css +2 -2
  173. package/dist/collection/components/table-stateful/style.css +2 -2
  174. package/dist/collection/components/table-stateless/style.css +2 -2
  175. package/dist/collection/components/tabs/style.css +2 -2
  176. package/dist/collection/components/textarea/style.css +2 -2
  177. package/dist/collection/components/toaster/style.css +2 -2
  178. package/dist/collection/components/toolbar/style.css +2 -2
  179. package/dist/collection/components/tree-item/style.css +2 -2
  180. package/dist/collection/components/version/style.css +2 -2
  181. package/dist/components/kol-accordion.js +1 -1
  182. package/dist/components/kol-alert.js +1 -1
  183. package/dist/components/kol-badge.js +1 -1
  184. package/dist/components/kol-breadcrumb.js +1 -1
  185. package/dist/components/kol-button-link.js +1 -1
  186. package/dist/components/kol-button.js +1 -1
  187. package/dist/components/kol-card.js +1 -1
  188. package/dist/components/kol-combobox.js +1 -1
  189. package/dist/components/kol-details.js +1 -1
  190. package/dist/components/kol-dialog.js +1 -1
  191. package/dist/components/kol-drawer.js +1 -1
  192. package/dist/components/kol-form.js +1 -1
  193. package/dist/components/kol-icon.js +1 -1
  194. package/dist/components/kol-input-checkbox.js +1 -1
  195. package/dist/components/kol-input-color.js +1 -1
  196. package/dist/components/kol-input-date.js +1 -1
  197. package/dist/components/kol-input-email.js +1 -1
  198. package/dist/components/kol-input-file.js +1 -1
  199. package/dist/components/kol-input-number.js +1 -1
  200. package/dist/components/kol-input-password.js +1 -1
  201. package/dist/components/kol-input-radio.js +1 -1
  202. package/dist/components/kol-input-range.js +1 -1
  203. package/dist/components/kol-input-text.js +1 -1
  204. package/dist/components/kol-link-button.js +1 -1
  205. package/dist/components/kol-link.js +1 -1
  206. package/dist/components/kol-modal.js +1 -1
  207. package/dist/components/kol-nav.js +1 -1
  208. package/dist/components/kol-pagination.js +1 -1
  209. package/dist/components/kol-popover-button.js +1 -1
  210. package/dist/components/kol-select.js +1 -1
  211. package/dist/components/kol-single-select.js +1 -1
  212. package/dist/components/kol-skip-nav.js +1 -1
  213. package/dist/components/kol-split-button.js +1 -1
  214. package/dist/components/kol-table-stateful.js +1 -1
  215. package/dist/components/kol-table-stateless.js +1 -1
  216. package/dist/components/kol-tabs.js +1 -1
  217. package/dist/components/kol-textarea.js +1 -1
  218. package/dist/components/kol-toast-container.js +1 -1
  219. package/dist/components/kol-toolbar.js +1 -1
  220. package/dist/components/kol-tree-item.js +1 -1
  221. package/dist/components/kol-version.js +1 -1
  222. package/dist/esm/{Heading-NHB1reiQ.js → Heading-DYEtnAIe.js} +3 -3
  223. package/dist/{kolibri/Heading-NHB1reiQ.js.map → esm/Heading-DYEtnAIe.js.map} +1 -1
  224. package/dist/esm/{api-BAEPnyL7.js → api-Bhr2ic7C.js} +12 -12
  225. package/dist/{kolibri/api-BAEPnyL7.js.map → esm/api-Bhr2ic7C.js.map} +1 -1
  226. package/dist/esm/{api-CagcODCX.js → api-DwdE0qU0.js} +8 -8
  227. package/dist/esm/{api-CagcODCX.js.map → api-DwdE0qU0.js.map} +1 -1
  228. package/dist/esm/{app-globals-CwlOH1sO.js → app-globals-DlrwRj26.js} +4 -4
  229. package/dist/esm/{app-globals-CwlOH1sO.js.map → app-globals-DlrwRj26.js.map} +1 -1
  230. package/dist/esm/{base-BFU17cMm.js → base-BwsdAVVP.js} +16 -16
  231. package/dist/{kolibri/base-BFU17cMm.js.map → esm/base-BwsdAVVP.js.map} +1 -1
  232. package/dist/esm/{base-BpKxLJ6r.js → base-CQQKxfxv.js} +4 -4
  233. package/dist/{kolibri/base-BpKxLJ6r.js.map → esm/base-CQQKxfxv.js.map} +1 -1
  234. package/dist/esm/{base-Cm_c8klt.js → base-CdUYL1Y_.js} +5 -5
  235. package/dist/esm/{base-Cm_c8klt.js.map → base-CdUYL1Y_.js.map} +1 -1
  236. package/dist/esm/{base-DitGpYOV.js → base-D5a-Ls-4.js} +4 -4
  237. package/dist/{kolibri/base-DitGpYOV.js.map → esm/base-D5a-Ls-4.js.map} +1 -1
  238. package/dist/esm/{base-web-component-BFCVvyYG.js → base-web-component-6IoFcVM9.js} +7 -7
  239. package/dist/{kolibri/base-web-component-BFCVvyYG.js.map → esm/base-web-component-6IoFcVM9.js.map} +1 -1
  240. package/dist/esm/{base-web-component-6J5sCsnZ.js → base-web-component-CyCs0EpM.js} +5 -5
  241. package/dist/esm/{base-web-component-6J5sCsnZ.js.map → base-web-component-CyCs0EpM.js.map} +1 -1
  242. package/dist/esm/{behavior-CH_2MMuX.js → behavior-COQhqcG7.js} +3 -3
  243. package/dist/{kolibri/behavior-CH_2MMuX.js.map → esm/behavior-COQhqcG7.js.map} +1 -1
  244. package/dist/esm/{component-Dg6TIbeY.js → component-BOFlST8N.js} +5 -5
  245. package/dist/{kolibri/component-Dg6TIbeY.js.map → esm/component-BOFlST8N.js.map} +1 -1
  246. package/dist/esm/{component-BpOMe842.js → component-C4dhT4Ba.js} +3 -3
  247. package/dist/{kolibri/component-BpOMe842.js.map → esm/component-C4dhT4Ba.js.map} +1 -1
  248. package/dist/esm/{component-Ba4gjLBG.js → component-C9cJK7Cf.js} +5 -5
  249. package/dist/esm/{component-Ba4gjLBG.js.map → component-C9cJK7Cf.js.map} +1 -1
  250. package/dist/esm/{component-Do9rjnte.js → component-CBkrKKXd.js} +7 -7
  251. package/dist/esm/{component-Do9rjnte.js.map → component-CBkrKKXd.js.map} +1 -1
  252. package/dist/esm/{component-C5BFsKau.js → component-CHz6TLzY.js} +5 -5
  253. package/dist/esm/{component-C5BFsKau.js.map → component-CHz6TLzY.js.map} +1 -1
  254. package/dist/esm/{component-CBpYh2q-.js → component-CODtL04S.js} +7 -7
  255. package/dist/esm/{component-CBpYh2q-.js.map → component-CODtL04S.js.map} +1 -1
  256. package/dist/esm/{component-C3sXiwbS.js → component-D30YHxgS.js} +3 -3
  257. package/dist/esm/{component-C3sXiwbS.js.map → component-D30YHxgS.js.map} +1 -1
  258. package/dist/esm/{component-DZbJLUju.js → component-DXmRJdLc.js} +4 -4
  259. package/dist/{kolibri/component-DZbJLUju.js.map → esm/component-DXmRJdLc.js.map} +1 -1
  260. package/dist/esm/{component-C_d54ujF.js → component-DoCNds1d.js} +4 -4
  261. package/dist/{kolibri/component-C_d54ujF.js.map → esm/component-DoCNds1d.js.map} +1 -1
  262. package/dist/esm/{component-CvCfEqSE.js → component-fK2EUkFf.js} +4 -4
  263. package/dist/esm/{component-CvCfEqSE.js.map → component-fK2EUkFf.js.map} +1 -1
  264. package/dist/esm/{component-BF8FPuIW.js → component-kDR4_xf0.js} +3 -3
  265. package/dist/esm/{component-BF8FPuIW.js.map → component-kDR4_xf0.js.map} +1 -1
  266. package/dist/esm/{component-DzoBgfR4.js → component-kxFmDVse.js} +3 -3
  267. package/dist/esm/{component-DzoBgfR4.js.map → component-kxFmDVse.js.map} +1 -1
  268. package/dist/esm/{dev.utils-CJMVCYWh.js → dev.utils-DDqySnXB.js} +3 -3
  269. package/dist/{kolibri/dev.utils-CJMVCYWh.js.map → esm/dev.utils-DDqySnXB.js.map} +1 -1
  270. package/dist/esm/{devtools-rRHULXVr.js → devtools-CjmOcVsT.js} +4 -4
  271. package/dist/{kolibri/devtools-rRHULXVr.js.map → esm/devtools-CjmOcVsT.js.map} +1 -1
  272. package/dist/esm/{field-control-DXxCMXvx.js → field-control-Dkru7B-M.js} +8 -8
  273. package/dist/{kolibri/field-control-DXxCMXvx.js.map → esm/field-control-Dkru7B-M.js.map} +1 -1
  274. package/dist/esm/{group-CI4sSgiu.js → group-CXJiUqKv.js} +5 -5
  275. package/dist/esm/{group-CI4sSgiu.js.map → group-CXJiUqKv.js.map} +1 -1
  276. package/dist/esm/{index-DQdQBwMc.js → index-wY4pHWJG.js} +3 -3
  277. package/dist/esm/index-wY4pHWJG.js.map +1 -0
  278. package/dist/esm/{input-CDtJZ2sy.js → input-C_ZwHs-7.js} +5 -5
  279. package/dist/esm/{input-CDtJZ2sy.js.map → input-C_ZwHs-7.js.map} +1 -1
  280. package/dist/esm/{input-container-DROwwh7_.js → input-container-CBl9xcK-.js} +7 -7
  281. package/dist/{kolibri/input-container-DROwwh7_.js.map → esm/input-container-CBl9xcK-.js.map} +1 -1
  282. package/dist/esm/{item-C6p5wW-z.js → item-BacIXvMT.js} +4 -4
  283. package/dist/esm/{item-C6p5wW-z.js.map → item-BacIXvMT.js.map} +1 -1
  284. package/dist/esm/{item-CHP-bw8Q.js → item-DewHrd_f.js} +4 -4
  285. package/dist/{kolibri/item-CHP-bw8Q.js.map → esm/item-DewHrd_f.js.map} +1 -1
  286. package/dist/esm/{item-Cbi_ZY6o.js → item-lEB6GAqe.js} +3 -3
  287. package/dist/esm/{item-Cbi_ZY6o.js.map → item-lEB6GAqe.js.map} +1 -1
  288. package/dist/esm/{item-ZjrNIhfW.js → item-nGiqyOvt.js} +8 -8
  289. package/dist/{kolibri/item-ZjrNIhfW.js.map → esm/item-nGiqyOvt.js.map} +1 -1
  290. package/dist/esm/kol-abbr.entry.js +2 -2
  291. package/dist/esm/kol-accordion.entry.js +7 -7
  292. package/dist/esm/kol-alert.entry.js +11 -11
  293. package/dist/esm/kol-avatar.entry.js +1 -1
  294. package/dist/esm/kol-badge.entry.js +10 -10
  295. package/dist/esm/kol-breadcrumb.entry.js +9 -9
  296. package/dist/esm/kol-button-link.entry.js +10 -10
  297. package/dist/esm/kol-button.entry.js +10 -10
  298. package/dist/esm/kol-card.entry.js +11 -11
  299. package/dist/esm/kol-click-button.entry.js +2 -2
  300. package/dist/esm/kol-combobox.entry.js +18 -18
  301. package/dist/esm/kol-details.entry.js +7 -7
  302. package/dist/esm/kol-dialog.entry.js +13 -13
  303. package/dist/esm/kol-drawer.entry.js +12 -12
  304. package/dist/esm/kol-form.entry.js +12 -12
  305. package/dist/esm/kol-heading.entry.js +1 -1
  306. package/dist/esm/kol-icon.entry.js +3 -3
  307. package/dist/esm/kol-image.entry.js +1 -1
  308. package/dist/esm/kol-input-checkbox.entry.js +17 -17
  309. package/dist/esm/kol-input-color.entry.js +18 -18
  310. package/dist/esm/kol-input-date.entry.js +18 -18
  311. package/dist/esm/kol-input-email.entry.js +20 -20
  312. package/dist/esm/kol-input-file.entry.js +17 -17
  313. package/dist/esm/kol-input-number.entry.js +18 -18
  314. package/dist/esm/kol-input-password.entry.js +20 -20
  315. package/dist/esm/kol-input-radio.entry.js +17 -17
  316. package/dist/esm/kol-input-range.entry.js +18 -18
  317. package/dist/esm/kol-input-text.entry.js +20 -20
  318. package/dist/esm/kol-kolibri.entry.js +2 -2
  319. package/dist/esm/kol-link-button.entry.js +10 -10
  320. package/dist/esm/kol-link.entry.js +10 -10
  321. package/dist/esm/kol-meter.entry.js +1 -1
  322. package/dist/esm/kol-modal.entry.js +13 -13
  323. package/dist/esm/kol-nav.entry.js +13 -13
  324. package/dist/esm/kol-pagination.entry.js +18 -18
  325. package/dist/esm/kol-popover-button.entry.js +11 -11
  326. package/dist/esm/kol-progress.entry.js +1 -1
  327. package/dist/esm/kol-quote.entry.js +1 -1
  328. package/dist/esm/kol-select.entry.js +17 -17
  329. package/dist/esm/kol-single-select.entry.js +18 -18
  330. package/dist/esm/kol-skeleton.entry.js +2 -2
  331. package/dist/esm/kol-skip-nav.entry.js +9 -9
  332. package/dist/esm/kol-spin.entry.js +3 -3
  333. package/dist/esm/kol-split-button.entry.js +12 -12
  334. package/dist/esm/kol-table-stateful.entry.js +25 -25
  335. package/dist/esm/kol-table-stateless.entry.js +19 -19
  336. package/dist/esm/kol-tabs.entry.js +9 -9
  337. package/dist/esm/kol-textarea.entry.js +17 -17
  338. package/dist/esm/kol-toast-container.entry.js +11 -11
  339. package/dist/esm/kol-toolbar.entry.js +11 -11
  340. package/dist/esm/kol-tooltip-wc.entry.js +4 -4
  341. package/dist/esm/kol-tree-item.entry.js +9 -9
  342. package/dist/esm/kol-tree.entry.js +1 -1
  343. package/dist/esm/kol-version.entry.js +9 -9
  344. package/dist/esm/kolibri.js +3 -3
  345. package/dist/esm/loader.js +3 -3
  346. package/dist/esm/{resolve-props-CjBvvXId.js → resolve-props-DrFDeILa.js} +3 -3
  347. package/dist/esm/{resolve-props-CjBvvXId.js.map → resolve-props-DrFDeILa.js.map} +1 -1
  348. package/dist/esm/{scroll-lock-6SV-XFXR.js → scroll-lock-BotxOlMX.js} +3 -3
  349. package/dist/{kolibri/scroll-lock-6SV-XFXR.js.map → esm/scroll-lock-BotxOlMX.js.map} +1 -1
  350. package/dist/esm/{suggestions-BYMmW1aV.js → suggestions-CX5S2xAI.js} +4 -4
  351. package/dist/esm/{suggestions-BYMmW1aV.js.map → suggestions-CX5S2xAI.js.map} +1 -1
  352. package/dist/esm/test-component.entry.js +1 -1
  353. package/dist/esm/{toggle-handler-D-yalcds.js → toggle-handler-VctiltrE.js} +5 -5
  354. package/dist/esm/{toggle-handler-D-yalcds.js.map → toggle-handler-VctiltrE.js.map} +1 -1
  355. package/dist/kolibri/{Heading-NHB1reiQ.js → Heading-DYEtnAIe.js} +2 -2
  356. package/dist/{esm/Heading-NHB1reiQ.js.map → kolibri/Heading-DYEtnAIe.js.map} +1 -1
  357. package/dist/kolibri/{api-BAEPnyL7.js → api-Bhr2ic7C.js} +2 -2
  358. package/dist/{esm/api-BAEPnyL7.js.map → kolibri/api-Bhr2ic7C.js.map} +1 -1
  359. package/dist/kolibri/api-DwdE0qU0.js +5 -0
  360. package/dist/kolibri/{api-CagcODCX.js.map → api-DwdE0qU0.js.map} +1 -1
  361. package/dist/kolibri/app-globals-DlrwRj26.js +5 -0
  362. package/dist/kolibri/{app-globals-CwlOH1sO.js.map → app-globals-DlrwRj26.js.map} +1 -1
  363. package/dist/kolibri/{base-BFU17cMm.js → base-BwsdAVVP.js} +2 -2
  364. package/dist/{esm/base-BFU17cMm.js.map → kolibri/base-BwsdAVVP.js.map} +1 -1
  365. package/dist/kolibri/{base-BpKxLJ6r.js → base-CQQKxfxv.js} +2 -2
  366. package/dist/{esm/base-BpKxLJ6r.js.map → kolibri/base-CQQKxfxv.js.map} +1 -1
  367. package/dist/kolibri/{base-Cm_c8klt.js → base-CdUYL1Y_.js} +2 -2
  368. package/dist/kolibri/{base-Cm_c8klt.js.map → base-CdUYL1Y_.js.map} +1 -1
  369. package/dist/kolibri/{base-DitGpYOV.js → base-D5a-Ls-4.js} +2 -2
  370. package/dist/{esm/base-DitGpYOV.js.map → kolibri/base-D5a-Ls-4.js.map} +1 -1
  371. package/dist/kolibri/{base-web-component-BFCVvyYG.js → base-web-component-6IoFcVM9.js} +2 -2
  372. package/dist/{esm/base-web-component-BFCVvyYG.js.map → kolibri/base-web-component-6IoFcVM9.js.map} +1 -1
  373. package/dist/kolibri/{base-web-component-6J5sCsnZ.js → base-web-component-CyCs0EpM.js} +2 -2
  374. package/dist/kolibri/{base-web-component-6J5sCsnZ.js.map → base-web-component-CyCs0EpM.js.map} +1 -1
  375. package/dist/kolibri/{behavior-CH_2MMuX.js → behavior-COQhqcG7.js} +2 -2
  376. package/dist/{esm/behavior-CH_2MMuX.js.map → kolibri/behavior-COQhqcG7.js.map} +1 -1
  377. package/dist/kolibri/{component-Dg6TIbeY.js → component-BOFlST8N.js} +2 -2
  378. package/dist/{esm/component-Dg6TIbeY.js.map → kolibri/component-BOFlST8N.js.map} +1 -1
  379. package/dist/kolibri/{component-BpOMe842.js → component-C4dhT4Ba.js} +2 -2
  380. package/dist/{esm/component-BpOMe842.js.map → kolibri/component-C4dhT4Ba.js.map} +1 -1
  381. package/dist/kolibri/component-C9cJK7Cf.js +5 -0
  382. package/dist/kolibri/{component-Ba4gjLBG.js.map → component-C9cJK7Cf.js.map} +1 -1
  383. package/dist/kolibri/{component-Do9rjnte.js → component-CBkrKKXd.js} +2 -2
  384. package/dist/kolibri/{component-Do9rjnte.js.map → component-CBkrKKXd.js.map} +1 -1
  385. package/dist/kolibri/component-CHz6TLzY.js +5 -0
  386. package/dist/kolibri/{component-C5BFsKau.js.map → component-CHz6TLzY.js.map} +1 -1
  387. package/dist/kolibri/component-CODtL04S.js +5 -0
  388. package/dist/kolibri/{component-CBpYh2q-.js.map → component-CODtL04S.js.map} +1 -1
  389. package/dist/kolibri/{component-C3sXiwbS.js → component-D30YHxgS.js} +2 -2
  390. package/dist/kolibri/{component-C3sXiwbS.js.map → component-D30YHxgS.js.map} +1 -1
  391. package/dist/kolibri/{component-DZbJLUju.js → component-DXmRJdLc.js} +2 -2
  392. package/dist/{esm/component-DZbJLUju.js.map → kolibri/component-DXmRJdLc.js.map} +1 -1
  393. package/dist/kolibri/{component-C_d54ujF.js → component-DoCNds1d.js} +2 -2
  394. package/dist/{esm/component-C_d54ujF.js.map → kolibri/component-DoCNds1d.js.map} +1 -1
  395. package/dist/kolibri/{component-CvCfEqSE.js → component-fK2EUkFf.js} +2 -2
  396. package/dist/kolibri/{component-CvCfEqSE.js.map → component-fK2EUkFf.js.map} +1 -1
  397. package/dist/kolibri/{component-BF8FPuIW.js → component-kDR4_xf0.js} +2 -2
  398. package/dist/kolibri/{component-BF8FPuIW.js.map → component-kDR4_xf0.js.map} +1 -1
  399. package/dist/kolibri/component-kxFmDVse.js +5 -0
  400. package/dist/kolibri/{component-DzoBgfR4.js.map → component-kxFmDVse.js.map} +1 -1
  401. package/dist/kolibri/{dev.utils-CJMVCYWh.js → dev.utils-DDqySnXB.js} +2 -2
  402. package/dist/{esm/dev.utils-CJMVCYWh.js.map → kolibri/dev.utils-DDqySnXB.js.map} +1 -1
  403. package/dist/kolibri/{devtools-rRHULXVr.js → devtools-CjmOcVsT.js} +2 -2
  404. package/dist/{esm/devtools-rRHULXVr.js.map → kolibri/devtools-CjmOcVsT.js.map} +1 -1
  405. package/dist/kolibri/field-control-Dkru7B-M.js +5 -0
  406. package/dist/{esm/field-control-DXxCMXvx.js.map → kolibri/field-control-Dkru7B-M.js.map} +1 -1
  407. package/dist/kolibri/{group-CI4sSgiu.js → group-CXJiUqKv.js} +2 -2
  408. package/dist/kolibri/{group-CI4sSgiu.js.map → group-CXJiUqKv.js.map} +1 -1
  409. package/dist/kolibri/{index-DQdQBwMc.js → index-wY4pHWJG.js} +2 -2
  410. package/dist/kolibri/index-wY4pHWJG.js.map +1 -0
  411. package/dist/kolibri/{input-CDtJZ2sy.js → input-C_ZwHs-7.js} +2 -2
  412. package/dist/kolibri/{input-CDtJZ2sy.js.map → input-C_ZwHs-7.js.map} +1 -1
  413. package/dist/kolibri/{input-container-DROwwh7_.js → input-container-CBl9xcK-.js} +2 -2
  414. package/dist/{esm/input-container-DROwwh7_.js.map → kolibri/input-container-CBl9xcK-.js.map} +1 -1
  415. package/dist/kolibri/item-BacIXvMT.js +5 -0
  416. package/dist/kolibri/{item-C6p5wW-z.js.map → item-BacIXvMT.js.map} +1 -1
  417. package/dist/kolibri/item-DewHrd_f.js +5 -0
  418. package/dist/{esm/item-CHP-bw8Q.js.map → kolibri/item-DewHrd_f.js.map} +1 -1
  419. package/dist/kolibri/{item-Cbi_ZY6o.js → item-lEB6GAqe.js} +2 -2
  420. package/dist/kolibri/{item-Cbi_ZY6o.js.map → item-lEB6GAqe.js.map} +1 -1
  421. package/dist/kolibri/{item-ZjrNIhfW.js → item-nGiqyOvt.js} +2 -2
  422. package/dist/{esm/item-ZjrNIhfW.js.map → kolibri/item-nGiqyOvt.js.map} +1 -1
  423. package/dist/kolibri/kol-abbr.entry.js +1 -1
  424. package/dist/kolibri/kol-accordion.entry.js +1 -1
  425. package/dist/kolibri/kol-alert.entry.js +1 -1
  426. package/dist/kolibri/kol-avatar.entry.js +1 -1
  427. package/dist/kolibri/kol-badge.entry.js +1 -1
  428. package/dist/kolibri/kol-breadcrumb.entry.js +1 -1
  429. package/dist/kolibri/kol-button-link.entry.js +1 -1
  430. package/dist/kolibri/kol-button.entry.js +1 -1
  431. package/dist/kolibri/kol-card.entry.js +1 -1
  432. package/dist/kolibri/kol-click-button.entry.js +1 -1
  433. package/dist/kolibri/kol-combobox.entry.js +1 -1
  434. package/dist/kolibri/kol-details.entry.js +1 -1
  435. package/dist/kolibri/kol-dialog.entry.js +1 -1
  436. package/dist/kolibri/kol-drawer.entry.js +1 -1
  437. package/dist/kolibri/kol-form.entry.js +1 -1
  438. package/dist/kolibri/kol-heading.entry.js +1 -1
  439. package/dist/kolibri/kol-icon.entry.js +1 -1
  440. package/dist/kolibri/kol-image.entry.js +1 -1
  441. package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
  442. package/dist/kolibri/kol-input-color.entry.js +1 -1
  443. package/dist/kolibri/kol-input-date.entry.js +1 -1
  444. package/dist/kolibri/kol-input-email.entry.js +1 -1
  445. package/dist/kolibri/kol-input-file.entry.js +1 -1
  446. package/dist/kolibri/kol-input-number.entry.js +1 -1
  447. package/dist/kolibri/kol-input-password.entry.js +1 -1
  448. package/dist/kolibri/kol-input-radio.entry.js +1 -1
  449. package/dist/kolibri/kol-input-range.entry.js +1 -1
  450. package/dist/kolibri/kol-input-text.entry.js +1 -1
  451. package/dist/kolibri/kol-kolibri.entry.js +1 -1
  452. package/dist/kolibri/kol-link-button.entry.js +1 -1
  453. package/dist/kolibri/kol-link.entry.js +1 -1
  454. package/dist/kolibri/kol-meter.entry.js +1 -1
  455. package/dist/kolibri/kol-modal.entry.js +1 -1
  456. package/dist/kolibri/kol-nav.entry.js +1 -1
  457. package/dist/kolibri/kol-pagination.entry.js +1 -1
  458. package/dist/kolibri/kol-popover-button.entry.js +1 -1
  459. package/dist/kolibri/kol-progress.entry.js +1 -1
  460. package/dist/kolibri/kol-quote.entry.js +1 -1
  461. package/dist/kolibri/kol-select.entry.js +1 -1
  462. package/dist/kolibri/kol-single-select.entry.js +1 -1
  463. package/dist/kolibri/kol-skeleton.entry.js +1 -1
  464. package/dist/kolibri/kol-skip-nav.entry.js +1 -1
  465. package/dist/kolibri/kol-spin.entry.js +1 -1
  466. package/dist/kolibri/kol-split-button.entry.js +1 -1
  467. package/dist/kolibri/kol-table-stateful.entry.js +1 -1
  468. package/dist/kolibri/kol-table-stateless.entry.js +1 -1
  469. package/dist/kolibri/kol-tabs.entry.js +1 -1
  470. package/dist/kolibri/kol-textarea.entry.js +1 -1
  471. package/dist/kolibri/kol-toast-container.entry.js +1 -1
  472. package/dist/kolibri/kol-toolbar.entry.js +1 -1
  473. package/dist/kolibri/kol-tooltip-wc.entry.js +1 -1
  474. package/dist/kolibri/kol-tree-item.entry.js +1 -1
  475. package/dist/kolibri/kol-tree.entry.js +1 -1
  476. package/dist/kolibri/kol-version.entry.js +1 -1
  477. package/dist/kolibri/kolibri.esm.js +1 -1
  478. package/dist/kolibri/{resolve-props-CjBvvXId.js → resolve-props-DrFDeILa.js} +2 -2
  479. package/dist/kolibri/{resolve-props-CjBvvXId.js.map → resolve-props-DrFDeILa.js.map} +1 -1
  480. package/dist/kolibri/{scroll-lock-6SV-XFXR.js → scroll-lock-BotxOlMX.js} +2 -2
  481. package/dist/{esm/scroll-lock-6SV-XFXR.js.map → kolibri/scroll-lock-BotxOlMX.js.map} +1 -1
  482. package/dist/kolibri/{suggestions-BYMmW1aV.js → suggestions-CX5S2xAI.js} +2 -2
  483. package/dist/kolibri/{suggestions-BYMmW1aV.js.map → suggestions-CX5S2xAI.js.map} +1 -1
  484. package/dist/kolibri/test-component.entry.js +1 -1
  485. package/dist/kolibri/{toggle-handler-D-yalcds.js → toggle-handler-VctiltrE.js} +2 -2
  486. package/dist/kolibri/{toggle-handler-D-yalcds.js.map → toggle-handler-VctiltrE.js.map} +1 -1
  487. package/package.json +2 -2
  488. package/dist/cjs/index-qcrGfEY6.js.map +0 -1
  489. package/dist/esm/index-DQdQBwMc.js.map +0 -1
  490. package/dist/kolibri/api-CagcODCX.js +0 -5
  491. package/dist/kolibri/app-globals-CwlOH1sO.js +0 -5
  492. package/dist/kolibri/component-Ba4gjLBG.js +0 -5
  493. package/dist/kolibri/component-C5BFsKau.js +0 -5
  494. package/dist/kolibri/component-CBpYh2q-.js +0 -5
  495. package/dist/kolibri/component-DzoBgfR4.js +0 -5
  496. package/dist/kolibri/field-control-DXxCMXvx.js +0 -5
  497. package/dist/kolibri/index-DQdQBwMc.js.map +0 -1
  498. package/dist/kolibri/item-C6p5wW-z.js +0 -5
  499. package/dist/kolibri/item-CHP-bw8Q.js +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"behavior-C-BdOoSN.js","sources":["src/internal/props/has-counter.ts","src/internal/props/max-length.ts","src/internal/props/max-length-behavior.ts","src/internal/functional-components/counter/api.tsx","src/internal/functional-components/counter/texts.ts","src/internal/functional-components/counter/behavior.ts"],"sourcesContent":["import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Has counter prop for text-based form fields\n *\n * Description:\n * Shows the character counter below the control.\n */\nexport type HasCounterProp = SimpleProp<'hasCounter', boolean>;\nexport const hasCounterProp = createPropDefinition<HasCounterProp>('hasCounter', false, normalizeBoolean);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumber } from './helpers/normalizers';\n\n/**\n * Max length prop for text-based form fields\n *\n * Description:\n * The maximum number of characters. With the max length behavior `'hard'` it becomes the native\n * `maxlength` attribute, with `'soft'` it is only announced by the character counter.\n *\n * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength\n */\nexport type MaxLengthProp = SimpleProp<'maxLength', number>;\n// The default is `undefined`: without a maximum there is no limit and no character limit hint. The\n// validation also runs on the default, so it accepts `undefined`.\nexport const maxLengthProp = createPropDefinition<MaxLengthProp>(\n\t'maxLength',\n\tundefined as unknown as number,\n\tnormalizeNumber,\n\t(value) => value === undefined || value >= 0,\n);\n","import type { MaxLengthBehaviorPropType } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { isEnumOption, normalizeString } from './helpers/normalizers';\n\nconst MAX_LENGTH_BEHAVIOR_OPTIONS: readonly MaxLengthBehaviorPropType[] = ['hard', 'soft'];\n\n/**\n * Max length behavior prop for text-based form fields\n *\n * Description:\n * `'hard'` prevents longer input through the native `maxlength` attribute, `'soft'` allows it and\n * lets the character counter announce the exceeded limit.\n */\nexport type MaxLengthBehaviorProp = SimpleProp<'maxLengthBehavior', MaxLengthBehaviorPropType>;\n\nfunction normalizeMaxLengthBehavior(value: unknown): MaxLengthBehaviorPropType {\n\tconst str = normalizeString(value);\n\tif (isEnumOption(str, MAX_LENGTH_BEHAVIOR_OPTIONS)) {\n\t\treturn str;\n\t}\n\tthrow new Error(`Invalid max length behavior: ${str}`);\n}\n\nexport const maxLengthBehaviorProp = createPropDefinition<MaxLengthBehaviorProp>('maxLengthBehavior', 'hard', normalizeMaxLengthBehavior);\n","import { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\nexport const counterPropsConfig = {\n\toptional: [hasCounterProp, maxLengthProp, maxLengthBehaviorProp],\n} as const satisfies PropsConfigShape;\n\nexport type CounterApi = ApiFromConfig<typeof counterPropsConfig>;\n","import { translate } from '../../../i18n';\nimport type { MaxLengthBehaviorPropType } from '../../../schema';\n\nexport const getCounterVisualText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterAriaText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max-aria', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterMaxText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (maxLengthBehavior === 'hard' && typeof maxLength === 'number' && currentLength >= maxLength) {\n\t\treturn translate('kol-character-counter-max-aria');\n\t}\n\treturn '';\n};\n","import type { MaxLengthBehaviorPropType } from '../../../schema';\nimport { createRelatedUniqueId } from '../../../utils/dev.utils';\nimport { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport { BaseBehavior } from '../base-behavior';\nimport type { FormFieldFCProps } from '../form-field/component';\nimport type { BehaviorInterface, ResolvedInputProps, StateAccess } from '../generic-types';\nimport type { CounterApi } from './api';\nimport { counterPropsConfig } from './api';\nimport { getCounterAriaText, getCounterMaxText, getCounterVisualText } from './texts';\n\n/** A printable single character without Ctrl, Meta or Alt, i.e. a key press that inserts a character. */\nconst isCharacterInputKey = (event: KeyboardEvent): boolean => event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n\n/** Invisible no-break space that makes an identical live region text differ, so it is announced again. */\nconst REANNOUNCE_MARKER = ' ';\n\nconst ARIA_DEBOUNCE_MS = 1000;\n\ntype CounterLimit = {\n\tmaxLength?: number;\n\tmaxLengthBehavior: MaxLengthBehaviorPropType;\n};\n\n/**\n * Character counter and character limit of a text field.\n *\n * It owns `hasCounter`, `maxLength` and `maxLengthBehavior` and writes the texts of the two counter\n * spans of `FormFieldFC` directly into the DOM, without a re-render: the visible span immediately,\n * the `aria-live` span debounced, so a screen reader does not announce every key stroke.\n */\nexport class CounterBehavior extends BaseBehavior<CounterApi> implements BehaviorInterface<CounterApi> {\n\tprivate visualSpan?: HTMLSpanElement;\n\tprivate ariaSpan?: HTMLSpanElement;\n\tprivate debounceTimer?: ReturnType<typeof setTimeout>;\n\tprivate reannounceToggle = false;\n\n\tpublic constructor(stateAccess: StateAccess<CounterApi>) {\n\t\tsuper(stateAccess, counterPropsConfig);\n\t}\n\n\tpublic componentWillLoad(props: ResolvedInputProps<CounterApi>): void {\n\t\tthis.watchHasCounter(props.hasCounter);\n\t\tthis.watchMaxLength(props.maxLength);\n\t\tthis.watchMaxLengthBehavior(props.maxLengthBehavior);\n\t}\n\n\tpublic watchHasCounter(value?: boolean): void {\n\t\thasCounterProp.apply(value, (v) => this.setRenderProp('hasCounter', v));\n\t}\n\n\tpublic watchMaxLength(value?: number): void {\n\t\tmaxLengthProp.apply(value, (v) => this.setRenderProp('maxLength', v));\n\t}\n\n\tpublic watchMaxLengthBehavior(value?: MaxLengthBehaviorPropType): void {\n\t\tmaxLengthBehaviorProp.apply(value, (v) => this.setRenderProp('maxLengthBehavior', v));\n\t}\n\n\tpublic readonly setVisualRef = (el?: HTMLSpanElement): void => {\n\t\tthis.visualSpan = el;\n\t};\n\n\tpublic readonly setAriaRef = (el?: HTMLSpanElement): void => {\n\t\tthis.ariaSpan = el;\n\t};\n\n\tpublic hasCounter(): boolean {\n\t\treturn this.getRenderProp('hasCounter') === true;\n\t}\n\n\t/** A maximum with the behavior `'soft'`: the counter announces the exceeded limit instead of `maxlength` preventing it. */\n\tpublic hasSoftLimit(): boolean {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn typeof maxLength === 'number' && maxLengthBehavior === 'soft';\n\t}\n\n\t/** The native `maxlength` attribute: only a hard limit prevents longer input. */\n\tpublic getMaxLengthAttribute(): number | undefined {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn maxLengthBehavior === 'hard' ? maxLength : undefined;\n\t}\n\n\t/** The `counter` prop of `FormFieldFC`; the counter is only rendered with `hasCounter`. */\n\tpublic getCounterProps(): FormFieldFCProps['counter'] {\n\t\tif (!this.hasCounter()) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn { maxLength, maxLengthBehavior, visualRef: this.setVisualRef, ariaRef: this.setAriaRef };\n\t}\n\n\t/**\n\t * The ID of the hidden character limit hint, which the control references in `aria-describedby`.\n\t * The hint only exists for a maximum without counter, because the counter announces the maximum itself.\n\t */\n\tpublic getCharacterLimitHintId(id: string): string | undefined {\n\t\treturn typeof this.getRenderProp('maxLength') === 'number' && !this.hasCounter() ? createRelatedUniqueId(id, 'character-limit-hint') : undefined;\n\t}\n\n\t/** Updates the visible span immediately and the `aria-live` span debounced. */\n\tpublic update(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit), ARIA_DEBOUNCE_MS);\n\t}\n\n\t/** Updates both spans without debounce, e.g. after the first render or a programmatic change of the limit. */\n\tpublic updateImmediate(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.updateAria(currentLength, limit);\n\t}\n\n\t/**\n\t * Announces the reached hard limit again on every further typing attempt. `maxlength` blocks the\n\t * input without an `input` event, so the live region would otherwise stay silent.\n\t */\n\tpublic readonly handleKeyDown = (event: KeyboardEvent, currentLength: number): void => {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\tif (maxLengthBehavior !== 'hard' || typeof maxLength !== 'number' || currentLength < maxLength) return;\n\t\tif (!isCharacterInputKey(event)) return;\n\t\tthis.retriggerAria(currentLength);\n\t};\n\n\t/** Announces the `aria-live` span again, debounced, even if its text did not change. */\n\tpublic retriggerAria(currentLength: number): void {\n\t\tif (!this.ariaSpan) return;\n\t\tconst limit = this.getLimit();\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit, true), ARIA_DEBOUNCE_MS);\n\t}\n\n\tpublic destroy(): void {\n\t\tclearTimeout(this.debounceTimer);\n\t}\n\n\tprivate getLimit(): CounterLimit {\n\t\treturn { maxLength: this.getRenderProp('maxLength'), maxLengthBehavior: this.getRenderProp('maxLengthBehavior') };\n\t}\n\n\tprivate updateVisual(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit): void {\n\t\tif (!this.visualSpan) return;\n\t\tthis.visualSpan.innerText = getCounterVisualText(maxLengthBehavior, maxLength, currentLength);\n\t\tthis.visualSpan.classList.toggle(\n\t\t\t'kol-form-field__counter--exceeded',\n\t\t\tmaxLengthBehavior === 'soft' && typeof maxLength === 'number' && currentLength > maxLength,\n\t\t);\n\t}\n\n\tprivate updateAria(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit, forceReannounce = false): void {\n\t\tif (!this.ariaSpan) return;\n\t\tlet text = [getCounterAriaText(maxLengthBehavior, maxLength, currentLength), getCounterMaxText(maxLengthBehavior, maxLength, currentLength)]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tif (forceReannounce) {\n\t\t\t// `aria-live` only announces a changed text. A repeated attempt produces the same text, so a\n\t\t\t// no-break space is appended on every other call to make it differ.\n\t\t\tthis.reannounceToggle = !this.reannounceToggle;\n\t\t\tif (this.reannounceToggle) {\n\t\t\t\ttext += REANNOUNCE_MARKER;\n\t\t\t}\n\t\t}\n\n\t\tthis.ariaSpan.innerText = text;\n\t}\n}\n"],"names":["createPropDefinition","normalizeBoolean","normalizeNumber","normalizeString","isEnumOption","translate","BaseBehavior","createRelatedUniqueId"],"mappings":"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"}
1
+ {"version":3,"file":"behavior-CddJDVDz.js","sources":["src/internal/props/has-counter.ts","src/internal/props/max-length.ts","src/internal/props/max-length-behavior.ts","src/internal/functional-components/counter/api.tsx","src/internal/functional-components/counter/texts.ts","src/internal/functional-components/counter/behavior.ts"],"sourcesContent":["import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Has counter prop for text-based form fields\n *\n * Description:\n * Shows the character counter below the control.\n */\nexport type HasCounterProp = SimpleProp<'hasCounter', boolean>;\nexport const hasCounterProp = createPropDefinition<HasCounterProp>('hasCounter', false, normalizeBoolean);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumber } from './helpers/normalizers';\n\n/**\n * Max length prop for text-based form fields\n *\n * Description:\n * The maximum number of characters. With the max length behavior `'hard'` it becomes the native\n * `maxlength` attribute, with `'soft'` it is only announced by the character counter.\n *\n * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength\n */\nexport type MaxLengthProp = SimpleProp<'maxLength', number>;\n// The default is `undefined`: without a maximum there is no limit and no character limit hint. The\n// validation also runs on the default, so it accepts `undefined`.\nexport const maxLengthProp = createPropDefinition<MaxLengthProp>(\n\t'maxLength',\n\tundefined as unknown as number,\n\tnormalizeNumber,\n\t(value) => value === undefined || value >= 0,\n);\n","import type { MaxLengthBehaviorPropType } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { isEnumOption, normalizeString } from './helpers/normalizers';\n\nconst MAX_LENGTH_BEHAVIOR_OPTIONS: readonly MaxLengthBehaviorPropType[] = ['hard', 'soft'];\n\n/**\n * Max length behavior prop for text-based form fields\n *\n * Description:\n * `'hard'` prevents longer input through the native `maxlength` attribute, `'soft'` allows it and\n * lets the character counter announce the exceeded limit.\n */\nexport type MaxLengthBehaviorProp = SimpleProp<'maxLengthBehavior', MaxLengthBehaviorPropType>;\n\nfunction normalizeMaxLengthBehavior(value: unknown): MaxLengthBehaviorPropType {\n\tconst str = normalizeString(value);\n\tif (isEnumOption(str, MAX_LENGTH_BEHAVIOR_OPTIONS)) {\n\t\treturn str;\n\t}\n\tthrow new Error(`Invalid max length behavior: ${str}`);\n}\n\nexport const maxLengthBehaviorProp = createPropDefinition<MaxLengthBehaviorProp>('maxLengthBehavior', 'hard', normalizeMaxLengthBehavior);\n","import { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\nexport const counterPropsConfig = {\n\toptional: [hasCounterProp, maxLengthProp, maxLengthBehaviorProp],\n} as const satisfies PropsConfigShape;\n\nexport type CounterApi = ApiFromConfig<typeof counterPropsConfig>;\n","import { translate } from '../../../i18n';\nimport type { MaxLengthBehaviorPropType } from '../../../schema';\n\nexport const getCounterVisualText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterAriaText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max-aria', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterMaxText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (maxLengthBehavior === 'hard' && typeof maxLength === 'number' && currentLength >= maxLength) {\n\t\treturn translate('kol-character-counter-max-aria');\n\t}\n\treturn '';\n};\n","import type { MaxLengthBehaviorPropType } from '../../../schema';\nimport { createRelatedUniqueId } from '../../../utils/dev.utils';\nimport { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport { BaseBehavior } from '../base-behavior';\nimport type { FormFieldFCProps } from '../form-field/component';\nimport type { BehaviorInterface, ResolvedInputProps, StateAccess } from '../generic-types';\nimport type { CounterApi } from './api';\nimport { counterPropsConfig } from './api';\nimport { getCounterAriaText, getCounterMaxText, getCounterVisualText } from './texts';\n\n/** A printable single character without Ctrl, Meta or Alt, i.e. a key press that inserts a character. */\nconst isCharacterInputKey = (event: KeyboardEvent): boolean => event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n\n/** Invisible no-break space that makes an identical live region text differ, so it is announced again. */\nconst REANNOUNCE_MARKER = ' ';\n\nconst ARIA_DEBOUNCE_MS = 1000;\n\ntype CounterLimit = {\n\tmaxLength?: number;\n\tmaxLengthBehavior: MaxLengthBehaviorPropType;\n};\n\n/**\n * Character counter and character limit of a text field.\n *\n * It owns `hasCounter`, `maxLength` and `maxLengthBehavior` and writes the texts of the two counter\n * spans of `FormFieldFC` directly into the DOM, without a re-render: the visible span immediately,\n * the `aria-live` span debounced, so a screen reader does not announce every key stroke.\n */\nexport class CounterBehavior extends BaseBehavior<CounterApi> implements BehaviorInterface<CounterApi> {\n\tprivate visualSpan?: HTMLSpanElement;\n\tprivate ariaSpan?: HTMLSpanElement;\n\tprivate debounceTimer?: ReturnType<typeof setTimeout>;\n\tprivate reannounceToggle = false;\n\n\tpublic constructor(stateAccess: StateAccess<CounterApi>) {\n\t\tsuper(stateAccess, counterPropsConfig);\n\t}\n\n\tpublic componentWillLoad(props: ResolvedInputProps<CounterApi>): void {\n\t\tthis.watchHasCounter(props.hasCounter);\n\t\tthis.watchMaxLength(props.maxLength);\n\t\tthis.watchMaxLengthBehavior(props.maxLengthBehavior);\n\t}\n\n\tpublic watchHasCounter(value?: boolean): void {\n\t\thasCounterProp.apply(value, (v) => this.setRenderProp('hasCounter', v));\n\t}\n\n\tpublic watchMaxLength(value?: number): void {\n\t\tmaxLengthProp.apply(value, (v) => this.setRenderProp('maxLength', v));\n\t}\n\n\tpublic watchMaxLengthBehavior(value?: MaxLengthBehaviorPropType): void {\n\t\tmaxLengthBehaviorProp.apply(value, (v) => this.setRenderProp('maxLengthBehavior', v));\n\t}\n\n\tpublic readonly setVisualRef = (el?: HTMLSpanElement): void => {\n\t\tthis.visualSpan = el;\n\t};\n\n\tpublic readonly setAriaRef = (el?: HTMLSpanElement): void => {\n\t\tthis.ariaSpan = el;\n\t};\n\n\tpublic hasCounter(): boolean {\n\t\treturn this.getRenderProp('hasCounter') === true;\n\t}\n\n\t/** A maximum with the behavior `'soft'`: the counter announces the exceeded limit instead of `maxlength` preventing it. */\n\tpublic hasSoftLimit(): boolean {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn typeof maxLength === 'number' && maxLengthBehavior === 'soft';\n\t}\n\n\t/** The native `maxlength` attribute: only a hard limit prevents longer input. */\n\tpublic getMaxLengthAttribute(): number | undefined {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn maxLengthBehavior === 'hard' ? maxLength : undefined;\n\t}\n\n\t/** The `counter` prop of `FormFieldFC`; the counter is only rendered with `hasCounter`. */\n\tpublic getCounterProps(): FormFieldFCProps['counter'] {\n\t\tif (!this.hasCounter()) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn { maxLength, maxLengthBehavior, visualRef: this.setVisualRef, ariaRef: this.setAriaRef };\n\t}\n\n\t/**\n\t * The ID of the hidden character limit hint, which the control references in `aria-describedby`.\n\t * The hint only exists for a maximum without counter, because the counter announces the maximum itself.\n\t */\n\tpublic getCharacterLimitHintId(id: string): string | undefined {\n\t\treturn typeof this.getRenderProp('maxLength') === 'number' && !this.hasCounter() ? createRelatedUniqueId(id, 'character-limit-hint') : undefined;\n\t}\n\n\t/** Updates the visible span immediately and the `aria-live` span debounced. */\n\tpublic update(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit), ARIA_DEBOUNCE_MS);\n\t}\n\n\t/** Updates both spans without debounce, e.g. after the first render or a programmatic change of the limit. */\n\tpublic updateImmediate(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.updateAria(currentLength, limit);\n\t}\n\n\t/**\n\t * Announces the reached hard limit again on every further typing attempt. `maxlength` blocks the\n\t * input without an `input` event, so the live region would otherwise stay silent.\n\t */\n\tpublic readonly handleKeyDown = (event: KeyboardEvent, currentLength: number): void => {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\tif (maxLengthBehavior !== 'hard' || typeof maxLength !== 'number' || currentLength < maxLength) return;\n\t\tif (!isCharacterInputKey(event)) return;\n\t\tthis.retriggerAria(currentLength);\n\t};\n\n\t/** Announces the `aria-live` span again, debounced, even if its text did not change. */\n\tpublic retriggerAria(currentLength: number): void {\n\t\tif (!this.ariaSpan) return;\n\t\tconst limit = this.getLimit();\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit, true), ARIA_DEBOUNCE_MS);\n\t}\n\n\tpublic destroy(): void {\n\t\tclearTimeout(this.debounceTimer);\n\t}\n\n\tprivate getLimit(): CounterLimit {\n\t\treturn { maxLength: this.getRenderProp('maxLength'), maxLengthBehavior: this.getRenderProp('maxLengthBehavior') };\n\t}\n\n\tprivate updateVisual(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit): void {\n\t\tif (!this.visualSpan) return;\n\t\tthis.visualSpan.innerText = getCounterVisualText(maxLengthBehavior, maxLength, currentLength);\n\t\tthis.visualSpan.classList.toggle(\n\t\t\t'kol-form-field__counter--exceeded',\n\t\t\tmaxLengthBehavior === 'soft' && typeof maxLength === 'number' && currentLength > maxLength,\n\t\t);\n\t}\n\n\tprivate updateAria(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit, forceReannounce = false): void {\n\t\tif (!this.ariaSpan) return;\n\t\tlet text = [getCounterAriaText(maxLengthBehavior, maxLength, currentLength), getCounterMaxText(maxLengthBehavior, maxLength, currentLength)]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tif (forceReannounce) {\n\t\t\t// `aria-live` only announces a changed text. A repeated attempt produces the same text, so a\n\t\t\t// no-break space is appended on every other call to make it differ.\n\t\t\tthis.reannounceToggle = !this.reannounceToggle;\n\t\t\tif (this.reannounceToggle) {\n\t\t\t\ttext += REANNOUNCE_MARKER;\n\t\t\t}\n\t\t}\n\n\t\tthis.ariaSpan.innerText = text;\n\t}\n}\n"],"names":["createPropDefinition","normalizeBoolean","normalizeNumber","normalizeString","isEnumOption","translate","BaseBehavior","createRelatedUniqueId"],"mappings":"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"}
@@ -5,11 +5,11 @@
5
5
 
6
6
  var i18n = require('./i18n-UGaB-Dwg.js');
7
7
  var resolveProps = require('./resolve-props-DciidH7w.js');
8
- var index = require('./index-qcrGfEY6.js');
9
- var Heading = require('./Heading-d30Feghg.js');
8
+ var index = require('./index-CjTDipy9.js');
9
+ var Heading = require('./Heading-CFe7VL6f.js');
10
10
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
11
11
  var clsx = require('./clsx-Bm_HQUnh.js');
12
- var component = require('./component-BIz_gAas.js');
12
+ var component = require('./component-B1t_MP4V.js');
13
13
 
14
14
  function resolveCardCloseButtonProps(host) {
15
15
  return resolveProps.resolveButtonProps({
@@ -34,6 +34,6 @@ const CardFC = (props, children) => {
34
34
 
35
35
  exports.CardFC = CardFC;
36
36
  exports.resolveCardCloseButtonProps = resolveCardCloseButtonProps;
37
- //# sourceMappingURL=component-D2kI8uwF.js.map
37
+ //# sourceMappingURL=component-8M23HGR8.js.map
38
38
 
39
- //# sourceMappingURL=component-D2kI8uwF.js.map
39
+ //# sourceMappingURL=component-8M23HGR8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-D2kI8uwF.js","sources":["src/internal/functional-components/card/close-button.ts","src/internal/functional-components/card/component.tsx"],"sourcesContent":["import { translate } from '../../../i18n';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport { resolveButtonProps } from '../button/resolve-props';\n\n/**\n * Normalizes the card's close button into the render props `ButtonFC` expects.\n *\n * The configuration is fixed — an icon-only button whose label lives in its tooltip — so every\n * component rendering `CardFC` resolves it the same way. It is a function rather than a constant\n * because `translate` must run after the i18n bundle is in place.\n *\n * Props only: the tooltip behavior, the click handler and the button ref belong to the composing\n * web component.\n *\n * @param host - The host element, used for the per-theme `buttonVariantDefault` feature flag.\n */\nexport function resolveCardCloseButtonProps(host?: HTMLElement): ResolvedButtonProps {\n\treturn resolveButtonProps(\n\t\t{\n\t\t\t_hideLabel: true,\n\t\t\t_icons: { left: { icon: 'kolicon-cross' } },\n\t\t\t_label: translate('kol-close'),\n\t\t\t_tooltipAlign: 'left',\n\t\t},\n\t\thost,\n\t);\n}\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport KolHeadingFc from '../../../functional-components/Heading/Heading';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { ButtonFC } from '../button/component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { CardApi } from './api';\n\nconst cardBem = bem.forBlock('kol-card');\nconst BEM_CLASS_CARD__CLOSE_BUTTON = cardBem('close-button');\nconst BEM_CLASS_CARD__CONTENT = cardBem('content');\nconst BEM_CLASS_CARD__HEADER = cardBem('header');\nconst BEM_CLASS_CARD__LINK = cardBem('link');\n\n/**\n * The close button reports only its click. `ButtonFC` requires a handler per callback, and the\n * card's `_on` callbacks describe its heading link, not this button.\n */\nconst NOOP = (): void => {};\n\n/** The heading renders either on its own or wrapped in the link, so it lives in its own FC. */\nconst CardHeadingFC: FC<Pick<FunctionalComponentProps<CardApi>, 'headingId' | 'label' | 'level'>> = ({ headingId, label, level }) => (\n\t<KolHeadingFc class={BEM_CLASS_CARD__HEADER} id={headingId} level={level}>\n\t\t{label}\n\t</KolHeadingFc>\n);\n\nexport type CardFCProps = FunctionalComponentProps<CardApi> & {\n\t/** The close button's normalized `ButtonFC` render props, resolved once by the web component. */\n\tcloseButtonProps: ResolvedButtonProps;\n};\n\n/**\n * Root from `bem.forBlock('kol-card')`, not `BemRootNodeFC`: the card's root is the semantic\n * `<article>` that carries `aria-labelledby`, and `BemRootNodeFC` always renders a `<div>`.\n *\n * The content area renders `children`, not a `<slot />` of its own: Stencil derives its light-DOM\n * slot relocation from the JSX in the element file, so the `<slot />` has to be written there.\n *\n * `.kol-close-button` is a theme hook shared with the alert, and every theme addresses it as an\n * ancestor of `.kol-button`. It therefore stays on a wrapper around `ButtonFC` rather than merging\n * into the button's own root — drop the wrapper once the hook itself moves onto the button root.\n *\n * A forwarded `class` lands on the root, so a consumer that wants its own hook on the card itself\n * can add one. A hook that themes address as an *ancestor* of `.kol-card` must not go here — it\n * belongs on a wrapper around `CardFC`, the way the drawer keeps `.kol-drawer__wrapper`.\n */\nexport const CardFC: FC<CardFCProps> = (props, children) => {\n\tconst {\n\t\tariaDescriptionId,\n\t\tclass: hostClass,\n\t\tcloseButtonProps,\n\t\thandleBlur,\n\t\thandleClose,\n\t\thandleFocus,\n\t\thasCloser,\n\t\theadingId,\n\t\thref,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloseButton,\n\t\trefCta,\n\t\trefTooltip,\n\t\ttarget,\n\t} = props;\n\n\treturn (\n\t\t<article aria-labelledby={headingId} class={clsx(cardBem(), hostClass)}>\n\t\t\t{href.length > 0 ? (\n\t\t\t\t<a class={BEM_CLASS_CARD__LINK} href={href} target={target || undefined} onBlur={handleBlur} onFocus={handleFocus} ref={refCta}>\n\t\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t)}\n\t\t\t<div class={BEM_CLASS_CARD__CONTENT}>{children}</div>\n\t\t\t{hasCloser && (\n\t\t\t\t<div class={clsx(BEM_CLASS_CARD__CLOSE_BUTTON, 'kol-close-button')}>\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...closeButtonProps}\n\t\t\t\t\t\tariaDescriptionId={ariaDescriptionId}\n\t\t\t\t\t\thandleBlur={NOOP}\n\t\t\t\t\t\thandleClick={handleClose}\n\t\t\t\t\t\thandleFocus={NOOP}\n\t\t\t\t\t\thandleMouseDown={NOOP}\n\t\t\t\t\t\trefButton={refCloseButton}\n\t\t\t\t\t\trefTooltip={refTooltip}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</article>\n\t);\n};\n"],"names":["resolveButtonProps","translate","bem","h","KolHeadingFc","clsx","ButtonFC"],"mappings":";;;;;;;;;;;;;AAgBM,SAAU,2BAA2B,CAAC,IAAkB,EAAA;AAC7D,IAAA,OAAOA,+BAAkB,CACxB;AACC,QAAA,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;AAC3C,QAAA,MAAM,EAAEC,cAAS,CAAC,WAAW,CAAC;AAC9B,QAAA,aAAa,EAAE,MAAM;KACrB,EACD,IAAI,CACJ;AACF;;ACfA,MAAM,OAAO,GAAGC,eAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC;AAC5D,MAAM,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC;AAClD,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAM5C,MAAM,IAAI,GAAG,MAAW,GAAG;AAG3B,MAAM,aAAa,GAAiF,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAC/HC,OAAC,CAAAC,oBAAY,EAAC,EAAA,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAA,EACtE,KAAK,CACQ,CACf;MAsBY,MAAM,GAAoB,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC1D,IAAA,MAAM,EACL,iBAAiB,EACjB,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,IAAI,EACJ,KAAK,EACL,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACN,GAAG,KAAK;AAET,IAAA,QACCD,OAAA,CAAA,SAAA,EAAA,EAAA,iBAAA,EAA0B,SAAS,EAAE,KAAK,EAAEE,SAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAA,EACpE,IAAI,CAAC,MAAM,GAAG,CAAC,IACfF,OAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAA,EAC7HA,OAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAA,CAAI,CAChE,KAEJA,OAAC,CAAA,aAAa,EAAC,EAAA,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CACnE,EACDA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,uBAAuB,EAAA,EAAG,QAAQ,CAAO,EACpD,SAAS,KACTA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAEE,SAAI,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,EAAA,EACjEF,OAAA,CAACG,kBAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,EACpB,EAAA,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,IAAI,EACjB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,UAAU,EACrB,CAAA,CAAA,CACG,CACN,CACQ;AAEZ;;;;;"}
1
+ {"version":3,"file":"component-8M23HGR8.js","sources":["src/internal/functional-components/card/close-button.ts","src/internal/functional-components/card/component.tsx"],"sourcesContent":["import { translate } from '../../../i18n';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport { resolveButtonProps } from '../button/resolve-props';\n\n/**\n * Normalizes the card's close button into the render props `ButtonFC` expects.\n *\n * The configuration is fixed — an icon-only button whose label lives in its tooltip — so every\n * component rendering `CardFC` resolves it the same way. It is a function rather than a constant\n * because `translate` must run after the i18n bundle is in place.\n *\n * Props only: the tooltip behavior, the click handler and the button ref belong to the composing\n * web component.\n *\n * @param host - The host element, used for the per-theme `buttonVariantDefault` feature flag.\n */\nexport function resolveCardCloseButtonProps(host?: HTMLElement): ResolvedButtonProps {\n\treturn resolveButtonProps(\n\t\t{\n\t\t\t_hideLabel: true,\n\t\t\t_icons: { left: { icon: 'kolicon-cross' } },\n\t\t\t_label: translate('kol-close'),\n\t\t\t_tooltipAlign: 'left',\n\t\t},\n\t\thost,\n\t);\n}\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport KolHeadingFc from '../../../functional-components/Heading/Heading';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { ButtonFC } from '../button/component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { CardApi } from './api';\n\nconst cardBem = bem.forBlock('kol-card');\nconst BEM_CLASS_CARD__CLOSE_BUTTON = cardBem('close-button');\nconst BEM_CLASS_CARD__CONTENT = cardBem('content');\nconst BEM_CLASS_CARD__HEADER = cardBem('header');\nconst BEM_CLASS_CARD__LINK = cardBem('link');\n\n/**\n * The close button reports only its click. `ButtonFC` requires a handler per callback, and the\n * card's `_on` callbacks describe its heading link, not this button.\n */\nconst NOOP = (): void => {};\n\n/** The heading renders either on its own or wrapped in the link, so it lives in its own FC. */\nconst CardHeadingFC: FC<Pick<FunctionalComponentProps<CardApi>, 'headingId' | 'label' | 'level'>> = ({ headingId, label, level }) => (\n\t<KolHeadingFc class={BEM_CLASS_CARD__HEADER} id={headingId} level={level}>\n\t\t{label}\n\t</KolHeadingFc>\n);\n\nexport type CardFCProps = FunctionalComponentProps<CardApi> & {\n\t/** The close button's normalized `ButtonFC` render props, resolved once by the web component. */\n\tcloseButtonProps: ResolvedButtonProps;\n};\n\n/**\n * Root from `bem.forBlock('kol-card')`, not `BemRootNodeFC`: the card's root is the semantic\n * `<article>` that carries `aria-labelledby`, and `BemRootNodeFC` always renders a `<div>`.\n *\n * The content area renders `children`, not a `<slot />` of its own: Stencil derives its light-DOM\n * slot relocation from the JSX in the element file, so the `<slot />` has to be written there.\n *\n * `.kol-close-button` is a theme hook shared with the alert, and every theme addresses it as an\n * ancestor of `.kol-button`. It therefore stays on a wrapper around `ButtonFC` rather than merging\n * into the button's own root — drop the wrapper once the hook itself moves onto the button root.\n *\n * A forwarded `class` lands on the root, so a consumer that wants its own hook on the card itself\n * can add one. A hook that themes address as an *ancestor* of `.kol-card` must not go here — it\n * belongs on a wrapper around `CardFC`, the way the drawer keeps `.kol-drawer__wrapper`.\n */\nexport const CardFC: FC<CardFCProps> = (props, children) => {\n\tconst {\n\t\tariaDescriptionId,\n\t\tclass: hostClass,\n\t\tcloseButtonProps,\n\t\thandleBlur,\n\t\thandleClose,\n\t\thandleFocus,\n\t\thasCloser,\n\t\theadingId,\n\t\thref,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloseButton,\n\t\trefCta,\n\t\trefTooltip,\n\t\ttarget,\n\t} = props;\n\n\treturn (\n\t\t<article aria-labelledby={headingId} class={clsx(cardBem(), hostClass)}>\n\t\t\t{href.length > 0 ? (\n\t\t\t\t<a class={BEM_CLASS_CARD__LINK} href={href} target={target || undefined} onBlur={handleBlur} onFocus={handleFocus} ref={refCta}>\n\t\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t)}\n\t\t\t<div class={BEM_CLASS_CARD__CONTENT}>{children}</div>\n\t\t\t{hasCloser && (\n\t\t\t\t<div class={clsx(BEM_CLASS_CARD__CLOSE_BUTTON, 'kol-close-button')}>\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...closeButtonProps}\n\t\t\t\t\t\tariaDescriptionId={ariaDescriptionId}\n\t\t\t\t\t\thandleBlur={NOOP}\n\t\t\t\t\t\thandleClick={handleClose}\n\t\t\t\t\t\thandleFocus={NOOP}\n\t\t\t\t\t\thandleMouseDown={NOOP}\n\t\t\t\t\t\trefButton={refCloseButton}\n\t\t\t\t\t\trefTooltip={refTooltip}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</article>\n\t);\n};\n"],"names":["resolveButtonProps","translate","bem","h","KolHeadingFc","clsx","ButtonFC"],"mappings":";;;;;;;;;;;;;AAgBM,SAAU,2BAA2B,CAAC,IAAkB,EAAA;AAC7D,IAAA,OAAOA,+BAAkB,CACxB;AACC,QAAA,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;AAC3C,QAAA,MAAM,EAAEC,cAAS,CAAC,WAAW,CAAC;AAC9B,QAAA,aAAa,EAAE,MAAM;KACrB,EACD,IAAI,CACJ;AACF;;ACfA,MAAM,OAAO,GAAGC,eAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC;AAC5D,MAAM,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC;AAClD,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAM5C,MAAM,IAAI,GAAG,MAAW,GAAG;AAG3B,MAAM,aAAa,GAAiF,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAC/HC,OAAC,CAAAC,oBAAY,EAAC,EAAA,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAA,EACtE,KAAK,CACQ,CACf;MAsBY,MAAM,GAAoB,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC1D,IAAA,MAAM,EACL,iBAAiB,EACjB,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,IAAI,EACJ,KAAK,EACL,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACN,GAAG,KAAK;AAET,IAAA,QACCD,OAAA,CAAA,SAAA,EAAA,EAAA,iBAAA,EAA0B,SAAS,EAAE,KAAK,EAAEE,SAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAA,EACpE,IAAI,CAAC,MAAM,GAAG,CAAC,IACfF,OAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAA,EAC7HA,OAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAA,CAAI,CAChE,KAEJA,OAAC,CAAA,aAAa,EAAC,EAAA,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CACnE,EACDA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,uBAAuB,EAAA,EAAG,QAAQ,CAAO,EACpD,SAAS,KACTA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAEE,SAAI,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,EAAA,EACjEF,OAAA,CAACG,kBAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,EACpB,EAAA,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,IAAI,EACjB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,UAAU,EACrB,CAAA,CAAA,CACG,CACN,CACQ;AAEZ;;;;;"}
@@ -4,14 +4,14 @@
4
4
  'use strict';
5
5
 
6
6
  var tslib_es6 = require('./tslib.es6-Cm0ytgPY.js');
7
- var index = require('./index-qcrGfEY6.js');
7
+ var index = require('./index-CjTDipy9.js');
8
8
  require('./common-B9-LvLNa.js');
9
- var component = require('./component-CmyhDJ0r.js');
9
+ var component = require('./component-C8WDkeRK.js');
10
10
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
11
11
  var clsx = require('./clsx-Bm_HQUnh.js');
12
- var component$3 = require('./component-BHDnSaCH.js');
13
- var component$2 = require('./component-_jdRFw0Y.js');
14
- var component$1 = require('./component-B1kzY-J5.js');
12
+ var component$3 = require('./component-CESKZB76.js');
13
+ var component$2 = require('./component-K9JCKLMC.js');
14
+ var component$1 = require('./component-B92xMW4N.js');
15
15
 
16
16
  const buttonBem = bemRegistry.bem.forBlock('kol-button');
17
17
  const BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT = buttonBem('interactive-element');
@@ -34,6 +34,6 @@ const ButtonFC = (props) => {
34
34
  };
35
35
 
36
36
  exports.ButtonFC = ButtonFC;
37
- //# sourceMappingURL=component-BIz_gAas.js.map
37
+ //# sourceMappingURL=component-B1t_MP4V.js.map
38
38
 
39
- //# sourceMappingURL=component-BIz_gAas.js.map
39
+ //# sourceMappingURL=component-B1t_MP4V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-BIz_gAas.js","sources":["src/internal/functional-components/button/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { classNameFromVariant } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { AriaDescriptionSpanFC } from '../aria-description-span/component';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport { TooltipFC } from '../tooltip/component';\nimport type { ButtonApi } from './api';\n\nconst buttonBem = bem.forBlock('kol-button');\nconst BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT = buttonBem('interactive-element');\nconst BEM_CLASS_BUTTON__TEXT = buttonBem('text');\nconst BEM_CLASS_BUTTON__TOOLTIP = buttonBem('tooltip');\n\n/**\n * Renders the button, its floating tooltip and its visually-hidden description inside a single\n * BEM root, the same shape `LinkFC` uses.\n *\n * The tooltip and the description span cannot live inside the `<button>` — a nested tooltip would\n * become part of the accessible name, and the description is referenced by `aria-describedby`\n * from outside. They are therefore siblings of the `<button>` within the `BemRootNodeFC` wrapper.\n */\nexport const ButtonFC: FC<FunctionalComponentProps<ButtonApi>> = (props) => {\n\tconst {\n\t\taccessKey,\n\t\tariaControls,\n\t\tariaDescription,\n\t\tariaDescriptionId,\n\t\tariaExpanded,\n\t\tariaHasPopup,\n\t\tariaSelected,\n\t\tclass: hostClass,\n\t\tcustomClass,\n\t\tdisabled,\n\t\thandleBlur,\n\t\thandleClick,\n\t\thandleFocus,\n\t\thandleMouseDown,\n\t\thideLabel,\n\t\ticons,\n\t\tid,\n\t\tinline,\n\t\tlabel,\n\t\tname,\n\t\trefButton,\n\t\trefTooltip,\n\t\trole,\n\t\tshortKey,\n\t\ttabIndex,\n\t\ttype,\n\t\tvariant,\n\t\t/* Not rendered as attributes: `on` is kept for the StrictFields contract, `tooltipAlign`\n\t\t is consumed by the tooltip behavior of the web component. */\n\t\ton,\n\t\ttooltipAlign,\n\t\t...rest\n\t} = props;\n\n\t// Marking both as intentionally read keeps them out of the forwarded rest attributes without\n\t// tripping `no-unused-vars`.\n\tvoid on;\n\tvoid tooltipAlign;\n\n\tconst badgeText = accessKey || shortKey;\n\tconst hasLabelText = label.length > 0;\n\tconst hasAriaDescription = ariaDescription.trim().length > 0;\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-button\"\n\t\t\tclass={clsx(\n\t\t\t\t// Forwarded 1:1 from the FC tag, so a component embedding a button inside its own\n\t\t\t\t// boundary can mark it — e.g. the badge's `kol-badge__smart-button`.\n\t\t\t\thostClass,\n\t\t\t\t{\n\t\t\t\t\t[classNameFromVariant(variant, 'button')]: variant.length > 0,\n\t\t\t\t\t[customClass]: customClass.length > 0,\n\t\t\t\t},\n\t\t\t)}\n\t\t\tmodifiers={{\n\t\t\t\tdisabled,\n\t\t\t\t'hide-label': hideLabel,\n\t\t\t\tinline: inline === true,\n\t\t\t\tstandalone: inline === false,\n\t\t\t}}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<button\n\t\t\t\tref={refButton}\n\t\t\t\taccessKey={accessKey || undefined}\n\t\t\t\taria-controls={ariaControls || undefined}\n\t\t\t\taria-describedby={hasAriaDescription ? ariaDescriptionId : undefined}\n\t\t\t\taria-expanded={ariaExpanded || undefined}\n\t\t\t\taria-haspopup={ariaHasPopup || undefined}\n\t\t\t\taria-keyshortcuts={shortKey || undefined}\n\t\t\t\taria-label={hideLabel && hasLabelText ? label : undefined}\n\t\t\t\taria-selected={ariaSelected || undefined}\n\t\t\t\tclass={BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={id || undefined}\n\t\t\t\tname={name || undefined}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tonFocus={handleFocus}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\trole={role || undefined}\n\t\t\t\ttabIndex={tabIndex}\n\t\t\t\ttype={type}\n\t\t\t>\n\t\t\t\t<SpanFC class={BEM_CLASS_BUTTON__TEXT} badgeText={badgeText} icons={icons} hideLabel={hideLabel} label={label}>\n\t\t\t\t\t<slot name=\"expert\" slot=\"expert\"></slot>\n\t\t\t\t</SpanFC>\n\t\t\t</button>\n\t\t\t{hideLabel && hasLabelText && (\n\t\t\t\t<div class={BEM_CLASS_BUTTON__TOOLTIP}>\n\t\t\t\t\t<TooltipFC badgeText={badgeText} label={label} refFloating={refTooltip} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{hasAriaDescription && <AriaDescriptionSpanFC description={ariaDescription} descriptionId={ariaDescriptionId} />}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["bem","__rest","h","BemRootNodeFC","clsx","classNameFromVariant","SpanFC","TooltipFC","AriaDescriptionSpanFC"],"mappings":"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"}
1
+ {"version":3,"file":"component-B1t_MP4V.js","sources":["src/internal/functional-components/button/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { classNameFromVariant } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { AriaDescriptionSpanFC } from '../aria-description-span/component';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport { TooltipFC } from '../tooltip/component';\nimport type { ButtonApi } from './api';\n\nconst buttonBem = bem.forBlock('kol-button');\nconst BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT = buttonBem('interactive-element');\nconst BEM_CLASS_BUTTON__TEXT = buttonBem('text');\nconst BEM_CLASS_BUTTON__TOOLTIP = buttonBem('tooltip');\n\n/**\n * Renders the button, its floating tooltip and its visually-hidden description inside a single\n * BEM root, the same shape `LinkFC` uses.\n *\n * The tooltip and the description span cannot live inside the `<button>` — a nested tooltip would\n * become part of the accessible name, and the description is referenced by `aria-describedby`\n * from outside. They are therefore siblings of the `<button>` within the `BemRootNodeFC` wrapper.\n */\nexport const ButtonFC: FC<FunctionalComponentProps<ButtonApi>> = (props) => {\n\tconst {\n\t\taccessKey,\n\t\tariaControls,\n\t\tariaDescription,\n\t\tariaDescriptionId,\n\t\tariaExpanded,\n\t\tariaHasPopup,\n\t\tariaSelected,\n\t\tclass: hostClass,\n\t\tcustomClass,\n\t\tdisabled,\n\t\thandleBlur,\n\t\thandleClick,\n\t\thandleFocus,\n\t\thandleMouseDown,\n\t\thideLabel,\n\t\ticons,\n\t\tid,\n\t\tinline,\n\t\tlabel,\n\t\tname,\n\t\trefButton,\n\t\trefTooltip,\n\t\trole,\n\t\tshortKey,\n\t\ttabIndex,\n\t\ttype,\n\t\tvariant,\n\t\t/* Not rendered as attributes: `on` is kept for the StrictFields contract, `tooltipAlign`\n\t\t is consumed by the tooltip behavior of the web component. */\n\t\ton,\n\t\ttooltipAlign,\n\t\t...rest\n\t} = props;\n\n\t// Marking both as intentionally read keeps them out of the forwarded rest attributes without\n\t// tripping `no-unused-vars`.\n\tvoid on;\n\tvoid tooltipAlign;\n\n\tconst badgeText = accessKey || shortKey;\n\tconst hasLabelText = label.length > 0;\n\tconst hasAriaDescription = ariaDescription.trim().length > 0;\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-button\"\n\t\t\tclass={clsx(\n\t\t\t\t// Forwarded 1:1 from the FC tag, so a component embedding a button inside its own\n\t\t\t\t// boundary can mark it — e.g. the badge's `kol-badge__smart-button`.\n\t\t\t\thostClass,\n\t\t\t\t{\n\t\t\t\t\t[classNameFromVariant(variant, 'button')]: variant.length > 0,\n\t\t\t\t\t[customClass]: customClass.length > 0,\n\t\t\t\t},\n\t\t\t)}\n\t\t\tmodifiers={{\n\t\t\t\tdisabled,\n\t\t\t\t'hide-label': hideLabel,\n\t\t\t\tinline: inline === true,\n\t\t\t\tstandalone: inline === false,\n\t\t\t}}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<button\n\t\t\t\tref={refButton}\n\t\t\t\taccessKey={accessKey || undefined}\n\t\t\t\taria-controls={ariaControls || undefined}\n\t\t\t\taria-describedby={hasAriaDescription ? ariaDescriptionId : undefined}\n\t\t\t\taria-expanded={ariaExpanded || undefined}\n\t\t\t\taria-haspopup={ariaHasPopup || undefined}\n\t\t\t\taria-keyshortcuts={shortKey || undefined}\n\t\t\t\taria-label={hideLabel && hasLabelText ? label : undefined}\n\t\t\t\taria-selected={ariaSelected || undefined}\n\t\t\t\tclass={BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={id || undefined}\n\t\t\t\tname={name || undefined}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tonFocus={handleFocus}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\trole={role || undefined}\n\t\t\t\ttabIndex={tabIndex}\n\t\t\t\ttype={type}\n\t\t\t>\n\t\t\t\t<SpanFC class={BEM_CLASS_BUTTON__TEXT} badgeText={badgeText} icons={icons} hideLabel={hideLabel} label={label}>\n\t\t\t\t\t<slot name=\"expert\" slot=\"expert\"></slot>\n\t\t\t\t</SpanFC>\n\t\t\t</button>\n\t\t\t{hideLabel && hasLabelText && (\n\t\t\t\t<div class={BEM_CLASS_BUTTON__TOOLTIP}>\n\t\t\t\t\t<TooltipFC badgeText={badgeText} label={label} refFloating={refTooltip} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{hasAriaDescription && <AriaDescriptionSpanFC description={ariaDescription} descriptionId={ariaDescriptionId} />}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["bem","__rest","h","BemRootNodeFC","clsx","classNameFromVariant","SpanFC","TooltipFC","AriaDescriptionSpanFC"],"mappings":"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"}
@@ -3,14 +3,14 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-qcrGfEY6.js');
7
- var component = require('./component-_jdRFw0Y.js');
6
+ var index = require('./index-CjTDipy9.js');
7
+ var component = require('./component-K9JCKLMC.js');
8
8
 
9
9
  const TooltipFC = ({ label, badgeText, id, refFloating }) => {
10
10
  return (index.h("div", { class: "kol-tooltip__floating", hidden: label.length === 0, ref: refFloating }, index.h("div", { class: "kol-tooltip__arrow" }), index.h(component.SpanFC, { class: "kol-tooltip__content", badgeText: badgeText, id: id, label: label })));
11
11
  };
12
12
 
13
13
  exports.TooltipFC = TooltipFC;
14
- //# sourceMappingURL=component-B1kzY-J5.js.map
14
+ //# sourceMappingURL=component-B92xMW4N.js.map
15
15
 
16
- //# sourceMappingURL=component-B1kzY-J5.js.map
16
+ //# sourceMappingURL=component-B92xMW4N.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-B1kzY-J5.js","sources":["src/internal/functional-components/tooltip/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport type { TooltipAlignPropType } from '../../../schema';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport type { TooltipApi } from './api';\n\ntype TooltipFCProps = Pick<FunctionalComponentProps<TooltipApi>, 'label'> & {\n\tbadgeText?: string;\n\tid?: string;\n\talign?: TooltipAlignPropType;\n\trefFloating: (el?: HTMLDivElement) => void;\n};\n\nexport const TooltipFC: FC<TooltipFCProps> = ({ label, badgeText, id, refFloating }) => {\n\treturn (\n\t\t<div class=\"kol-tooltip__floating\" hidden={label.length === 0} ref={refFloating}>\n\t\t\t<div class=\"kol-tooltip__arrow\" />\n\t\t\t<SpanFC class=\"kol-tooltip__content\" badgeText={badgeText} id={id} label={label} />\n\t\t</div>\n\t);\n};\n"],"names":["h","SpanFC"],"mappings":";;;;;;;;AAeO,MAAM,SAAS,GAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAI;IACtF,QACCA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,uBAAuB,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,EAAA,EAC9EA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,oBAAoB,EAAG,CAAA,EAClCA,OAAC,CAAAC,gBAAM,IAAC,KAAK,EAAC,sBAAsB,EAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA,CAC9E;AAER;;;;"}
1
+ {"version":3,"file":"component-B92xMW4N.js","sources":["src/internal/functional-components/tooltip/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport type { TooltipAlignPropType } from '../../../schema';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport type { TooltipApi } from './api';\n\ntype TooltipFCProps = Pick<FunctionalComponentProps<TooltipApi>, 'label'> & {\n\tbadgeText?: string;\n\tid?: string;\n\talign?: TooltipAlignPropType;\n\trefFloating: (el?: HTMLDivElement) => void;\n};\n\nexport const TooltipFC: FC<TooltipFCProps> = ({ label, badgeText, id, refFloating }) => {\n\treturn (\n\t\t<div class=\"kol-tooltip__floating\" hidden={label.length === 0} ref={refFloating}>\n\t\t\t<div class=\"kol-tooltip__arrow\" />\n\t\t\t<SpanFC class=\"kol-tooltip__content\" badgeText={badgeText} id={id} label={label} />\n\t\t</div>\n\t);\n};\n"],"names":["h","SpanFC"],"mappings":";;;;;;;;AAeO,MAAM,SAAS,GAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAI;IACtF,QACCA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,uBAAuB,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,EAAA,EAC9EA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,oBAAoB,EAAG,CAAA,EAClCA,OAAC,CAAAC,gBAAM,IAAC,KAAK,EAAC,sBAAsB,EAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA,CAC9E;AAER;;;;"}
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var tslib_es6 = require('./tslib.es6-Cm0ytgPY.js');
7
- var index = require('./index-qcrGfEY6.js');
7
+ var index = require('./index-CjTDipy9.js');
8
8
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
9
9
  var clsx = require('./clsx-Bm_HQUnh.js');
10
10
 
@@ -18,6 +18,6 @@ const IconFC = (_a) => {
18
18
  };
19
19
 
20
20
  exports.IconFC = IconFC;
21
- //# sourceMappingURL=component-BairlFHi.js.map
21
+ //# sourceMappingURL=component-BGdViN9u.js.map
22
22
 
23
- //# sourceMappingURL=component-BairlFHi.js.map
23
+ //# sourceMappingURL=component-BGdViN9u.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-BairlFHi.js","sources":["src/internal/functional-components/icon/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { IconApi } from './api';\n\nconst iconBem = bem.forBlock('kol-icon');\nconst BEM_CLASS_ICON = iconBem();\nconst BEM_CLASS_ICON__ICON = iconBem('icon');\n\nexport const IconFC: FC<FunctionalComponentProps<IconApi>> = ({ class: classNames, icons, label, ...htmlAttributes }) => {\n\t// label is always a normalized string ('' when unset — see labelProp definition)\n\tconst hasAriaLabel = label?.length > 0;\n\treturn (\n\t\t<i\n\t\t\t{...htmlAttributes}\n\t\t\t/**\n\t\t\t * Die Auszeichnung `aria-hidden` ist eigentlich nicht erforderlich, da die aktuellen\n\t\t\t * Screenreader, wie NVDA und JAWS, es auch ohne `aria-hidden` nicht vorlesen.\n\t\t\t *\n\t\t\t * Referenz: https://www.w3.org/TR/wai-aria/states_and_properties#aria-hidden\n\t\t\t */\n\t\t\taria-hidden={hasAriaLabel ? undefined : 'true'}\n\t\t\taria-label={hasAriaLabel ? label : undefined}\n\t\t\tclass={clsx(BEM_CLASS_ICON, BEM_CLASS_ICON__ICON, icons, classNames)}\n\t\t\trole={hasAriaLabel ? 'img' : 'presentation'}\n\t\t/>\n\t);\n};\n"],"names":["bem","__rest","h","clsx"],"mappings":";;;;;;;;;;AAQA,MAAM,OAAO,GAAGA,eAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,cAAc,GAAG,OAAO,EAAE;AAChC,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAE/B,MAAA,MAAM,GAA0C,CAAC,EAAsD,KAAI;IAA1D,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAA,GAAA,EAAqB,EAAhB,cAAc,GAApDC,gBAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAsD,CAAF;IAEjH,MAAM,YAAY,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,MAAM,IAAG,CAAC;AACtC,IAAA,QACCC,+BACK,cAAc,EAAA,EAAA,aAAA,EAOL,YAAY,GAAG,SAAS,GAAG,MAAM,EAAA,YAAA,EAClC,YAAY,GAAG,KAAK,GAAG,SAAS,EAC5C,KAAK,EAAEC,SAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,EACpE,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,cAAc,EAC1C,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"component-BGdViN9u.js","sources":["src/internal/functional-components/icon/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { IconApi } from './api';\n\nconst iconBem = bem.forBlock('kol-icon');\nconst BEM_CLASS_ICON = iconBem();\nconst BEM_CLASS_ICON__ICON = iconBem('icon');\n\nexport const IconFC: FC<FunctionalComponentProps<IconApi>> = ({ class: classNames, icons, label, ...htmlAttributes }) => {\n\t// label is always a normalized string ('' when unset — see labelProp definition)\n\tconst hasAriaLabel = label?.length > 0;\n\treturn (\n\t\t<i\n\t\t\t{...htmlAttributes}\n\t\t\t/**\n\t\t\t * Die Auszeichnung `aria-hidden` ist eigentlich nicht erforderlich, da die aktuellen\n\t\t\t * Screenreader, wie NVDA und JAWS, es auch ohne `aria-hidden` nicht vorlesen.\n\t\t\t *\n\t\t\t * Referenz: https://www.w3.org/TR/wai-aria/states_and_properties#aria-hidden\n\t\t\t */\n\t\t\taria-hidden={hasAriaLabel ? undefined : 'true'}\n\t\t\taria-label={hasAriaLabel ? label : undefined}\n\t\t\tclass={clsx(BEM_CLASS_ICON, BEM_CLASS_ICON__ICON, icons, classNames)}\n\t\t\trole={hasAriaLabel ? 'img' : 'presentation'}\n\t\t/>\n\t);\n};\n"],"names":["bem","__rest","h","clsx"],"mappings":";;;;;;;;;;AAQA,MAAM,OAAO,GAAGA,eAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,cAAc,GAAG,OAAO,EAAE;AAChC,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAE/B,MAAA,MAAM,GAA0C,CAAC,EAAsD,KAAI;IAA1D,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAA,GAAA,EAAqB,EAAhB,cAAc,GAApDC,gBAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAsD,CAAF;IAEjH,MAAM,YAAY,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,MAAM,IAAG,CAAC;AACtC,IAAA,QACCC,+BACK,cAAc,EAAA,EAAA,aAAA,EAOL,YAAY,GAAG,SAAS,GAAG,MAAM,EAAA,YAAA,EAClC,YAAY,GAAG,KAAK,GAAG,SAAS,EAC5C,KAAK,EAAEC,SAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,EACpE,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,cAAc,EAC1C,CAAA,CAAA;AAEJ;;;;"}
@@ -3,10 +3,10 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-qcrGfEY6.js');
6
+ var index = require('./index-CjTDipy9.js');
7
7
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
8
- var component = require('./component-BIz_gAas.js');
9
- var component$1 = require('./component-_jdRFw0Y.js');
8
+ var component = require('./component-B1t_MP4V.js');
9
+ var component$1 = require('./component-K9JCKLMC.js');
10
10
 
11
11
  const badgeBem = bemRegistry.bem.forBlock('kol-badge');
12
12
  const BEM_CLASS_BADGE__LABEL = badgeBem('label');
@@ -19,6 +19,6 @@ const BadgeFC = ({ color, icons, label, smartButton }) => {
19
19
  };
20
20
 
21
21
  exports.BadgeFC = BadgeFC;
22
- //# sourceMappingURL=component-B1zMXSkZ.js.map
22
+ //# sourceMappingURL=component-BZKcc9iM.js.map
23
23
 
24
- //# sourceMappingURL=component-B1zMXSkZ.js.map
24
+ //# sourceMappingURL=component-BZKcc9iM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-B1zMXSkZ.js","sources":["src/internal/functional-components/badge/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport { ButtonFC } from '../button/component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport type { BadgeApi } from './api';\n\nconst badgeBem = bem.forBlock('kol-badge');\nconst BEM_CLASS_BADGE__LABEL = badgeBem('label');\nconst BEM_CLASS_BADGE__SMART_BUTTON = badgeBem('smart-button');\n\n/**\n * Everything `BadgeFC` needs for the smart button, as one optional unit: its ids, refs and handlers\n * exist only when a button is configured. A consumer that renders a plain badge — `kol-version` —\n * passes nothing and has no orchestration to invent.\n */\nexport type BadgeSmartButtonFCProps = Pick<\n\tFunctionalComponentProps<BadgeApi>,\n\t'ariaDescriptionId' | 'handleBlur' | 'handleClick' | 'handleFocus' | 'handleMouseDown' | 'labelId' | 'refSmartButton' | 'refTooltip'\n> & {\n\t/** The button props resolved by the web component, spread onto `ButtonFC`. */\n\tresolvedButton: ResolvedButtonProps;\n};\n\n/**\n * `Pick`, not `Omit`: `Omit` over `FunctionalComponentProps` widens every remaining prop, because\n * subtracting from the intersection collapses the precise types into the optional HTML attributes\n * it is intersected with.\n */\ntype BadgeFCProps = Pick<FunctionalComponentProps<BadgeApi>, 'color' | 'icons' | 'label'> & {\n\tsmartButton?: BadgeSmartButtonFCProps;\n};\n\n/**\n * Root from `bem.forBlock('kol-badge')`, not `BemRootNodeFC`: the badge needs an inline `style`\n * for its colours, and `BemRootNodeFC` forwards only `class` (ARC42 § \"BemRootNodeFC Pattern\").\n *\n * The trailing `<br />` makes NVDA's read mode treat each badge as one element. The smart button\n * stays before it in the DOM for tab order and is moved to the end visually by `order: 3`.\n * `kol-badge-styles()` excludes it from text selection so it does not add a blank line to copied\n * text - in every shadow root that renders this component, not just the badge's own.\n */\nexport const BadgeFC: FC<BadgeFCProps> = ({ color, icons, label, smartButton }) => {\n\treturn (\n\t\t<div\n\t\t\tclass={badgeBem({ 'has-smart-button': smartButton !== undefined })}\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: color.backgroundColor,\n\t\t\t\tcolor: color.foregroundColor,\n\t\t\t}}\n\t\t>\n\t\t\t<SpanFC class={BEM_CLASS_BADGE__LABEL} id={smartButton?.labelId} allowMarkdown icons={icons} label={label} />\n\t\t\t{smartButton && (\n\t\t\t\t<ButtonFC\n\t\t\t\t\t{...smartButton.resolvedButton}\n\t\t\t\t\tclass={BEM_CLASS_BADGE__SMART_BUTTON}\n\t\t\t\t\tariaDescriptionId={smartButton.ariaDescriptionId}\n\t\t\t\t\thandleBlur={smartButton.handleBlur}\n\t\t\t\t\thandleClick={smartButton.handleClick}\n\t\t\t\t\thandleFocus={smartButton.handleFocus}\n\t\t\t\t\thandleMouseDown={smartButton.handleMouseDown}\n\t\t\t\t\trefButton={smartButton.refSmartButton}\n\t\t\t\t\trefTooltip={smartButton.refTooltip}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<br />\n\t\t</div>\n\t);\n};\n"],"names":["bem","h","SpanFC","ButtonFC"],"mappings":";;;;;;;;;;AAUA,MAAM,QAAQ,GAAGA,eAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,OAAO,CAAC;AAChD,MAAM,6BAA6B,GAAG,QAAQ,CAAC,cAAc,CAAC;AAiCvD,MAAM,OAAO,GAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAI;IACjF,QACCC,OACC,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,EAAE,kBAAkB,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC,EAClE,KAAK,EAAE;YACN,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,KAAK,EAAE,KAAK,CAAC,eAAe;SAC5B,EAAA,EAEDA,OAAC,CAAAC,kBAAM,EAAC,EAAA,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,OAAO,EAAE,aAAa,EAAC,IAAA,EAAA,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA,EAC5G,WAAW,KACXD,OAAA,CAACE,kBAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACJ,WAAW,CAAC,cAAc,EAC9B,EAAA,KAAK,EAAE,6BAA6B,EACpC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,EAChD,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,eAAe,EAAE,WAAW,CAAC,eAAe,EAC5C,SAAS,EAAE,WAAW,CAAC,cAAc,EACrC,UAAU,EAAE,WAAW,CAAC,UAAU,EAAA,CAAA,CACjC,CACF,EAEDF,OAAM,CAAA,IAAA,EAAA,IAAA,CAAA,CACD;AAER;;;;"}
1
+ {"version":3,"file":"component-BZKcc9iM.js","sources":["src/internal/functional-components/badge/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport { ButtonFC } from '../button/component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport type { BadgeApi } from './api';\n\nconst badgeBem = bem.forBlock('kol-badge');\nconst BEM_CLASS_BADGE__LABEL = badgeBem('label');\nconst BEM_CLASS_BADGE__SMART_BUTTON = badgeBem('smart-button');\n\n/**\n * Everything `BadgeFC` needs for the smart button, as one optional unit: its ids, refs and handlers\n * exist only when a button is configured. A consumer that renders a plain badge — `kol-version` —\n * passes nothing and has no orchestration to invent.\n */\nexport type BadgeSmartButtonFCProps = Pick<\n\tFunctionalComponentProps<BadgeApi>,\n\t'ariaDescriptionId' | 'handleBlur' | 'handleClick' | 'handleFocus' | 'handleMouseDown' | 'labelId' | 'refSmartButton' | 'refTooltip'\n> & {\n\t/** The button props resolved by the web component, spread onto `ButtonFC`. */\n\tresolvedButton: ResolvedButtonProps;\n};\n\n/**\n * `Pick`, not `Omit`: `Omit` over `FunctionalComponentProps` widens every remaining prop, because\n * subtracting from the intersection collapses the precise types into the optional HTML attributes\n * it is intersected with.\n */\ntype BadgeFCProps = Pick<FunctionalComponentProps<BadgeApi>, 'color' | 'icons' | 'label'> & {\n\tsmartButton?: BadgeSmartButtonFCProps;\n};\n\n/**\n * Root from `bem.forBlock('kol-badge')`, not `BemRootNodeFC`: the badge needs an inline `style`\n * for its colours, and `BemRootNodeFC` forwards only `class` (ARC42 § \"BemRootNodeFC Pattern\").\n *\n * The trailing `<br />` makes NVDA's read mode treat each badge as one element. The smart button\n * stays before it in the DOM for tab order and is moved to the end visually by `order: 3`.\n * `kol-badge-styles()` excludes it from text selection so it does not add a blank line to copied\n * text - in every shadow root that renders this component, not just the badge's own.\n */\nexport const BadgeFC: FC<BadgeFCProps> = ({ color, icons, label, smartButton }) => {\n\treturn (\n\t\t<div\n\t\t\tclass={badgeBem({ 'has-smart-button': smartButton !== undefined })}\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: color.backgroundColor,\n\t\t\t\tcolor: color.foregroundColor,\n\t\t\t}}\n\t\t>\n\t\t\t<SpanFC class={BEM_CLASS_BADGE__LABEL} id={smartButton?.labelId} allowMarkdown icons={icons} label={label} />\n\t\t\t{smartButton && (\n\t\t\t\t<ButtonFC\n\t\t\t\t\t{...smartButton.resolvedButton}\n\t\t\t\t\tclass={BEM_CLASS_BADGE__SMART_BUTTON}\n\t\t\t\t\tariaDescriptionId={smartButton.ariaDescriptionId}\n\t\t\t\t\thandleBlur={smartButton.handleBlur}\n\t\t\t\t\thandleClick={smartButton.handleClick}\n\t\t\t\t\thandleFocus={smartButton.handleFocus}\n\t\t\t\t\thandleMouseDown={smartButton.handleMouseDown}\n\t\t\t\t\trefButton={smartButton.refSmartButton}\n\t\t\t\t\trefTooltip={smartButton.refTooltip}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<br />\n\t\t</div>\n\t);\n};\n"],"names":["bem","h","SpanFC","ButtonFC"],"mappings":";;;;;;;;;;AAUA,MAAM,QAAQ,GAAGA,eAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,OAAO,CAAC;AAChD,MAAM,6BAA6B,GAAG,QAAQ,CAAC,cAAc,CAAC;AAiCvD,MAAM,OAAO,GAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAI;IACjF,QACCC,OACC,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,EAAE,kBAAkB,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC,EAClE,KAAK,EAAE;YACN,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,KAAK,EAAE,KAAK,CAAC,eAAe;SAC5B,EAAA,EAEDA,OAAC,CAAAC,kBAAM,EAAC,EAAA,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,OAAO,EAAE,aAAa,EAAC,IAAA,EAAA,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA,EAC5G,WAAW,KACXD,OAAA,CAACE,kBAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACJ,WAAW,CAAC,cAAc,EAC9B,EAAA,KAAK,EAAE,6BAA6B,EACpC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,EAChD,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,eAAe,EAAE,WAAW,CAAC,eAAe,EAC5C,SAAS,EAAE,WAAW,CAAC,cAAc,EACrC,UAAU,EAAE,WAAW,CAAC,UAAU,EAAA,CAAA,CACjC,CACF,EAEDF,OAAM,CAAA,IAAA,EAAA,IAAA,CAAA,CACD;AAER;;;;"}
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  require('./common-B9-LvLNa.js');
7
- var index = require('./index-qcrGfEY6.js');
7
+ var index = require('./index-CjTDipy9.js');
8
8
 
9
9
  const classNameFromVariant = (variants, componentName) => {
10
10
  let className = '';
@@ -20,6 +20,6 @@ const AriaDescriptionSpanFC = ({ description, descriptionId }) => description ?
20
20
 
21
21
  exports.AriaDescriptionSpanFC = AriaDescriptionSpanFC;
22
22
  exports.classNameFromVariant = classNameFromVariant;
23
- //# sourceMappingURL=component-CmyhDJ0r.js.map
23
+ //# sourceMappingURL=component-C8WDkeRK.js.map
24
24
 
25
- //# sourceMappingURL=component-CmyhDJ0r.js.map
25
+ //# sourceMappingURL=component-C8WDkeRK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-CmyhDJ0r.js","sources":["src/schema/props/variant-class-name.ts","src/internal/functional-components/aria-description-span/component.tsx"],"sourcesContent":["import type { Generic } from 'adopted-style-sheets';\n\nimport type { WatchOptions } from '../utils';\nimport { watchValidator } from '../utils';\nimport { isString } from '../validators';\n\nexport type VariantClassNamePropType = string | string[];\n\nexport type PropVariantClassName = {\n\tvariant: VariantClassNamePropType;\n};\n\nconst SAFE_CLASS_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]{3,60}$/;\nconst isValidArrayOrString = (value: unknown) =>\n\t(Array.isArray(value) && value.every(isSafeClassName)) || (isString(value, 1) && (value as string).split(' ').every(isSafeClassName));\nconst isSafeClassName = (value: unknown) => typeof value === 'string' && SAFE_CLASS_NAME_RE.test(value);\nconst SAFE_CLASS_NAME_ALLOWED = new Set([SAFE_CLASS_NAME_RE.source]);\n\nconst beforePatchString = (component: Generic.Element.Component): void => {\n\tif (component.nextState?.has('_variant')) {\n\t\tconst variants = component.nextState?.get('_variant');\n\t\tlet nextStateVariants: VariantClassNamePropType = [];\n\t\tif (isString(variants, 1)) {\n\t\t\tnextStateVariants = (variants as string).split(' ');\n\t\t} else if (Array.isArray(variants)) {\n\t\t\tnextStateVariants = variants;\n\t\t}\n\t\tcomponent.nextState?.set('_variant', nextStateVariants);\n\t}\n};\n\nexport const validateVariantClassName = (component: Generic.Element.Component, value?: VariantClassNamePropType, options: WatchOptions = {}): void => {\n\twatchValidator(component, '_variant', isValidArrayOrString, SAFE_CLASS_NAME_ALLOWED, value, {\n\t\t...options,\n\t\tdefaultValue: [],\n\t\thooks: {\n\t\t\tafterPatch: options.hooks?.afterPatch,\n\t\t\tbeforePatch: (nextValue, nextState, component, key) => {\n\t\t\t\tif (typeof options.hooks?.beforePatch === 'function') {\n\t\t\t\t\toptions.hooks?.beforePatch(nextValue, nextState, component, key);\n\t\t\t\t}\n\t\t\t\tbeforePatchString(component);\n\t\t\t},\n\t\t},\n\t});\n};\n\nexport const classNameFromVariant = (variants: VariantClassNamePropType | undefined, componentName: string): string => {\n\tlet className = '';\n\n\tif (Array.isArray(variants)) {\n\t\tvariants.forEach((variant) => {\n\t\t\tclassName += 'kol-' + componentName + '--' + variant + ' ';\n\t\t});\n\t}\n\treturn className;\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\ntype AriaDescriptionSpanFCProps = {\n\t/**\n\t * The (already trimmed) description text. Falsy renders nothing — the description is\n\t * optional, and an empty `aria-describedby` target would be pointless.\n\t */\n\tdescription: string | undefined;\n\t/**\n\t * The id referenced by the interactive element's `aria-describedby`.\n\t */\n\tdescriptionId: string;\n};\n\n/**\n * Visually-hidden `aria-describedby` target, shared by `ButtonFC` and `LinkFC`.\n *\n * Must be a sibling of the interactive element, not a child of it — the description is\n * referenced from outside via `aria-describedby`, not folded into the accessible name.\n */\nexport const AriaDescriptionSpanFC: FC<AriaDescriptionSpanFCProps> = ({ description, descriptionId }) =>\n\tdescription ? (\n\t\t<span class=\"visually-hidden\" id={descriptionId}>\n\t\t\t{description}\n\t\t</span>\n\t) : null;\n"],"names":["h"],"mappings":";;;;;;;;MA+Ca,oBAAoB,GAAG,CAAC,QAA8C,EAAE,aAAqB,KAAY;IACrH,IAAI,SAAS,GAAG,EAAE;AAElB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC5B,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YAC5B,SAAS,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG;AAC3D,SAAC,CAAC;;AAEH,IAAA,OAAO,SAAS;AACjB;;ACnCa,MAAA,qBAAqB,GAAmC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,KACnG,WAAW,IACVA,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,iBAAiB,EAAC,EAAE,EAAE,aAAa,EAC7C,EAAA,WAAW,CACN,IACJ;;;;;"}
1
+ {"version":3,"file":"component-C8WDkeRK.js","sources":["src/schema/props/variant-class-name.ts","src/internal/functional-components/aria-description-span/component.tsx"],"sourcesContent":["import type { Generic } from 'adopted-style-sheets';\n\nimport type { WatchOptions } from '../utils';\nimport { watchValidator } from '../utils';\nimport { isString } from '../validators';\n\nexport type VariantClassNamePropType = string | string[];\n\nexport type PropVariantClassName = {\n\tvariant: VariantClassNamePropType;\n};\n\nconst SAFE_CLASS_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]{3,60}$/;\nconst isValidArrayOrString = (value: unknown) =>\n\t(Array.isArray(value) && value.every(isSafeClassName)) || (isString(value, 1) && (value as string).split(' ').every(isSafeClassName));\nconst isSafeClassName = (value: unknown) => typeof value === 'string' && SAFE_CLASS_NAME_RE.test(value);\nconst SAFE_CLASS_NAME_ALLOWED = new Set([SAFE_CLASS_NAME_RE.source]);\n\nconst beforePatchString = (component: Generic.Element.Component): void => {\n\tif (component.nextState?.has('_variant')) {\n\t\tconst variants = component.nextState?.get('_variant');\n\t\tlet nextStateVariants: VariantClassNamePropType = [];\n\t\tif (isString(variants, 1)) {\n\t\t\tnextStateVariants = (variants as string).split(' ');\n\t\t} else if (Array.isArray(variants)) {\n\t\t\tnextStateVariants = variants;\n\t\t}\n\t\tcomponent.nextState?.set('_variant', nextStateVariants);\n\t}\n};\n\nexport const validateVariantClassName = (component: Generic.Element.Component, value?: VariantClassNamePropType, options: WatchOptions = {}): void => {\n\twatchValidator(component, '_variant', isValidArrayOrString, SAFE_CLASS_NAME_ALLOWED, value, {\n\t\t...options,\n\t\tdefaultValue: [],\n\t\thooks: {\n\t\t\tafterPatch: options.hooks?.afterPatch,\n\t\t\tbeforePatch: (nextValue, nextState, component, key) => {\n\t\t\t\tif (typeof options.hooks?.beforePatch === 'function') {\n\t\t\t\t\toptions.hooks?.beforePatch(nextValue, nextState, component, key);\n\t\t\t\t}\n\t\t\t\tbeforePatchString(component);\n\t\t\t},\n\t\t},\n\t});\n};\n\nexport const classNameFromVariant = (variants: VariantClassNamePropType | undefined, componentName: string): string => {\n\tlet className = '';\n\n\tif (Array.isArray(variants)) {\n\t\tvariants.forEach((variant) => {\n\t\t\tclassName += 'kol-' + componentName + '--' + variant + ' ';\n\t\t});\n\t}\n\treturn className;\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\ntype AriaDescriptionSpanFCProps = {\n\t/**\n\t * The (already trimmed) description text. Falsy renders nothing — the description is\n\t * optional, and an empty `aria-describedby` target would be pointless.\n\t */\n\tdescription: string | undefined;\n\t/**\n\t * The id referenced by the interactive element's `aria-describedby`.\n\t */\n\tdescriptionId: string;\n};\n\n/**\n * Visually-hidden `aria-describedby` target, shared by `ButtonFC` and `LinkFC`.\n *\n * Must be a sibling of the interactive element, not a child of it — the description is\n * referenced from outside via `aria-describedby`, not folded into the accessible name.\n */\nexport const AriaDescriptionSpanFC: FC<AriaDescriptionSpanFCProps> = ({ description, descriptionId }) =>\n\tdescription ? (\n\t\t<span class=\"visually-hidden\" id={descriptionId}>\n\t\t\t{description}\n\t\t</span>\n\t) : null;\n"],"names":["h"],"mappings":";;;;;;;;MA+Ca,oBAAoB,GAAG,CAAC,QAA8C,EAAE,aAAqB,KAAY;IACrH,IAAI,SAAS,GAAG,EAAE;AAElB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC5B,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YAC5B,SAAS,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG;AAC3D,SAAC,CAAC;;AAEH,IAAA,OAAO,SAAS;AACjB;;ACnCa,MAAA,qBAAqB,GAAmC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,KACnG,WAAW,IACVA,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,iBAAiB,EAAC,EAAE,EAAE,aAAa,EAC7C,EAAA,WAAW,CACN,IACJ;;;;;"}
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var tslib_es6 = require('./tslib.es6-Cm0ytgPY.js');
7
- var index = require('./index-qcrGfEY6.js');
7
+ var index = require('./index-CjTDipy9.js');
8
8
  var clsx = require('./clsx-Bm_HQUnh.js');
9
9
  var blockBem = require('./block-bem-D7PDS6kC.js');
10
10
 
@@ -16,6 +16,6 @@ const BemRootNodeFC = (_a, children) => {
16
16
  };
17
17
 
18
18
  exports.BemRootNodeFC = BemRootNodeFC;
19
- //# sourceMappingURL=component-BHDnSaCH.js.map
19
+ //# sourceMappingURL=component-CESKZB76.js.map
20
20
 
21
- //# sourceMappingURL=component-BHDnSaCH.js.map
21
+ //# sourceMappingURL=component-CESKZB76.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-BHDnSaCH.js","sources":["src/internal/functional-components/bem-root-node/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\n\nimport type { KoliBriComponentsBemSchema } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { BlockModifiers } from './block-bem';\nimport { getBlockBem } from './block-bem';\n\ntype FCChildren = Parameters<FC>[1];\n\ntype BemRootNodeFCProps<TBlock extends keyof KoliBriComponentsBemSchema> = {\n\t/**\n\t * BEM block name — must be a key registered in `KoliBriComponentsBemSchema`.\n\t * Constrains `modifiers` to the exact modifier set defined in `bem-registry.ts`.\n\t */\n\tblock: TBlock;\n\t/**\n\t * BEM block modifiers. Keys are validated against the schema (e.g. `'disabled'`, `'inline'`).\n\t * No `kol-link--` prefix needed — typed-bem adds it automatically.\n\t */\n\tmodifiers?: BlockModifiers<TBlock>;\n\t/**\n\t * Additional classes forwarded 1:1 from the FC tag onto the root node.\n\t * Typically the `class` prop received by the surrounding Functional Component\n\t * (i.e. the `class` attribute set by a parent component).\n\t */\n\tclass?: JSXBase.HTMLAttributes<HTMLElement>['class'];\n\t/**\n\t * Element of the root node, `div` by default. `abbr` is the abbreviation itself, `fieldset` groups\n\t * the options of a radio group, `label` wraps the native control of a checkbox or radio, `svg` is\n\t * the root of a graphic.\n\t */\n\tcomponent?: 'abbr' | 'div' | 'fieldset' | 'label' | 'svg';\n\t/** Native `disabled` attribute; only a `fieldset` root supports it. */\n\tdisabled?: boolean;\n} & Partial<Omit<JSXBase.HTMLAttributes<HTMLDivElement>, 'class'>> &\n\tPartial<Omit<JSXBase.SVGAttributes<SVGSVGElement>, 'class' | keyof JSXBase.HTMLAttributes<HTMLDivElement>>>;\n\n/**\n * Single-Root BEM wrapper for all Skeleton Functional Components.\n *\n * Responsibilities:\n * - Renders exactly one root node — a `<div>` unless `component` names another element —\n * enforcing the Single-Root FC rule.\n * - Accepts a `block` name and typed `modifiers` from `KoliBriComponentsBemSchema`.\n * - Calls `bem.forBlock(block)(modifiers)` internally to generate the class string.\n * - Merges the result with the optional `class` prop.\n * - Forwards all remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) onto the root\n * node — legacy functional components spread these onto their root, and internal\n * consumers (form, form-field-msg, toast-item) rely on that passthrough.\n *\n * Usage:\n * ```tsx\n * export const LinkFC: FC<LinkFCProps> = ({ ..., class: hostClass, disabled }, children) => (\n * <BemRootNodeFC\n * block=\"kol-link\"\n * modifiers={{ disabled, 'external-link': isExternal }}\n * class={hostClass}\n * >\n * <a class={linkBem('interactive-element')}>…</a>\n * </BemRootNodeFC>\n * );\n * ```\n */\nexport const BemRootNodeFC = <TBlock extends keyof KoliBriComponentsBemSchema>(\n\t{ block, modifiers, class: hostClass, component: Component = 'div', ...rest }: BemRootNodeFCProps<TBlock>,\n\tchildren: FCChildren,\n) => {\n\tconst blockBem = getBlockBem(block);\n\t// The attributes are typed for a `div` plus the SVG attributes; `abbr`, `fieldset` and `label` accept the same global attributes, `fieldset` additionally `disabled`.\n\tconst Root = Component as 'div';\n\treturn (\n\t\t<Root class={clsx(blockBem(modifiers), hostClass)} {...rest}>\n\t\t\t{children}\n\t\t</Root>\n\t);\n};\n"],"names":["__rest","blockBem","getBlockBem","h","clsx"],"mappings":";;;;;;;;;;MAiEa,aAAa,GAAG,CAC5B,EAAyG,EACzG,QAAoB,KACjB;AAFH,IAAA,IAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAA,GAAA,EAAuC,EAAlC,IAAI,GAAAA,gBAAA,CAAA,EAAA,EAA3E,4CAA6E,CAAF;AAG3E,IAAA,MAAMC,UAAQ,GAAGC,oBAAW,CAAC,KAAK,CAAC;IAEnC,MAAM,IAAI,GAAG,SAAkB;AAC/B,IAAA,QACCC,QAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAEC,SAAI,CAACH,UAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAA,EAAM,IAAI,CACzD,EAAA,QAAQ,CACH;AAET;;;;"}
1
+ {"version":3,"file":"component-CESKZB76.js","sources":["src/internal/functional-components/bem-root-node/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\n\nimport type { KoliBriComponentsBemSchema } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { BlockModifiers } from './block-bem';\nimport { getBlockBem } from './block-bem';\n\ntype FCChildren = Parameters<FC>[1];\n\ntype BemRootNodeFCProps<TBlock extends keyof KoliBriComponentsBemSchema> = {\n\t/**\n\t * BEM block name — must be a key registered in `KoliBriComponentsBemSchema`.\n\t * Constrains `modifiers` to the exact modifier set defined in `bem-registry.ts`.\n\t */\n\tblock: TBlock;\n\t/**\n\t * BEM block modifiers. Keys are validated against the schema (e.g. `'disabled'`, `'inline'`).\n\t * No `kol-link--` prefix needed — typed-bem adds it automatically.\n\t */\n\tmodifiers?: BlockModifiers<TBlock>;\n\t/**\n\t * Additional classes forwarded 1:1 from the FC tag onto the root node.\n\t * Typically the `class` prop received by the surrounding Functional Component\n\t * (i.e. the `class` attribute set by a parent component).\n\t */\n\tclass?: JSXBase.HTMLAttributes<HTMLElement>['class'];\n\t/**\n\t * Element of the root node, `div` by default. `abbr` is the abbreviation itself, `fieldset` groups\n\t * the options of a radio group, `label` wraps the native control of a checkbox or radio, `svg` is\n\t * the root of a graphic.\n\t */\n\tcomponent?: 'abbr' | 'div' | 'fieldset' | 'label' | 'svg';\n\t/** Native `disabled` attribute; only a `fieldset` root supports it. */\n\tdisabled?: boolean;\n} & Partial<Omit<JSXBase.HTMLAttributes<HTMLDivElement>, 'class'>> &\n\tPartial<Omit<JSXBase.SVGAttributes<SVGSVGElement>, 'class' | keyof JSXBase.HTMLAttributes<HTMLDivElement>>>;\n\n/**\n * Single-Root BEM wrapper for all Skeleton Functional Components.\n *\n * Responsibilities:\n * - Renders exactly one root node — a `<div>` unless `component` names another element —\n * enforcing the Single-Root FC rule.\n * - Accepts a `block` name and typed `modifiers` from `KoliBriComponentsBemSchema`.\n * - Calls `bem.forBlock(block)(modifiers)` internally to generate the class string.\n * - Merges the result with the optional `class` prop.\n * - Forwards all remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) onto the root\n * node — legacy functional components spread these onto their root, and internal\n * consumers (form, form-field-msg, toast-item) rely on that passthrough.\n *\n * Usage:\n * ```tsx\n * export const LinkFC: FC<LinkFCProps> = ({ ..., class: hostClass, disabled }, children) => (\n * <BemRootNodeFC\n * block=\"kol-link\"\n * modifiers={{ disabled, 'external-link': isExternal }}\n * class={hostClass}\n * >\n * <a class={linkBem('interactive-element')}>…</a>\n * </BemRootNodeFC>\n * );\n * ```\n */\nexport const BemRootNodeFC = <TBlock extends keyof KoliBriComponentsBemSchema>(\n\t{ block, modifiers, class: hostClass, component: Component = 'div', ...rest }: BemRootNodeFCProps<TBlock>,\n\tchildren: FCChildren,\n) => {\n\tconst blockBem = getBlockBem(block);\n\t// The attributes are typed for a `div` plus the SVG attributes; `abbr`, `fieldset` and `label` accept the same global attributes, `fieldset` additionally `disabled`.\n\tconst Root = Component as 'div';\n\treturn (\n\t\t<Root class={clsx(blockBem(modifiers), hostClass)} {...rest}>\n\t\t\t{children}\n\t\t</Root>\n\t);\n};\n"],"names":["__rest","blockBem","getBlockBem","h","clsx"],"mappings":";;;;;;;;;;MAiEa,aAAa,GAAG,CAC5B,EAAyG,EACzG,QAAoB,KACjB;AAFH,IAAA,IAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAA,GAAA,EAAuC,EAAlC,IAAI,GAAAA,gBAAA,CAAA,EAAA,EAA3E,4CAA6E,CAAF;AAG3E,IAAA,MAAMC,UAAQ,GAAGC,oBAAW,CAAC,KAAK,CAAC;IAEnC,MAAM,IAAI,GAAG,SAAkB;AAC/B,IAAA,QACCC,QAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAEC,SAAI,CAACH,UAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAA,EAAM,IAAI,CACzD,EAAA,QAAQ,CACH;AAET;;;;"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-qcrGfEY6.js');
6
+ var index = require('./index-CjTDipy9.js');
7
7
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
8
8
 
9
9
  const clickButtonBem = bemRegistry.bem.forBlock('kol-click-button');
@@ -12,6 +12,6 @@ const BEM_CLASS_CLICK_BUTTON__LABEL = clickButtonBem('label');
12
12
  const ClickButtonFC = ({ label, handleClick, refButton }) => (index.h("button", { class: BEM_CLASS_CLICK_BUTTON, ref: refButton, onClick: handleClick, onKeyDown: (event) => event.preventDefault() }, index.h("span", { class: BEM_CLASS_CLICK_BUTTON__LABEL }, label)));
13
13
 
14
14
  exports.ClickButtonFC = ClickButtonFC;
15
- //# sourceMappingURL=component-D33lYKYT.js.map
15
+ //# sourceMappingURL=component-CQRRF1jV.js.map
16
16
 
17
- //# sourceMappingURL=component-D33lYKYT.js.map
17
+ //# sourceMappingURL=component-CQRRF1jV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-D33lYKYT.js","sources":["src/internal/functional-components/click-button/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { ClickButtonApi } from './api';\n\nconst clickButtonBem = bem.forBlock('kol-click-button');\nconst BEM_CLASS_CLICK_BUTTON = clickButtonBem();\nconst BEM_CLASS_CLICK_BUTTON__LABEL = clickButtonBem('label');\n\nexport const ClickButtonFC: FC<FunctionalComponentProps<ClickButtonApi>> = ({ label, handleClick, refButton }) => (\n\t<button class={BEM_CLASS_CLICK_BUTTON} ref={refButton} onClick={handleClick} onKeyDown={(event) => event.preventDefault()}>\n\t\t<span class={BEM_CLASS_CLICK_BUTTON__LABEL}>{label}</span>\n\t</button>\n);\n"],"names":["bem","h"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,GAAGA,eAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AACvD,MAAM,sBAAsB,GAAG,cAAc,EAAE;AAC/C,MAAM,6BAA6B,GAAG,cAAc,CAAC,OAAO,CAAC;AAEtD,MAAM,aAAa,GAAiD,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAC5GC,oBAAQ,KAAK,EAAE,sBAAsB,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,EAAA,EACxHA,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,6BAA6B,EAAA,EAAG,KAAK,CAAQ,CAClD;;;;"}
1
+ {"version":3,"file":"component-CQRRF1jV.js","sources":["src/internal/functional-components/click-button/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { ClickButtonApi } from './api';\n\nconst clickButtonBem = bem.forBlock('kol-click-button');\nconst BEM_CLASS_CLICK_BUTTON = clickButtonBem();\nconst BEM_CLASS_CLICK_BUTTON__LABEL = clickButtonBem('label');\n\nexport const ClickButtonFC: FC<FunctionalComponentProps<ClickButtonApi>> = ({ label, handleClick, refButton }) => (\n\t<button class={BEM_CLASS_CLICK_BUTTON} ref={refButton} onClick={handleClick} onKeyDown={(event) => event.preventDefault()}>\n\t\t<span class={BEM_CLASS_CLICK_BUTTON__LABEL}>{label}</span>\n\t</button>\n);\n"],"names":["bem","h"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,GAAGA,eAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AACvD,MAAM,sBAAsB,GAAG,cAAc,EAAE;AAC/C,MAAM,6BAA6B,GAAG,cAAc,CAAC,OAAO,CAAC;AAEtD,MAAM,aAAa,GAAiD,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAC5GC,oBAAQ,KAAK,EAAE,sBAAsB,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,EAAA,EACxHA,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,6BAA6B,EAAA,EAAG,KAAK,CAAQ,CAClD;;;;"}
@@ -3,10 +3,10 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-qcrGfEY6.js');
6
+ var index = require('./index-CjTDipy9.js');
7
7
  var i18n = require('./i18n-UGaB-Dwg.js');
8
8
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
9
- var component = require('./component-BHDnSaCH.js');
9
+ var component = require('./component-CESKZB76.js');
10
10
 
11
11
  const spinBem = bemRegistry.bem.forBlock('kol-spin');
12
12
  const BEM_CLASS_SPIN__LOADER = spinBem('loader');
@@ -27,6 +27,6 @@ const SpinFC = (props) => {
27
27
  };
28
28
 
29
29
  exports.SpinFC = SpinFC;
30
- //# sourceMappingURL=component-DaAVlb5U.js.map
30
+ //# sourceMappingURL=component-D7IXFVHR.js.map
31
31
 
32
- //# sourceMappingURL=component-DaAVlb5U.js.map
32
+ //# sourceMappingURL=component-D7IXFVHR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-DaAVlb5U.js","sources":["src/internal/functional-components/spin/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { Fragment, h } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport type { SpinVariantType } from '../../props';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { SpinApi } from './api';\n\nconst spinBem = bem.forBlock('kol-spin');\nconst BEM_CLASS_SPIN__LOADER = spinBem('loader');\nconst DOT_ELEMENTS = ['1', '2', '3', 'neutral'] as const;\n\nfunction renderSpinVariant(variant: SpinVariantType): unknown {\n\tswitch (variant) {\n\t\tcase 'cycle':\n\t\t\treturn <span class={BEM_CLASS_SPIN__LOADER}></span>;\n\t\tcase 'none':\n\t\t\treturn <slot name=\"expert\"></slot>;\n\t\tdefault:\n\t\t\treturn DOT_ELEMENTS.map((element) => <span class={spinBem('spinner-element', { [element]: true })}></span>);\n\t}\n}\n\nexport const SpinFC: FC<FunctionalComponentProps<SpinApi>> = (props) => {\n\tconst { show, label, variant } = props;\n\n\treturn (\n\t\t<BemRootNodeFC block=\"kol-spin\">\n\t\t\t{show ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<span class={spinBem('spinner', { [variant]: true })}>{renderSpinVariant(variant)}</span>\n\t\t\t\t\t<span aria-busy=\"true\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t\t{label || translate('kol-action-running')}\n\t\t\t\t\t</span>\n\t\t\t\t</Fragment>\n\t\t\t) : (\n\t\t\t\t<span aria-busy=\"false\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t{label || translate('kol-action-done')}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["bem","h","BemRootNodeFC","Fragment","translate"],"mappings":";;;;;;;;;;AAUA,MAAM,OAAO,GAAGA,eAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAU;AAExD,SAAS,iBAAiB,CAAC,OAAwB,EAAA;IAClD,QAAQ,OAAO;AACd,QAAA,KAAK,OAAO;YACX,OAAOC,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,sBAAsB,GAAS;AACpD,QAAA,KAAK,MAAM;YACV,OAAOA,OAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,GAAQ;AACnC,QAAA;AACC,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,KAAKA,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAS,CAAA,CAAC;;AAE9G;AAEa,MAAA,MAAM,GAA0C,CAAC,KAAK,KAAI;IACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK;IAEtC,QACCA,OAAA,CAACC,uBAAa,EAAA,EAAC,KAAK,EAAC,UAAU,EAC7B,EAAA,IAAI,IACJD,QAACE,cAAQ,EAAA,IAAA,EACRF,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAA,EAAG,iBAAiB,CAAC,OAAO,CAAC,CAAQ,EACzFA,OAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,MAAM,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EACzD,KAAK,IAAIG,cAAS,CAAC,oBAAoB,CAAC,CACnC,CACG,KAEXH,OAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,OAAO,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EAC1D,KAAK,IAAIG,cAAS,CAAC,iBAAiB,CAAC,CAChC,CACP,CACc;AAElB;;;;"}
1
+ {"version":3,"file":"component-D7IXFVHR.js","sources":["src/internal/functional-components/spin/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { Fragment, h } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport type { SpinVariantType } from '../../props';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { SpinApi } from './api';\n\nconst spinBem = bem.forBlock('kol-spin');\nconst BEM_CLASS_SPIN__LOADER = spinBem('loader');\nconst DOT_ELEMENTS = ['1', '2', '3', 'neutral'] as const;\n\nfunction renderSpinVariant(variant: SpinVariantType): unknown {\n\tswitch (variant) {\n\t\tcase 'cycle':\n\t\t\treturn <span class={BEM_CLASS_SPIN__LOADER}></span>;\n\t\tcase 'none':\n\t\t\treturn <slot name=\"expert\"></slot>;\n\t\tdefault:\n\t\t\treturn DOT_ELEMENTS.map((element) => <span class={spinBem('spinner-element', { [element]: true })}></span>);\n\t}\n}\n\nexport const SpinFC: FC<FunctionalComponentProps<SpinApi>> = (props) => {\n\tconst { show, label, variant } = props;\n\n\treturn (\n\t\t<BemRootNodeFC block=\"kol-spin\">\n\t\t\t{show ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<span class={spinBem('spinner', { [variant]: true })}>{renderSpinVariant(variant)}</span>\n\t\t\t\t\t<span aria-busy=\"true\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t\t{label || translate('kol-action-running')}\n\t\t\t\t\t</span>\n\t\t\t\t</Fragment>\n\t\t\t) : (\n\t\t\t\t<span aria-busy=\"false\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t{label || translate('kol-action-done')}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["bem","h","BemRootNodeFC","Fragment","translate"],"mappings":";;;;;;;;;;AAUA,MAAM,OAAO,GAAGA,eAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAU;AAExD,SAAS,iBAAiB,CAAC,OAAwB,EAAA;IAClD,QAAQ,OAAO;AACd,QAAA,KAAK,OAAO;YACX,OAAOC,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,sBAAsB,GAAS;AACpD,QAAA,KAAK,MAAM;YACV,OAAOA,OAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,GAAQ;AACnC,QAAA;AACC,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,KAAKA,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAS,CAAA,CAAC;;AAE9G;AAEa,MAAA,MAAM,GAA0C,CAAC,KAAK,KAAI;IACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK;IAEtC,QACCA,OAAA,CAACC,uBAAa,EAAA,EAAC,KAAK,EAAC,UAAU,EAC7B,EAAA,IAAI,IACJD,QAACE,cAAQ,EAAA,IAAA,EACRF,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAA,EAAG,iBAAiB,CAAC,OAAO,CAAC,CAAQ,EACzFA,OAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,MAAM,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EACzD,KAAK,IAAIG,cAAS,CAAC,oBAAoB,CAAC,CACnC,CACG,KAEXH,OAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,OAAO,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EAC1D,KAAK,IAAIG,cAAS,CAAC,iBAAiB,CAAC,CAChC,CACP,CACc;AAElB;;;;"}
@@ -4,14 +4,14 @@
4
4
  'use strict';
5
5
 
6
6
  var tslib_es6 = require('./tslib.es6-Cm0ytgPY.js');
7
- var index = require('./index-qcrGfEY6.js');
8
- var Heading = require('./Heading-d30Feghg.js');
7
+ var index = require('./index-CjTDipy9.js');
8
+ var Heading = require('./Heading-CFe7VL6f.js');
9
9
  var i18n = require('./i18n-UGaB-Dwg.js');
10
10
  var bemRegistry = require('./bem-registry-BDVdt6ar.js');
11
11
  var clsx = require('./clsx-Bm_HQUnh.js');
12
- var component$2 = require('./component-BHDnSaCH.js');
13
- var component$1 = require('./component-BIz_gAas.js');
14
- var component = require('./component-BairlFHi.js');
12
+ var component$2 = require('./component-CESKZB76.js');
13
+ var component$1 = require('./component-B1t_MP4V.js');
14
+ var component = require('./component-BGdViN9u.js');
15
15
 
16
16
  const alertBem$1 = bemRegistry.bem.forBlock('kol-alert');
17
17
  const BEM_CLASS_ALERT__ICON = alertBem$1('icon');
@@ -62,6 +62,6 @@ const AlertFC = (props, children) => {
62
62
  };
63
63
 
64
64
  exports.AlertFC = AlertFC;
65
- //# sourceMappingURL=component-DITtC2F9.js.map
65
+ //# sourceMappingURL=component-Dzx6SM5K.js.map
66
66
 
67
- //# sourceMappingURL=component-DITtC2F9.js.map
67
+ //# sourceMappingURL=component-Dzx6SM5K.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-DITtC2F9.js","sources":["src/internal/functional-components/alert/icon.tsx","src/internal/functional-components/alert/component.tsx"],"sourcesContent":["import { Fragment, h, type FunctionalComponent as FC } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport type { AlertType } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { IconFC } from '../icon/component';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__ICON = alertBem('icon');\n\n/**\n * The icon uses a visually-hidden span instead of an aria-label because the Alert might be referenced as content for aria-describedby.\n * In this scenario, Firefox with NVDA does not properly read the aria-label, so the visually-hidden span ensures correct screen reader behavior.\n * @see https://github.com/public-ui/kolibri/issues/7119\n */\nconst ALERT_ICON_CONFIG: Record<AlertType | 'default', { label: string; icon: string }> = {\n\terror: {\n\t\tlabel: translate('kol-error'),\n\t\ticon: 'kolicon-alert-error',\n\t},\n\tinfo: {\n\t\tlabel: translate('kol-info'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n\twarning: {\n\t\tlabel: translate('kol-warning'),\n\t\ticon: 'kolicon-alert-warning',\n\t},\n\tsuccess: {\n\t\tlabel: translate('kol-success'),\n\t\ticon: 'kolicon-alert-success',\n\t},\n\tdefault: {\n\t\tlabel: translate('kol-message'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n};\n\nexport const AlertIconFC: FC<{ type?: AlertType }> = ({ type = 'default' }) => {\n\tconst config = ALERT_ICON_CONFIG[type || 'default'];\n\treturn (\n\t\t<>\n\t\t\t<span class=\"visually-hidden\">{config.label}</span>\n\t\t\t<IconFC class={BEM_CLASS_ALERT__ICON} label=\"\" icons={config.icon} />\n\t\t</>\n\t);\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { getHeadlineTag } from '../../../functional-components/Heading/Heading';\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { AlertApi } from './api';\nimport { AlertIconFC } from './icon';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__CLOSER = alertBem('closer');\nconst BEM_CLASS_ALERT__CONTENT = alertBem('content');\n\n/**\n * The closer is a plain button: no role override, and an unset tabindex must not render as\n * `tabindex=\"0\"` — buttons are natively tabbable and the attribute would pin them into the tab\n * order. `kol-button` reaches the same undefined render props via `unsetRenderProp`.\n */\nconst UNSET_BUTTON_PROP = undefined as never;\n\n/**\n * Renders the alert as a single BEM root: icon, optional heading, optional closer button and the\n * content region.\n *\n * The closer is rendered as `ButtonFC` directly — its BEM root carries both `kol-button` and\n * `kol-alert__closer` on the same element, so theme styles that targeted the closer through a\n * descendant `.kol-button` (or `.kol-button--normal`) now target the compound selector instead.\n * The tooltip behavior for the closer (show on hover/focus) is composed by the web component,\n * which owns `refCloserButton`/`refCloserTooltip` — a plain functional component has no lifecycle\n * to sync the listeners in.\n *\n * All remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) are forwarded onto the root\n * node — internal consumers (form, form-field-msg, toast-item) rely on that passthrough.\n */\n/** The consumer's callbacks stay with the web component, which invokes them in its closer handler. */\nexport type AlertFCProps = Omit<FunctionalComponentProps<AlertApi>, 'on'>;\n\nexport const AlertFC: FC<AlertFCProps> = (props, children) => {\n\tconst {\n\t\talert,\n\t\tclass: classNames,\n\t\tcloserAriaDescriptionId,\n\t\thandleCloserClick,\n\t\thasCloser,\n\t\theadingId,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloserButton,\n\t\trefCloserTooltip,\n\t\ttype,\n\t\tvariant,\n\t\t...other\n\t} = props;\n\n\tconst translateCloseAlert = translate('kol-close-alert');\n\tconst HeadlineTag = getHeadlineTag(level);\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-alert\"\n\t\t\tclass={classNames}\n\t\t\tmodifiers={{\n\t\t\t\thasCloser: hasCloser === true,\n\t\t\t\t[`type-${type}`]: true,\n\t\t\t\t[`variant-${variant}`]: true,\n\t\t\t}}\n\t\t\trole={alert ? 'alert' : undefined}\n\t\t\t{...other}\n\t\t>\n\t\t\t<AlertIconFC type={type} />\n\n\t\t\t{label.length > 0 && (\n\t\t\t\t<HeadlineTag\n\t\t\t\t\tclass={clsx('kol-headline', `kol-headline--${HeadlineTag}`, alertBem('heading', { [`h${level}`]: true }), 'kol-headline--single')}\n\t\t\t\t\tid={headingId}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</HeadlineTag>\n\t\t\t)}\n\n\t\t\t{hasCloser && (\n\t\t\t\t<ButtonFC\n\t\t\t\t\taccessKey=\"\"\n\t\t\t\t\tariaControls=\"\"\n\t\t\t\t\tariaDescription={label.trim()}\n\t\t\t\t\tariaDescriptionId={closerAriaDescriptionId}\n\t\t\t\t\tariaExpanded={UNSET_BUTTON_PROP}\n\t\t\t\t\tariaHasPopup=\"\"\n\t\t\t\t\tariaSelected={UNSET_BUTTON_PROP}\n\t\t\t\t\tclass={clsx(BEM_CLASS_ALERT__CLOSER, 'kol-close-button')}\n\t\t\t\t\tcustomClass=\"\"\n\t\t\t\t\tdisabled={false}\n\t\t\t\t\thandleBlur={() => undefined}\n\t\t\t\t\thandleClick={handleCloserClick}\n\t\t\t\t\thandleFocus={() => undefined}\n\t\t\t\t\thandleMouseDown={() => undefined}\n\t\t\t\t\thideLabel\n\t\t\t\t\ticons={{\n\t\t\t\t\t\tleft: {\n\t\t\t\t\t\t\ticon: 'kolicon-cross',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tid=\"\"\n\t\t\t\t\tinline={false}\n\t\t\t\t\tlabel={translateCloseAlert}\n\t\t\t\t\tname=\"\"\n\t\t\t\t\ton={{}}\n\t\t\t\t\trefButton={refCloserButton}\n\t\t\t\t\trefTooltip={refCloserTooltip}\n\t\t\t\t\trole={UNSET_BUTTON_PROP}\n\t\t\t\t\tshortKey=\"\"\n\t\t\t\t\ttabIndex={UNSET_BUTTON_PROP}\n\t\t\t\t\ttooltipAlign=\"left\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant={['normal']}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div aria-describedby={label.length > 0 ? headingId : undefined} class={BEM_CLASS_ALERT__CONTENT}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["alertBem","bem","translate","h","Fragment","IconFC","__rest","getHeadlineTag","BemRootNodeFC","clsx","ButtonFC"],"mappings":"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"}
1
+ {"version":3,"file":"component-Dzx6SM5K.js","sources":["src/internal/functional-components/alert/icon.tsx","src/internal/functional-components/alert/component.tsx"],"sourcesContent":["import { Fragment, h, type FunctionalComponent as FC } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport type { AlertType } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { IconFC } from '../icon/component';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__ICON = alertBem('icon');\n\n/**\n * The icon uses a visually-hidden span instead of an aria-label because the Alert might be referenced as content for aria-describedby.\n * In this scenario, Firefox with NVDA does not properly read the aria-label, so the visually-hidden span ensures correct screen reader behavior.\n * @see https://github.com/public-ui/kolibri/issues/7119\n */\nconst ALERT_ICON_CONFIG: Record<AlertType | 'default', { label: string; icon: string }> = {\n\terror: {\n\t\tlabel: translate('kol-error'),\n\t\ticon: 'kolicon-alert-error',\n\t},\n\tinfo: {\n\t\tlabel: translate('kol-info'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n\twarning: {\n\t\tlabel: translate('kol-warning'),\n\t\ticon: 'kolicon-alert-warning',\n\t},\n\tsuccess: {\n\t\tlabel: translate('kol-success'),\n\t\ticon: 'kolicon-alert-success',\n\t},\n\tdefault: {\n\t\tlabel: translate('kol-message'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n};\n\nexport const AlertIconFC: FC<{ type?: AlertType }> = ({ type = 'default' }) => {\n\tconst config = ALERT_ICON_CONFIG[type || 'default'];\n\treturn (\n\t\t<>\n\t\t\t<span class=\"visually-hidden\">{config.label}</span>\n\t\t\t<IconFC class={BEM_CLASS_ALERT__ICON} label=\"\" icons={config.icon} />\n\t\t</>\n\t);\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { getHeadlineTag } from '../../../functional-components/Heading/Heading';\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { AlertApi } from './api';\nimport { AlertIconFC } from './icon';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__CLOSER = alertBem('closer');\nconst BEM_CLASS_ALERT__CONTENT = alertBem('content');\n\n/**\n * The closer is a plain button: no role override, and an unset tabindex must not render as\n * `tabindex=\"0\"` — buttons are natively tabbable and the attribute would pin them into the tab\n * order. `kol-button` reaches the same undefined render props via `unsetRenderProp`.\n */\nconst UNSET_BUTTON_PROP = undefined as never;\n\n/**\n * Renders the alert as a single BEM root: icon, optional heading, optional closer button and the\n * content region.\n *\n * The closer is rendered as `ButtonFC` directly — its BEM root carries both `kol-button` and\n * `kol-alert__closer` on the same element, so theme styles that targeted the closer through a\n * descendant `.kol-button` (or `.kol-button--normal`) now target the compound selector instead.\n * The tooltip behavior for the closer (show on hover/focus) is composed by the web component,\n * which owns `refCloserButton`/`refCloserTooltip` — a plain functional component has no lifecycle\n * to sync the listeners in.\n *\n * All remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) are forwarded onto the root\n * node — internal consumers (form, form-field-msg, toast-item) rely on that passthrough.\n */\n/** The consumer's callbacks stay with the web component, which invokes them in its closer handler. */\nexport type AlertFCProps = Omit<FunctionalComponentProps<AlertApi>, 'on'>;\n\nexport const AlertFC: FC<AlertFCProps> = (props, children) => {\n\tconst {\n\t\talert,\n\t\tclass: classNames,\n\t\tcloserAriaDescriptionId,\n\t\thandleCloserClick,\n\t\thasCloser,\n\t\theadingId,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloserButton,\n\t\trefCloserTooltip,\n\t\ttype,\n\t\tvariant,\n\t\t...other\n\t} = props;\n\n\tconst translateCloseAlert = translate('kol-close-alert');\n\tconst HeadlineTag = getHeadlineTag(level);\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-alert\"\n\t\t\tclass={classNames}\n\t\t\tmodifiers={{\n\t\t\t\thasCloser: hasCloser === true,\n\t\t\t\t[`type-${type}`]: true,\n\t\t\t\t[`variant-${variant}`]: true,\n\t\t\t}}\n\t\t\trole={alert ? 'alert' : undefined}\n\t\t\t{...other}\n\t\t>\n\t\t\t<AlertIconFC type={type} />\n\n\t\t\t{label.length > 0 && (\n\t\t\t\t<HeadlineTag\n\t\t\t\t\tclass={clsx('kol-headline', `kol-headline--${HeadlineTag}`, alertBem('heading', { [`h${level}`]: true }), 'kol-headline--single')}\n\t\t\t\t\tid={headingId}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</HeadlineTag>\n\t\t\t)}\n\n\t\t\t{hasCloser && (\n\t\t\t\t<ButtonFC\n\t\t\t\t\taccessKey=\"\"\n\t\t\t\t\tariaControls=\"\"\n\t\t\t\t\tariaDescription={label.trim()}\n\t\t\t\t\tariaDescriptionId={closerAriaDescriptionId}\n\t\t\t\t\tariaExpanded={UNSET_BUTTON_PROP}\n\t\t\t\t\tariaHasPopup=\"\"\n\t\t\t\t\tariaSelected={UNSET_BUTTON_PROP}\n\t\t\t\t\tclass={clsx(BEM_CLASS_ALERT__CLOSER, 'kol-close-button')}\n\t\t\t\t\tcustomClass=\"\"\n\t\t\t\t\tdisabled={false}\n\t\t\t\t\thandleBlur={() => undefined}\n\t\t\t\t\thandleClick={handleCloserClick}\n\t\t\t\t\thandleFocus={() => undefined}\n\t\t\t\t\thandleMouseDown={() => undefined}\n\t\t\t\t\thideLabel\n\t\t\t\t\ticons={{\n\t\t\t\t\t\tleft: {\n\t\t\t\t\t\t\ticon: 'kolicon-cross',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tid=\"\"\n\t\t\t\t\tinline={false}\n\t\t\t\t\tlabel={translateCloseAlert}\n\t\t\t\t\tname=\"\"\n\t\t\t\t\ton={{}}\n\t\t\t\t\trefButton={refCloserButton}\n\t\t\t\t\trefTooltip={refCloserTooltip}\n\t\t\t\t\trole={UNSET_BUTTON_PROP}\n\t\t\t\t\tshortKey=\"\"\n\t\t\t\t\ttabIndex={UNSET_BUTTON_PROP}\n\t\t\t\t\ttooltipAlign=\"left\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant={['normal']}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div aria-describedby={label.length > 0 ? headingId : undefined} class={BEM_CLASS_ALERT__CONTENT}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["alertBem","bem","translate","h","Fragment","IconFC","__rest","getHeadlineTag","BemRootNodeFC","clsx","ButtonFC"],"mappings":"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"}