bromcom-ui-next 0.1.29 → 0.1.31

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 (618) hide show
  1. package/dist/bromcom-ui/bcm-accordion-group.entry.esm.js.map +1 -1
  2. package/dist/bromcom-ui/bcm-accordion.entry.esm.js.map +1 -1
  3. package/dist/bromcom-ui/bcm-alert.entry.esm.js.map +1 -1
  4. package/dist/bromcom-ui/bcm-avatar.entry.esm.js.map +1 -1
  5. package/dist/bromcom-ui/bcm-badge.entry.esm.js.map +1 -1
  6. package/dist/bromcom-ui/bcm-basic-badge.entry.esm.js.map +1 -1
  7. package/dist/bromcom-ui/bcm-button-group.entry.esm.js.map +1 -1
  8. package/dist/bromcom-ui/bcm-button.entry.esm.js.map +1 -0
  9. package/dist/bromcom-ui/bcm-checkbox.entry.esm.js.map +1 -1
  10. package/dist/bromcom-ui/bcm-chip.entry.esm.js.map +1 -1
  11. package/dist/bromcom-ui/bcm-divider.entry.esm.js.map +1 -1
  12. package/dist/bromcom-ui/bcm-drawer.entry.esm.js.map +1 -0
  13. package/dist/bromcom-ui/bcm-dropdown-item.entry.esm.js.map +1 -1
  14. package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -1
  15. package/dist/bromcom-ui/bcm-file-upload.entry.esm.js.map +1 -0
  16. package/dist/bromcom-ui/bcm-input.entry.esm.js.map +1 -1
  17. package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +1 -1
  18. package/dist/bromcom-ui/bcm-modal.entry.esm.js.map +1 -0
  19. package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +1 -1
  20. package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -1
  21. package/dist/bromcom-ui/bcm-radio-group.entry.esm.js.map +1 -1
  22. package/dist/bromcom-ui/bcm-radio.entry.esm.js.map +1 -1
  23. package/dist/bromcom-ui/bcm-segment.bcm-segmented-picker.entry.esm.js.map +1 -0
  24. package/dist/bromcom-ui/bcm-shortcut.entry.esm.js.map +1 -1
  25. package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
  26. package/dist/bromcom-ui/bcm-tab.entry.esm.js.map +1 -0
  27. package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
  28. package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -1
  29. package/dist/bromcom-ui/bcm-textarea.entry.esm.js.map +1 -1
  30. package/dist/bromcom-ui/bcm-tooltip.entry.esm.js.map +1 -1
  31. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  32. package/dist/bromcom-ui/bromcom-ui.esm.js.map +1 -1
  33. package/dist/bromcom-ui/global/global.js +33 -30
  34. package/dist/bromcom-ui/p-010219cf.entry.js +2 -0
  35. package/dist/bromcom-ui/p-010219cf.entry.js.map +1 -0
  36. package/dist/bromcom-ui/p-01a4e00b.entry.js +2 -0
  37. package/dist/bromcom-ui/p-01a4e00b.entry.js.map +1 -0
  38. package/dist/bromcom-ui/p-14c63d61.entry.js +2 -0
  39. package/dist/bromcom-ui/p-14c63d61.entry.js.map +1 -0
  40. package/dist/bromcom-ui/p-20a94dec.entry.js +2 -0
  41. package/dist/bromcom-ui/p-20a94dec.entry.js.map +1 -0
  42. package/dist/bromcom-ui/p-398620c2.entry.js +2 -0
  43. package/dist/bromcom-ui/p-398620c2.entry.js.map +1 -0
  44. package/dist/bromcom-ui/p-3b898f90.entry.js +2 -0
  45. package/dist/bromcom-ui/p-3b898f90.entry.js.map +1 -0
  46. package/dist/bromcom-ui/p-43c85c84.entry.js +2 -0
  47. package/dist/bromcom-ui/p-43c85c84.entry.js.map +1 -0
  48. package/dist/bromcom-ui/p-4e6661a5.entry.js +2 -0
  49. package/dist/bromcom-ui/p-4e6661a5.entry.js.map +1 -0
  50. package/dist/bromcom-ui/p-52bb0cdc.entry.js +2 -0
  51. package/dist/bromcom-ui/p-52bb0cdc.entry.js.map +1 -0
  52. package/dist/bromcom-ui/p-61c1c1c8.entry.js +2 -0
  53. package/dist/bromcom-ui/p-61c1c1c8.entry.js.map +1 -0
  54. package/dist/bromcom-ui/p-82e4c5f2.entry.js +2 -0
  55. package/dist/bromcom-ui/p-82e4c5f2.entry.js.map +1 -0
  56. package/dist/bromcom-ui/p-86f85963.entry.js +2 -0
  57. package/dist/bromcom-ui/p-86f85963.entry.js.map +1 -0
  58. package/dist/bromcom-ui/p-9249c1d1.entry.js +2 -0
  59. package/dist/bromcom-ui/p-9249c1d1.entry.js.map +1 -0
  60. package/dist/bromcom-ui/p-B6Ppbs5O.js +3 -0
  61. package/dist/bromcom-ui/p-B6Ppbs5O.js.map +1 -0
  62. package/dist/bromcom-ui/p-BfTCfPZ1.js.map +1 -1
  63. package/dist/bromcom-ui/p-CEcVC0yX.js.map +1 -1
  64. package/dist/bromcom-ui/p-DBDSgIvP.js +2 -0
  65. package/dist/bromcom-ui/p-DBDSgIvP.js.map +1 -0
  66. package/dist/bromcom-ui/p-DaE0ZLar.js +2 -0
  67. package/dist/bromcom-ui/p-DaE0ZLar.js.map +1 -0
  68. package/dist/bromcom-ui/p-IBjzkjef.js.map +1 -1
  69. package/dist/bromcom-ui/p-a25d1cef.entry.js +2 -0
  70. package/dist/bromcom-ui/p-a25d1cef.entry.js.map +1 -0
  71. package/dist/bromcom-ui/p-a4cb2e79.entry.js +2 -0
  72. package/dist/bromcom-ui/p-a4cb2e79.entry.js.map +1 -0
  73. package/dist/bromcom-ui/p-a68925b4.entry.js +2 -0
  74. package/dist/bromcom-ui/p-a68925b4.entry.js.map +1 -0
  75. package/dist/bromcom-ui/p-a750186c.entry.js +2 -0
  76. package/dist/bromcom-ui/p-a750186c.entry.js.map +1 -0
  77. package/dist/bromcom-ui/p-ac768b56.entry.js +2 -0
  78. package/dist/bromcom-ui/p-ac768b56.entry.js.map +1 -0
  79. package/dist/bromcom-ui/p-b0b193e6.entry.js +2 -0
  80. package/dist/bromcom-ui/p-b0b193e6.entry.js.map +1 -0
  81. package/dist/bromcom-ui/p-bf4409ca.entry.js +2 -0
  82. package/dist/bromcom-ui/p-bf4409ca.entry.js.map +1 -0
  83. package/dist/bromcom-ui/p-c57fb29b.entry.js +2 -0
  84. package/dist/bromcom-ui/p-c57fb29b.entry.js.map +1 -0
  85. package/dist/bromcom-ui/{p-2480e468.entry.js → p-ccc310aa.entry.js} +2 -2
  86. package/dist/bromcom-ui/p-ccc310aa.entry.js.map +1 -0
  87. package/dist/bromcom-ui/p-d4ee962d.entry.js +2 -0
  88. package/dist/bromcom-ui/p-d4ee962d.entry.js.map +1 -0
  89. package/dist/bromcom-ui/p-e25a2f7a.entry.js +2 -0
  90. package/dist/bromcom-ui/p-e25a2f7a.entry.js.map +1 -0
  91. package/dist/bromcom-ui/p-e5b0b2ad.entry.js +2 -0
  92. package/dist/bromcom-ui/p-e5b0b2ad.entry.js.map +1 -0
  93. package/dist/bromcom-ui/p-e70d784d.entry.js +2 -0
  94. package/dist/bromcom-ui/p-e70d784d.entry.js.map +1 -0
  95. package/dist/bromcom-ui/p-e9fa3a22.entry.js +2 -0
  96. package/dist/bromcom-ui/p-e9fa3a22.entry.js.map +1 -0
  97. package/dist/bromcom-ui/p-ef281184.entry.js +2 -0
  98. package/dist/bromcom-ui/p-ef281184.entry.js.map +1 -0
  99. package/dist/bromcom-ui/{p-089edfdc.entry.js → p-fb6f616c.entry.js} +2 -2
  100. package/dist/bromcom-ui/p-fb6f616c.entry.js.map +1 -0
  101. package/dist/bromcom-ui/p-fd31c70c.entry.js +2 -0
  102. package/dist/bromcom-ui/p-fd31c70c.entry.js.map +1 -0
  103. package/dist/bromcom-ui/p-nf_HKsGq.js +2 -0
  104. package/dist/bromcom-ui/{p-CUvT12BL.js.map → p-nf_HKsGq.js.map} +1 -1
  105. package/dist/cjs/base-choice-control-EmA4JRjR.js +54 -0
  106. package/dist/cjs/base-choice-control-EmA4JRjR.js.map +1 -0
  107. package/dist/cjs/bcm-accordion-group.cjs.entry.js +21 -21
  108. package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
  109. package/dist/cjs/bcm-accordion.cjs.entry.js +75 -60
  110. package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
  111. package/dist/cjs/bcm-alert.cjs.entry.js +21 -23
  112. package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
  113. package/dist/cjs/bcm-avatar.cjs.entry.js +22 -14
  114. package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
  115. package/dist/cjs/bcm-badge.cjs.entry.js +114 -84
  116. package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
  117. package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -61
  118. package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
  119. package/dist/cjs/bcm-button-group.cjs.entry.js +36 -26
  120. package/dist/cjs/bcm-button-group.entry.cjs.js.map +1 -1
  121. package/dist/cjs/bcm-button.cjs.entry.js +338 -0
  122. package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
  123. package/dist/cjs/bcm-checkbox.cjs.entry.js +284 -176
  124. package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
  125. package/dist/cjs/bcm-chip.cjs.entry.js +38 -37
  126. package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
  127. package/dist/cjs/bcm-divider.cjs.entry.js +56 -58
  128. package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
  129. package/dist/cjs/bcm-drawer.cjs.entry.js +332 -0
  130. package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
  131. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +36 -35
  132. package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
  133. package/dist/cjs/bcm-dropdown.cjs.entry.js +17 -26
  134. package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
  135. package/dist/cjs/bcm-file-upload.cjs.entry.js +552 -0
  136. package/dist/cjs/bcm-file-upload.entry.cjs.js.map +1 -0
  137. package/dist/cjs/bcm-input.cjs.entry.js +250 -160
  138. package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
  139. package/dist/cjs/bcm-linked.cjs.entry.js +373 -264
  140. package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -1
  141. package/dist/cjs/bcm-modal.cjs.entry.js +360 -0
  142. package/dist/cjs/bcm-modal.entry.cjs.js.map +1 -0
  143. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +337 -206
  144. package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -1
  145. package/dist/cjs/bcm-popover.cjs.entry.js +416 -154
  146. package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -1
  147. package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -82
  148. package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
  149. package/dist/cjs/bcm-radio.cjs.entry.js +239 -108
  150. package/dist/cjs/bcm-radio.entry.cjs.js.map +1 -1
  151. package/dist/cjs/bcm-segment.bcm-segmented-picker.entry.cjs.js.map +1 -0
  152. package/dist/cjs/bcm-segment_2.cjs.entry.js +335 -0
  153. package/dist/cjs/bcm-shortcut.cjs.entry.js +5 -6
  154. package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
  155. package/dist/cjs/bcm-switch.cjs.entry.js +281 -150
  156. package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
  157. package/dist/cjs/bcm-tab.cjs.entry.js +44 -0
  158. package/dist/cjs/bcm-tab.entry.cjs.js.map +1 -0
  159. package/dist/cjs/bcm-tabs.cjs.entry.js +191 -239
  160. package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
  161. package/dist/cjs/bcm-text.cjs.entry.js +86 -87
  162. package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
  163. package/dist/cjs/bcm-textarea.cjs.entry.js +224 -156
  164. package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
  165. package/dist/cjs/bcm-tooltip.cjs.entry.js +386 -152
  166. package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -1
  167. package/dist/cjs/bromcom-ui.cjs.js +3 -5
  168. package/dist/cjs/bromcom-ui.cjs.js.map +1 -1
  169. package/dist/cjs/{floating-ui.dom-DyKmFgkP.js → floating-ui.dom-S9nP6zZt.js} +40 -23
  170. package/dist/cjs/floating-ui.dom-S9nP6zZt.js.map +1 -0
  171. package/dist/cjs/generate-id-CG_BkTJu.js.map +1 -1
  172. package/dist/cjs/{index-BtiU-G2W.js → index-1Qal-onT.js} +165 -398
  173. package/dist/cjs/index-1Qal-onT.js.map +1 -0
  174. package/dist/cjs/index-Bp6Dd2i1.js.map +1 -1
  175. package/dist/cjs/index.cjs.js +0 -2
  176. package/dist/cjs/loader.cjs.js +2 -4
  177. package/dist/cjs/tv-ngpIbGlG.js.map +1 -1
  178. package/dist/cjs/{validation-messages-BjfpSEWk.js → validation-messages-DieKlSG4.js} +6 -7
  179. package/dist/{esm/validation-messages-CUvT12BL.js.map → cjs/validation-messages-DieKlSG4.js.map} +1 -1
  180. package/dist/collection/collection-manifest.json +7 -8
  181. package/dist/collection/components/_shared/form/base-choice-control.js +90 -0
  182. package/dist/collection/components/_shared/form/base-choice-control.js.map +1 -0
  183. package/dist/collection/components/_shared/form/base-form-control.js +115 -0
  184. package/dist/collection/components/_shared/form/base-form-control.js.map +1 -0
  185. package/dist/collection/components/accordion/accordion.component.js +80 -63
  186. package/dist/collection/components/accordion/accordion.component.js.map +1 -1
  187. package/dist/collection/components/accordion/accordion.css +1 -1
  188. package/dist/collection/components/accordion-group/accordion-group.component.js +23 -21
  189. package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
  190. package/dist/collection/components/accordion-group/types.js.map +1 -1
  191. package/dist/collection/components/alert/alert.component.js +24 -26
  192. package/dist/collection/components/alert/alert.component.js.map +1 -1
  193. package/dist/collection/components/alert/alert.css +1 -1
  194. package/dist/collection/components/avatar/avatar.component.js +34 -26
  195. package/dist/collection/components/avatar/avatar.component.js.map +1 -1
  196. package/dist/collection/components/avatar/avatar.css +1 -1
  197. package/dist/collection/components/badge/badge.component.js +124 -94
  198. package/dist/collection/components/badge/badge.component.js.map +1 -1
  199. package/dist/collection/components/badge/badge.css +1 -1
  200. package/dist/collection/components/basic-badge/basic-badge.component.js +77 -65
  201. package/dist/collection/components/basic-badge/basic-badge.component.js.map +1 -1
  202. package/dist/collection/components/basic-badge/basic-badge.css +1 -1
  203. package/dist/collection/components/button/button.component.js +135 -114
  204. package/dist/collection/components/button/button.component.js.map +1 -1
  205. package/dist/collection/components/button/button.css +1 -1
  206. package/dist/collection/components/button-group/button-group.component.js +47 -36
  207. package/dist/collection/components/button-group/button-group.component.js.map +1 -1
  208. package/dist/collection/components/button-group/button-group.css +1 -1
  209. package/dist/collection/components/checkbox/checkbox.component.js +362 -243
  210. package/dist/collection/components/checkbox/checkbox.component.js.map +1 -1
  211. package/dist/collection/components/checkbox/checkbox.css +1 -1
  212. package/dist/collection/components/chip/chip.component.js +42 -41
  213. package/dist/collection/components/chip/chip.component.js.map +1 -1
  214. package/dist/collection/components/chip/chip.css +1 -1
  215. package/dist/collection/components/divider/divider.component.js +56 -58
  216. package/dist/collection/components/divider/divider.component.js.map +1 -1
  217. package/dist/collection/components/divider/divider.css +1 -1
  218. package/dist/collection/components/drawer/drawer.component.js +476 -155
  219. package/dist/collection/components/drawer/drawer.component.js.map +1 -1
  220. package/dist/collection/components/drawer/drawer.css +1 -1
  221. package/dist/collection/components/drawer/types.js.map +1 -1
  222. package/dist/collection/components/dropdown/dropdown.component.js +18 -27
  223. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
  224. package/dist/collection/components/dropdown-item/dropdown-item.component.js +41 -40
  225. package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
  226. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
  227. package/dist/collection/components/input/input.component.js +283 -198
  228. package/dist/collection/components/input/input.component.js.map +1 -1
  229. package/dist/collection/components/linked/linked.component.js +551 -355
  230. package/dist/collection/components/linked/linked.component.js.map +1 -1
  231. package/dist/collection/components/linked/linked.css +1 -1
  232. package/dist/collection/components/modal/modal.component.js +276 -149
  233. package/dist/collection/components/modal/modal.component.js.map +1 -1
  234. package/dist/collection/components/modal/modal.css +1 -1
  235. package/dist/collection/components/pop-confirm/pop-confirm.component.js +745 -340
  236. package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
  237. package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
  238. package/dist/collection/components/popover/popover.component.js +609 -196
  239. package/dist/collection/components/popover/popover.component.js.map +1 -1
  240. package/dist/collection/components/popover/popover.css +1 -1
  241. package/dist/collection/components/radio/radio.component.js +294 -118
  242. package/dist/collection/components/radio/radio.component.js.map +1 -1
  243. package/dist/collection/components/radio-group/radio-group.component.js +115 -93
  244. package/dist/collection/components/radio-group/radio-group.component.js.map +1 -1
  245. package/dist/collection/components/segmented-picker/segment.component.js +228 -0
  246. package/dist/collection/components/segmented-picker/segment.component.js.map +1 -0
  247. package/dist/collection/components/segmented-picker/segment.css +1 -0
  248. package/dist/collection/components/segmented-picker/segmented-picker.component.js +357 -142
  249. package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
  250. package/dist/collection/components/segmented-picker/segmented-picker.css +1 -1
  251. package/dist/collection/components/shortcut/shortcut.js +7 -8
  252. package/dist/collection/components/shortcut/shortcut.js.map +1 -1
  253. package/dist/collection/components/switch/switch.component.js +357 -287
  254. package/dist/collection/components/switch/switch.component.js.map +1 -1
  255. package/dist/collection/components/switch/switch.css +1 -1
  256. package/dist/collection/components/tabs/bcm-tab.css +1 -0
  257. package/dist/collection/components/tabs/bcm-tabs.css +1 -1
  258. package/dist/collection/components/tabs/tab.component.js +169 -0
  259. package/dist/collection/components/tabs/tab.component.js.map +1 -0
  260. package/dist/collection/components/tabs/tabs.component.js +224 -355
  261. package/dist/collection/components/tabs/tabs.component.js.map +1 -1
  262. package/dist/collection/components/text/text.component.js +90 -91
  263. package/dist/collection/components/text/text.component.js.map +1 -1
  264. package/dist/collection/components/textarea/textarea.component.js +252 -190
  265. package/dist/collection/components/textarea/textarea.component.js.map +1 -1
  266. package/dist/collection/components/tooltip/tooltip.component.js +605 -220
  267. package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
  268. package/dist/collection/components/tooltip/tooltip.css +1 -1
  269. package/dist/collection/components/upload/file-upload.component.js +905 -0
  270. package/dist/collection/components/upload/file-upload.component.js.map +1 -0
  271. package/dist/collection/components/upload/file-upload.css +1 -0
  272. package/dist/collection/global/global.js +33 -30
  273. package/dist/collection/utils/i18n.js +3 -4
  274. package/dist/collection/utils/i18n.js.map +1 -1
  275. package/dist/collection/utils/slot/check-slot-content.js +1 -2
  276. package/dist/collection/utils/slot/check-slot-content.js.map +1 -1
  277. package/dist/collection/utils/validation-messages.js +1 -1
  278. package/dist/collection/utils/validation-messages.js.map +1 -1
  279. package/dist/components/bcm-accordion-group.js +24 -20
  280. package/dist/components/bcm-accordion-group.js.map +1 -1
  281. package/dist/components/bcm-accordion.js +78 -59
  282. package/dist/components/bcm-accordion.js.map +1 -1
  283. package/dist/components/bcm-alert.js +1 -112
  284. package/dist/components/bcm-alert.js.map +1 -1
  285. package/dist/components/bcm-avatar.js +26 -14
  286. package/dist/components/bcm-avatar.js.map +1 -1
  287. package/dist/components/bcm-badge.js +1 -1
  288. package/dist/components/bcm-basic-badge.js +76 -60
  289. package/dist/components/bcm-basic-badge.js.map +1 -1
  290. package/dist/components/bcm-button-group.js +39 -25
  291. package/dist/components/bcm-button-group.js.map +1 -1
  292. package/dist/components/bcm-button.js +1 -1
  293. package/dist/components/bcm-checkbox.js +300 -186
  294. package/dist/components/bcm-checkbox.js.map +1 -1
  295. package/dist/components/bcm-chip.js +41 -36
  296. package/dist/components/bcm-chip.js.map +1 -1
  297. package/dist/components/bcm-divider.js +59 -57
  298. package/dist/components/bcm-divider.js.map +1 -1
  299. package/dist/components/bcm-drawer.js +276 -138
  300. package/dist/components/bcm-drawer.js.map +1 -1
  301. package/dist/components/bcm-dropdown-item.js +40 -35
  302. package/dist/components/bcm-dropdown-item.js.map +1 -1
  303. package/dist/components/bcm-dropdown.js +22 -28
  304. package/dist/components/bcm-dropdown.js.map +1 -1
  305. package/dist/components/{bcm-tabs-content.d.ts → bcm-file-upload.d.ts} +4 -4
  306. package/dist/components/bcm-file-upload.js +593 -0
  307. package/dist/components/bcm-file-upload.js.map +1 -0
  308. package/dist/components/bcm-input.js +248 -160
  309. package/dist/components/bcm-input.js.map +1 -1
  310. package/dist/components/bcm-linked.js +1 -1
  311. package/dist/components/bcm-modal.js +196 -119
  312. package/dist/components/bcm-modal.js.map +1 -1
  313. package/dist/components/bcm-pop-confirm.js +354 -215
  314. package/dist/components/bcm-pop-confirm.js.map +1 -1
  315. package/dist/components/bcm-popover.js +431 -157
  316. package/dist/components/bcm-popover.js.map +1 -1
  317. package/dist/components/bcm-radio-group.js +106 -81
  318. package/dist/components/bcm-radio-group.js.map +1 -1
  319. package/dist/components/bcm-radio.js +245 -110
  320. package/dist/components/bcm-radio.js.map +1 -1
  321. package/dist/components/{bcm-tabs-list.d.ts → bcm-segment.d.ts} +4 -4
  322. package/dist/components/bcm-segment.js +110 -0
  323. package/dist/components/bcm-segment.js.map +1 -0
  324. package/dist/components/bcm-segmented-picker.js +238 -117
  325. package/dist/components/bcm-segmented-picker.js.map +1 -1
  326. package/dist/components/bcm-shortcut.js +8 -5
  327. package/dist/components/bcm-shortcut.js.map +1 -1
  328. package/dist/components/bcm-switch.js +296 -158
  329. package/dist/components/bcm-switch.js.map +1 -1
  330. package/dist/components/{bcm-tabs-trigger.d.ts → bcm-tab.d.ts} +4 -4
  331. package/dist/components/bcm-tab.js +71 -0
  332. package/dist/components/bcm-tab.js.map +1 -0
  333. package/dist/components/bcm-tabs.js +200 -249
  334. package/dist/components/bcm-tabs.js.map +1 -1
  335. package/dist/components/bcm-text.js +89 -86
  336. package/dist/components/bcm-text.js.map +1 -1
  337. package/dist/components/bcm-textarea.js +222 -156
  338. package/dist/components/bcm-textarea.js.map +1 -1
  339. package/dist/components/bcm-tooltip.js +402 -154
  340. package/dist/components/bcm-tooltip.js.map +1 -1
  341. package/dist/components/index.js +140 -392
  342. package/dist/components/index.js.map +1 -1
  343. package/dist/components/p-5_TgtzQU.js +119 -0
  344. package/dist/components/p-5_TgtzQU.js.map +1 -0
  345. package/dist/components/p-BfTCfPZ1.js.map +1 -1
  346. package/dist/components/p-CEcVC0yX.js.map +1 -1
  347. package/dist/components/{p-CzcTU1ty.js → p-DBDSgIvP.js} +40 -23
  348. package/dist/components/p-DBDSgIvP.js.map +1 -0
  349. package/dist/components/p-IBjzkjef.js.map +1 -1
  350. package/dist/components/p-RlBWOSgL.js +179 -0
  351. package/dist/components/p-RlBWOSgL.js.map +1 -0
  352. package/dist/components/p-SERXqWcS.js +51 -0
  353. package/dist/components/p-SERXqWcS.js.map +1 -0
  354. package/dist/components/{p-CUvT12BL.js → p-nf_HKsGq.js} +6 -7
  355. package/dist/components/p-nf_HKsGq.js.map +1 -0
  356. package/dist/components/{p-DHONP_n4.js → p-xQIzBLsS.js} +112 -87
  357. package/dist/components/p-xQIzBLsS.js.map +1 -0
  358. package/dist/components/p-z9ESseGb.js +492 -0
  359. package/dist/components/p-z9ESseGb.js.map +1 -0
  360. package/dist/esm/base-choice-control-CKR8UdZ6.js +52 -0
  361. package/dist/esm/base-choice-control-CKR8UdZ6.js.map +1 -0
  362. package/dist/esm/bcm-accordion-group.entry.js +21 -21
  363. package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
  364. package/dist/esm/bcm-accordion.entry.js +75 -60
  365. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  366. package/dist/esm/bcm-alert.entry.js +21 -23
  367. package/dist/esm/bcm-alert.entry.js.map +1 -1
  368. package/dist/esm/bcm-avatar.entry.js +22 -14
  369. package/dist/esm/bcm-avatar.entry.js.map +1 -1
  370. package/dist/esm/bcm-badge.entry.js +114 -84
  371. package/dist/esm/bcm-badge.entry.js.map +1 -1
  372. package/dist/esm/bcm-basic-badge.entry.js +73 -61
  373. package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
  374. package/dist/esm/bcm-button-group.entry.js +36 -26
  375. package/dist/esm/bcm-button-group.entry.js.map +1 -1
  376. package/dist/esm/bcm-button.entry.js +336 -0
  377. package/dist/esm/bcm-button.entry.js.map +1 -0
  378. package/dist/esm/bcm-checkbox.entry.js +284 -176
  379. package/dist/esm/bcm-checkbox.entry.js.map +1 -1
  380. package/dist/esm/bcm-chip.entry.js +38 -37
  381. package/dist/esm/bcm-chip.entry.js.map +1 -1
  382. package/dist/esm/bcm-divider.entry.js +56 -58
  383. package/dist/esm/bcm-divider.entry.js.map +1 -1
  384. package/dist/esm/bcm-drawer.entry.js +330 -0
  385. package/dist/esm/bcm-drawer.entry.js.map +1 -0
  386. package/dist/esm/bcm-dropdown-item.entry.js +36 -35
  387. package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
  388. package/dist/esm/bcm-dropdown.entry.js +17 -26
  389. package/dist/esm/bcm-dropdown.entry.js.map +1 -1
  390. package/dist/esm/bcm-file-upload.entry.js +550 -0
  391. package/dist/esm/bcm-file-upload.entry.js.map +1 -0
  392. package/dist/esm/bcm-input.entry.js +250 -160
  393. package/dist/esm/bcm-input.entry.js.map +1 -1
  394. package/dist/esm/bcm-linked.entry.js +373 -264
  395. package/dist/esm/bcm-linked.entry.js.map +1 -1
  396. package/dist/esm/bcm-modal.entry.js +358 -0
  397. package/dist/esm/bcm-modal.entry.js.map +1 -0
  398. package/dist/esm/bcm-pop-confirm.entry.js +337 -206
  399. package/dist/esm/bcm-pop-confirm.entry.js.map +1 -1
  400. package/dist/esm/bcm-popover.entry.js +416 -154
  401. package/dist/esm/bcm-popover.entry.js.map +1 -1
  402. package/dist/esm/bcm-radio-group.entry.js +103 -82
  403. package/dist/esm/bcm-radio-group.entry.js.map +1 -1
  404. package/dist/esm/bcm-radio.entry.js +239 -108
  405. package/dist/esm/bcm-radio.entry.js.map +1 -1
  406. package/dist/esm/bcm-segment.bcm-segmented-picker.entry.js.map +1 -0
  407. package/dist/esm/bcm-segment_2.entry.js +332 -0
  408. package/dist/esm/bcm-shortcut.entry.js +5 -6
  409. package/dist/esm/bcm-shortcut.entry.js.map +1 -1
  410. package/dist/esm/bcm-switch.entry.js +281 -150
  411. package/dist/esm/bcm-switch.entry.js.map +1 -1
  412. package/dist/esm/bcm-tab.entry.js +42 -0
  413. package/dist/esm/bcm-tab.entry.js.map +1 -0
  414. package/dist/esm/bcm-tabs.entry.js +191 -239
  415. package/dist/esm/bcm-tabs.entry.js.map +1 -1
  416. package/dist/esm/bcm-text.entry.js +86 -87
  417. package/dist/esm/bcm-text.entry.js.map +1 -1
  418. package/dist/esm/bcm-textarea.entry.js +224 -156
  419. package/dist/esm/bcm-textarea.entry.js.map +1 -1
  420. package/dist/esm/bcm-tooltip.entry.js +386 -152
  421. package/dist/esm/bcm-tooltip.entry.js.map +1 -1
  422. package/dist/esm/bromcom-ui.js +4 -6
  423. package/dist/esm/bromcom-ui.js.map +1 -1
  424. package/dist/esm/{floating-ui.dom-DxMLMJ3r.js → floating-ui.dom-DBDSgIvP.js} +41 -24
  425. package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
  426. package/dist/esm/generate-id-IBjzkjef.js.map +1 -1
  427. package/dist/esm/{index-BuuGCw0z.js → index-B6Ppbs5O.js} +165 -398
  428. package/dist/esm/index-B6Ppbs5O.js.map +1 -0
  429. package/dist/esm/index-BfTCfPZ1.js.map +1 -1
  430. package/dist/esm/index.js +0 -2
  431. package/dist/esm/loader.js +3 -5
  432. package/dist/esm/tv-CEcVC0yX.js.map +1 -1
  433. package/dist/esm/{validation-messages-CUvT12BL.js → validation-messages-nf_HKsGq.js} +6 -7
  434. package/dist/{cjs/validation-messages-BjfpSEWk.js.map → esm/validation-messages-nf_HKsGq.js.map} +1 -1
  435. package/dist/types/components/_shared/form/base-choice-control.d.ts +15 -0
  436. package/dist/types/components/_shared/form/base-form-control.d.ts +11 -0
  437. package/dist/types/components/accordion-group/types.d.ts +2 -2
  438. package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
  439. package/dist/types/components/drawer/drawer.component.d.ts +143 -3
  440. package/dist/types/components/drawer/types.d.ts +1 -1
  441. package/dist/types/components/dropdown/dropdown.component.d.ts +0 -3
  442. package/dist/types/components/input/input.component.d.ts +5 -0
  443. package/dist/types/components/linked/linked.component.d.ts +152 -36
  444. package/dist/types/components/modal/modal.component.d.ts +121 -0
  445. package/dist/types/components/pop-confirm/pop-confirm.component.d.ts +263 -143
  446. package/dist/types/components/popover/popover.component.d.ts +94 -39
  447. package/dist/types/components/radio/radio.component.d.ts +21 -0
  448. package/dist/types/components/segmented-picker/segment.component.d.ts +42 -0
  449. package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +91 -24
  450. package/dist/types/components/switch/switch.component.d.ts +83 -43
  451. package/dist/types/components/tabs/tab.component.d.ts +33 -0
  452. package/dist/types/components/tabs/tabs.component.d.ts +51 -64
  453. package/dist/types/components/textarea/textarea.component.d.ts +5 -0
  454. package/dist/types/components/tooltip/tooltip.component.d.ts +147 -56
  455. package/dist/types/components/upload/file-upload.component.d.ts +107 -0
  456. package/dist/types/components.d.ts +2400 -742
  457. package/dist/types/stencil-public-runtime.d.ts +50 -3
  458. package/package.json +2 -2
  459. package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-modal.entry.esm.js.map +0 -1
  460. package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +0 -1
  461. package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +0 -1
  462. package/dist/bromcom-ui/bcm-tabs-content.entry.esm.js.map +0 -1
  463. package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +0 -1
  464. package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +0 -1
  465. package/dist/bromcom-ui/p-0101b4f2.entry.js +0 -2
  466. package/dist/bromcom-ui/p-0101b4f2.entry.js.map +0 -1
  467. package/dist/bromcom-ui/p-089edfdc.entry.js.map +0 -1
  468. package/dist/bromcom-ui/p-08bc93c5.entry.js +0 -2
  469. package/dist/bromcom-ui/p-08bc93c5.entry.js.map +0 -1
  470. package/dist/bromcom-ui/p-09be61c3.entry.js +0 -2
  471. package/dist/bromcom-ui/p-09be61c3.entry.js.map +0 -1
  472. package/dist/bromcom-ui/p-11851391.entry.js +0 -2
  473. package/dist/bromcom-ui/p-11851391.entry.js.map +0 -1
  474. package/dist/bromcom-ui/p-11f3e129.entry.js +0 -2
  475. package/dist/bromcom-ui/p-11f3e129.entry.js.map +0 -1
  476. package/dist/bromcom-ui/p-211ca6e0.entry.js +0 -2
  477. package/dist/bromcom-ui/p-211ca6e0.entry.js.map +0 -1
  478. package/dist/bromcom-ui/p-22edf049.entry.js +0 -2
  479. package/dist/bromcom-ui/p-22edf049.entry.js.map +0 -1
  480. package/dist/bromcom-ui/p-2480e468.entry.js.map +0 -1
  481. package/dist/bromcom-ui/p-26d2db9e.entry.js +0 -2
  482. package/dist/bromcom-ui/p-26d2db9e.entry.js.map +0 -1
  483. package/dist/bromcom-ui/p-2d0a6472.entry.js +0 -2
  484. package/dist/bromcom-ui/p-2d0a6472.entry.js.map +0 -1
  485. package/dist/bromcom-ui/p-360bff8a.entry.js +0 -2
  486. package/dist/bromcom-ui/p-360bff8a.entry.js.map +0 -1
  487. package/dist/bromcom-ui/p-488d6ef4.entry.js +0 -2
  488. package/dist/bromcom-ui/p-488d6ef4.entry.js.map +0 -1
  489. package/dist/bromcom-ui/p-5e0702d1.entry.js +0 -2
  490. package/dist/bromcom-ui/p-5e0702d1.entry.js.map +0 -1
  491. package/dist/bromcom-ui/p-63228f7e.entry.js +0 -2
  492. package/dist/bromcom-ui/p-63228f7e.entry.js.map +0 -1
  493. package/dist/bromcom-ui/p-6b585adc.entry.js +0 -2
  494. package/dist/bromcom-ui/p-6b585adc.entry.js.map +0 -1
  495. package/dist/bromcom-ui/p-6d7d73d5.entry.js +0 -2
  496. package/dist/bromcom-ui/p-6d7d73d5.entry.js.map +0 -1
  497. package/dist/bromcom-ui/p-7234af90.entry.js +0 -2
  498. package/dist/bromcom-ui/p-7234af90.entry.js.map +0 -1
  499. package/dist/bromcom-ui/p-83f64814.entry.js +0 -2
  500. package/dist/bromcom-ui/p-83f64814.entry.js.map +0 -1
  501. package/dist/bromcom-ui/p-8ace5a6a.entry.js +0 -2
  502. package/dist/bromcom-ui/p-8ace5a6a.entry.js.map +0 -1
  503. package/dist/bromcom-ui/p-8d74249a.entry.js +0 -2
  504. package/dist/bromcom-ui/p-8d74249a.entry.js.map +0 -1
  505. package/dist/bromcom-ui/p-BuuGCw0z.js +0 -3
  506. package/dist/bromcom-ui/p-BuuGCw0z.js.map +0 -1
  507. package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
  508. package/dist/bromcom-ui/p-DxMLMJ3r.js +0 -2
  509. package/dist/bromcom-ui/p-DxMLMJ3r.js.map +0 -1
  510. package/dist/bromcom-ui/p-a88f20e0.entry.js +0 -2
  511. package/dist/bromcom-ui/p-a88f20e0.entry.js.map +0 -1
  512. package/dist/bromcom-ui/p-bad299f2.entry.js +0 -2
  513. package/dist/bromcom-ui/p-bad299f2.entry.js.map +0 -1
  514. package/dist/bromcom-ui/p-bdaf5653.entry.js +0 -2
  515. package/dist/bromcom-ui/p-bdaf5653.entry.js.map +0 -1
  516. package/dist/bromcom-ui/p-c0e7f9d6.entry.js +0 -2
  517. package/dist/bromcom-ui/p-c0e7f9d6.entry.js.map +0 -1
  518. package/dist/bromcom-ui/p-c34f0a66.entry.js +0 -2
  519. package/dist/bromcom-ui/p-c34f0a66.entry.js.map +0 -1
  520. package/dist/bromcom-ui/p-d7cea19f.entry.js +0 -2
  521. package/dist/bromcom-ui/p-d7cea19f.entry.js.map +0 -1
  522. package/dist/bromcom-ui/p-e5e0ac07.entry.js +0 -2
  523. package/dist/bromcom-ui/p-e5e0ac07.entry.js.map +0 -1
  524. package/dist/bromcom-ui/p-ee5f877f.entry.js +0 -2
  525. package/dist/bromcom-ui/p-ee5f877f.entry.js.map +0 -1
  526. package/dist/bromcom-ui/p-fbccbffc.entry.js +0 -2
  527. package/dist/bromcom-ui/p-fbccbffc.entry.js.map +0 -1
  528. package/dist/cjs/bcm-accordion-group.cjs.entry.js.map +0 -1
  529. package/dist/cjs/bcm-accordion.cjs.entry.js.map +0 -1
  530. package/dist/cjs/bcm-alert.cjs.entry.js.map +0 -1
  531. package/dist/cjs/bcm-avatar.cjs.entry.js.map +0 -1
  532. package/dist/cjs/bcm-badge.cjs.entry.js.map +0 -1
  533. package/dist/cjs/bcm-basic-badge.cjs.entry.js.map +0 -1
  534. package/dist/cjs/bcm-button-group.cjs.entry.js.map +0 -1
  535. package/dist/cjs/bcm-button.bcm-drawer.bcm-modal.entry.cjs.js.map +0 -1
  536. package/dist/cjs/bcm-button_3.cjs.entry.js +0 -794
  537. package/dist/cjs/bcm-button_3.cjs.entry.js.map +0 -1
  538. package/dist/cjs/bcm-checkbox.cjs.entry.js.map +0 -1
  539. package/dist/cjs/bcm-chip.cjs.entry.js.map +0 -1
  540. package/dist/cjs/bcm-divider.cjs.entry.js.map +0 -1
  541. package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +0 -1
  542. package/dist/cjs/bcm-dropdown.cjs.entry.js.map +0 -1
  543. package/dist/cjs/bcm-input.cjs.entry.js.map +0 -1
  544. package/dist/cjs/bcm-linked.cjs.entry.js.map +0 -1
  545. package/dist/cjs/bcm-pop-confirm.cjs.entry.js.map +0 -1
  546. package/dist/cjs/bcm-popover.cjs.entry.js.map +0 -1
  547. package/dist/cjs/bcm-radio-group.cjs.entry.js.map +0 -1
  548. package/dist/cjs/bcm-radio.cjs.entry.js.map +0 -1
  549. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -107
  550. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js.map +0 -1
  551. package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
  552. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -144
  553. package/dist/cjs/bcm-segmented-picker.cjs.entry.js.map +0 -1
  554. package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
  555. package/dist/cjs/bcm-shortcut.cjs.entry.js.map +0 -1
  556. package/dist/cjs/bcm-switch.cjs.entry.js.map +0 -1
  557. package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -20
  558. package/dist/cjs/bcm-tabs-content.cjs.entry.js.map +0 -1
  559. package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
  560. package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -84
  561. package/dist/cjs/bcm-tabs-list.cjs.entry.js.map +0 -1
  562. package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
  563. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -122
  564. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +0 -1
  565. package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
  566. package/dist/cjs/bcm-tabs.cjs.entry.js.map +0 -1
  567. package/dist/cjs/bcm-text.cjs.entry.js.map +0 -1
  568. package/dist/cjs/bcm-textarea.cjs.entry.js.map +0 -1
  569. package/dist/cjs/bcm-tooltip.cjs.entry.js.map +0 -1
  570. package/dist/cjs/floating-ui.dom-DyKmFgkP.js.map +0 -1
  571. package/dist/cjs/index-BtiU-G2W.js.map +0 -1
  572. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +0 -253
  573. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +0 -1
  574. package/dist/collection/components/segmented-picker/segmented-picker-option.css +0 -1
  575. package/dist/collection/components/tabs/tabs-content.component.js +0 -46
  576. package/dist/collection/components/tabs/tabs-content.component.js.map +0 -1
  577. package/dist/collection/components/tabs/tabs-content.css +0 -1
  578. package/dist/collection/components/tabs/tabs-list.component.js +0 -133
  579. package/dist/collection/components/tabs/tabs-list.component.js.map +0 -1
  580. package/dist/collection/components/tabs/tabs-list.css +0 -1
  581. package/dist/collection/components/tabs/tabs-trigger.component.js +0 -267
  582. package/dist/collection/components/tabs/tabs-trigger.component.js.map +0 -1
  583. package/dist/collection/components/tabs/tabs-trigger.css +0 -1
  584. package/dist/components/bcm-segmented-picker-option.d.ts +0 -11
  585. package/dist/components/bcm-segmented-picker-option.js +0 -131
  586. package/dist/components/bcm-segmented-picker-option.js.map +0 -1
  587. package/dist/components/bcm-tabs-content.js +0 -39
  588. package/dist/components/bcm-tabs-content.js.map +0 -1
  589. package/dist/components/bcm-tabs-list.js +0 -104
  590. package/dist/components/bcm-tabs-list.js.map +0 -1
  591. package/dist/components/bcm-tabs-trigger.js +0 -146
  592. package/dist/components/bcm-tabs-trigger.js.map +0 -1
  593. package/dist/components/p-BHwftRkk.js +0 -379
  594. package/dist/components/p-BHwftRkk.js.map +0 -1
  595. package/dist/components/p-CQF7wlXf.js +0 -145
  596. package/dist/components/p-CQF7wlXf.js.map +0 -1
  597. package/dist/components/p-CUvT12BL.js.map +0 -1
  598. package/dist/components/p-CzcTU1ty.js.map +0 -1
  599. package/dist/components/p-DHONP_n4.js.map +0 -1
  600. package/dist/esm/bcm-button.bcm-drawer.bcm-modal.entry.js.map +0 -1
  601. package/dist/esm/bcm-button_3.entry.js +0 -790
  602. package/dist/esm/bcm-button_3.entry.js.map +0 -1
  603. package/dist/esm/bcm-segmented-picker-option.entry.js +0 -105
  604. package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
  605. package/dist/esm/bcm-segmented-picker.entry.js +0 -142
  606. package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
  607. package/dist/esm/bcm-tabs-content.entry.js +0 -18
  608. package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
  609. package/dist/esm/bcm-tabs-list.entry.js +0 -82
  610. package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
  611. package/dist/esm/bcm-tabs-trigger.entry.js +0 -120
  612. package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
  613. package/dist/esm/floating-ui.dom-DxMLMJ3r.js.map +0 -1
  614. package/dist/esm/index-BuuGCw0z.js.map +0 -1
  615. package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +0 -30
  616. package/dist/types/components/tabs/tabs-content.component.d.ts +0 -13
  617. package/dist/types/components/tabs/tabs-list.component.d.ts +0 -20
  618. package/dist/types/components/tabs/tabs-trigger.component.d.ts +0 -49
@@ -1 +1 @@
1
- {"version":3,"file":"bcm-linked.entry.cjs.js","sources":["src/components/linked/linked.css?tag=bcm-linked","src/components/linked/linked.component.tsx"],"sourcesContent":["bcm-linked {\n display: block;\n position: relative;\n}\nbcm-linked[append-to-body] {\n display: none;\n}\n\n.floating-content {\n min-width: max-content;\n transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;\n will-change: transform, opacity;\n}\n\n.floating-visible {\n animation: fadeInScale 0.2s ease-out;\n}\n\n.floating-hidden {\n display: none !important;\n pointer-events: none;\n}\n\n.floating-wrapper {\n position: relative;\n z-index: 1;\n}\n\n/* Animations */\n@keyframes fadeInScale {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-5px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* Arrow Styles */\n.floating-arrow {\n position: absolute;\n width: 10px;\n height: 10px;\n z-index: -1;\n}\n\n.floating-arrow::before {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n background: white;\n border: 1px solid #e2e8f0;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning based on placement */\n.arrow-top {\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.arrow-bottom {\n top: -5px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.arrow-left {\n right: -5px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.arrow-right {\n left: -5px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Arrow border fix for bordered popups */\n.arrow-top::before {\n border-bottom: 0;\n border-right: 0;\n}\n\n.arrow-bottom::before {\n border-top: 0;\n border-left: 0;\n}\n\n.arrow-left::before {\n border-top: 0;\n border-right: 0;\n}\n\n.arrow-right::before {\n border-bottom: 0;\n border-left: 0;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .floating-content {\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 32px);\n }\n}\n","import { Component, ComponentInterface, Prop, Element, State, h, Event, EventEmitter, Watch, Method, Host } from '@stencil/core';\nimport { computePosition, shift, offset, autoUpdate, flip, type Placement } from '@floating-ui/dom';\n\nexport type TriggerType = 'hover' | 'click' | 'focus' | 'manual';\n\n@Component({\n tag: 'bcm-linked',\n styleUrl: 'linked.css',\n shadow: false,\n})\nexport class BcmLinked implements ComponentInterface {\n @Element() host: HTMLElement;\n\n // Target configuration\n @Prop({ reflect: true, attribute: 'target-id' }) targetId?: string;\n @Prop() targetElement?: HTMLElement;\n\n // Trigger configuration\n @Prop() trigger: TriggerType = 'click';\n @Prop() placement: Placement = 'bottom-start';\n\n // Timing configuration\n @Prop() showDelay: number = 0;\n @Prop() hideDelay: number = 0;\n\n // Positioning configuration\n @Prop() offset: number = 8;\n @Prop() arrow: boolean = false;\n @Prop() disabled: boolean = false;\n\n // Style configuration\n @Prop() zIndex: number = 1000;\n @Prop() appendToBody: boolean = false;\n @Prop() destroyOnHide: boolean = false;\n\n // State\n @State() isVisible: boolean = false;\n @State() isReady: boolean = false;\n\n // Events\n @Event() bcmShow: EventEmitter<void>;\n @Event() bcmHide: EventEmitter<void>;\n @Event() bcmShown: EventEmitter<void>;\n @Event() bcmHidden: EventEmitter<void>;\n\n // Private properties\n private floatingEl?: HTMLElement;\n private targetEl?: HTMLElement;\n private showTimeout?: NodeJS.Timeout;\n private hideTimeout?: NodeJS.Timeout;\n private cleanup?: () => void;\n private clickOutsideHandler?: (e: MouseEvent) => void;\n private resizeObserver?: ResizeObserver;\n private originalParent?: Node;\n private originalNextSibling?: Node;\n\n // Watch for changes\n @Watch('targetId')\n @Watch('targetElement')\n setupTarget() {\n this.disconnectTarget();\n this.connectTarget();\n }\n\n @Watch('isVisible')\n onVisibilityChange(newValue: boolean) {\n if (newValue) {\n this.updatePosition();\n this.bcmShown.emit();\n } else {\n this.bcmHidden.emit();\n }\n }\n\n async componentDidLoad() {\n // Wait for render\n await new Promise(resolve => requestAnimationFrame(resolve));\n\n this.floatingEl = this.host.querySelector('.floating-content') as HTMLElement;\n\n if (this.floatingEl) {\n this.isReady = true;\n this.connectTarget();\n this.setupFloatingObserver();\n console.log('✅ bcm-linked initialized successfully');\n } else {\n console.error('❌ Could not find .floating-content element');\n }\n }\n\n disconnectedCallback() {\n this.disconnectTarget();\n this.clearTimeouts();\n this.cleanup?.();\n this.resizeObserver?.disconnect();\n\n // Restore element to original position if component is destroyed while in portal\n if (this.appendToBody && this.floatingEl && this.originalParent) {\n this.originalParent.appendChild(this.floatingEl);\n }\n }\n\n private connectTarget() {\n if (!this.isReady) return;\n\n // Find target element\n this.targetEl =\n this.targetElement || (this.targetId ? document.getElementById(this.targetId) : null) || (this.host.previousElementSibling as HTMLElement) || this.host.parentElement;\n\n if (!this.targetEl) {\n console.warn('bcm-linked: No target element found');\n return;\n }\n\n // Setup event listeners based on trigger type\n this.setupEventListeners();\n\n // Setup auto-update for position\n if (this.targetEl && this.floatingEl) {\n this.cleanup = autoUpdate(this.targetEl, this.floatingEl, () => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n }\n\n // Setup resize observer for responsive positioning\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n this.resizeObserver.observe(this.floatingEl);\n }\n\n private disconnectTarget() {\n if (this.targetEl) {\n this.removeEventListeners();\n }\n this.cleanup?.();\n this.resizeObserver?.disconnect();\n }\n\n private setupEventListeners() {\n if (!this.targetEl || this.disabled) return;\n\n switch (this.trigger) {\n case 'hover':\n this.targetEl.addEventListener('mouseenter', this.handleMouseEnter);\n this.targetEl.addEventListener('mouseleave', this.handleMouseLeave);\n this.floatingEl?.addEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingEl?.addEventListener('mouseleave', this.handleFloatingMouseLeave);\n break;\n\n case 'click':\n this.targetEl.addEventListener('click', this.handleClick);\n this.setupClickOutside();\n break;\n\n case 'focus':\n this.targetEl.addEventListener('focus', this.handleFocus);\n this.targetEl.addEventListener('blur', this.handleBlur);\n break;\n }\n }\n\n private removeEventListeners() {\n if (!this.targetEl) return;\n\n this.targetEl.removeEventListener('mouseenter', this.handleMouseEnter);\n this.targetEl.removeEventListener('mouseleave', this.handleMouseLeave);\n this.targetEl.removeEventListener('click', this.handleClick);\n this.targetEl.removeEventListener('focus', this.handleFocus);\n this.targetEl.removeEventListener('blur', this.handleBlur);\n\n this.floatingEl?.removeEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingEl?.removeEventListener('mouseleave', this.handleFloatingMouseLeave);\n\n this.removeClickOutside();\n }\n\n private setupClickOutside() {\n this.clickOutsideHandler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!this.floatingEl?.contains(target) && !this.targetEl?.contains(target) && !this.host.contains(target)) {\n this.hide();\n }\n };\n document.addEventListener('click', this.clickOutsideHandler, true);\n }\n\n private removeClickOutside() {\n if (this.clickOutsideHandler) {\n document.removeEventListener('click', this.clickOutsideHandler, true);\n this.clickOutsideHandler = undefined;\n }\n }\n\n private handleMouseEnter = () => {\n this.clearTimeouts();\n if (this.showDelay > 0) {\n this.showTimeout = setTimeout(() => this.show(), this.showDelay);\n } else {\n this.show();\n }\n };\n\n private handleMouseLeave = () => {\n this.clearTimeouts();\n if (this.hideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);\n } else {\n this.hide();\n }\n };\n\n private handleFloatingMouseEnter = () => {\n this.clearTimeouts();\n };\n\n private handleFloatingMouseLeave = () => {\n this.clearTimeouts();\n if (this.hideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);\n } else {\n this.hide();\n }\n };\n\n private handleClick = (e: Event) => {\n e.stopPropagation();\n this.toggle();\n };\n\n private handleFocus = () => {\n this.show();\n };\n\n private handleBlur = () => {\n this.hide();\n };\n\n private clearTimeouts() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private async updatePosition() {\n if (!this.targetEl || !this.floatingEl || !this.isVisible) return;\n\n // Use autoPlacement only for bottom-start (dropdown default)\n // For other placements, respect the manual placement with flip fallback\n // const useAutoPlacement = this.placement === 'bottom-start';\n\n const middleware = [\n offset(this.offset),\n // useAutoPlacement\n // ? autoPlacement({\n // allowedPlacements: ['bottom-start', 'bottom-end', 'bottom', 'top-start', 'top-end', 'top', 'right-start', 'right-end', 'right', 'left-start', 'left-end', 'left'],\n // boundary: document.body,\n // })\n // :\n flip({\n fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],\n }),\n shift({\n padding: 8,\n }),\n ];\n\n const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {\n placement: this.placement,\n middleware,\n strategy: 'fixed',\n });\n\n Object.assign(this.floatingEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n zIndex: this.zIndex.toString(),\n });\n\n // Update arrow if enabled\n if (this.arrow) {\n this.updateArrow(placement);\n }\n }\n\n private updateArrow(placement: Placement) {\n const arrow = this.floatingEl?.querySelector('.floating-arrow') as HTMLElement;\n if (!arrow) return;\n\n // Remove all arrow classes\n arrow.className = 'floating-arrow';\n\n // Add placement-specific class\n const side = placement.split('-')[0];\n arrow.classList.add(`arrow-${side}`);\n }\n\n @Method()\n async show(): Promise<void> {\n if (this.disabled || this.isVisible) return;\n\n this.bcmShow.emit();\n\n // Portalling: Move the floating element to the body\n if (this.appendToBody && this.floatingEl) {\n this.originalParent = this.floatingEl.parentNode;\n this.originalNextSibling = this.floatingEl.nextSibling;\n document.body.appendChild(this.floatingEl);\n }\n\n this.isVisible = true;\n\n // Use requestAnimationFrame to ensure the element is visible before positioning\n await new Promise(resolve => requestAnimationFrame(resolve));\n await this.updatePosition();\n }\n\n @Method()\n async hide(): Promise<void> {\n if (!this.isVisible) return;\n\n this.bcmHide.emit();\n this.isVisible = false;\n\n // Portalling: Restore the floating element to its original position\n if (this.appendToBody && this.floatingEl && this.originalParent) {\n if (this.originalNextSibling) {\n this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);\n } else {\n this.originalParent.appendChild(this.floatingEl);\n }\n this.originalParent = undefined;\n this.originalNextSibling = undefined;\n }\n\n if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {\n this.floatingEl.parentNode.removeChild(this.floatingEl);\n }\n }\n\n @Method()\n async toggle(): Promise<void> {\n if (this.isVisible) {\n await this.hide();\n } else {\n await this.show();\n }\n }\n\n @Method()\n async updatePositioning(): Promise<void> {\n await this.updatePosition();\n }\n\n private setupFloatingObserver() {\n if (!this.floatingEl) return;\n\n // Observe floating element size changes for position updates\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n\n this.resizeObserver.observe(this.floatingEl);\n }\n\n render() {\n const floatingClasses = {\n 'floating-content': true,\n 'floating-visible': this.isVisible,\n 'floating-hidden': !this.isVisible,\n 'floating-with-arrow': this.arrow,\n 'floating-destroy-on-hide': this.destroyOnHide,\n };\n\n return (\n <Host>\n <div\n class={floatingClasses}\n style={{\n position: 'fixed',\n top: '0px',\n left: '0px',\n zIndex: this.zIndex.toString(),\n display: this.isVisible ? 'block' : 'none',\n visibility: this.isVisible ? 'visible' : 'hidden',\n opacity: this.isVisible ? '1' : '0',\n pointerEvents: this.isVisible ? 'auto' : 'none',\n }}\n >\n {this.arrow && <div class=\"floating-arrow\" />}\n <div class=\"floating-wrapper\">\n <slot></slot>\n </div>\n </div>\n <div style={{ display: 'none' }}>\n <slot name=\"fallback\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":["autoUpdate","offset","flip","shift","computePosition","h","Host"],"mappings":"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"}
1
+ {"version":3,"file":"bcm-linked.entry.cjs.js","sources":["src/components/linked/linked.css?tag=bcm-linked&encapsulation=shadow","src/components/linked/linked.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n/* Popover API base styles */\n[popover] {\n position: absolute;\n margin: 0;\n border: none;\n padding: 0;\n overflow: visible;\n background: transparent;\n}\n\n/* Animation properties */\n[popover] {\n transition:\n opacity 150ms ease-out,\n transform 150ms ease-out,\n display 150ms ease-out allow-discrete,\n overlay 150ms ease-out allow-discrete;\n opacity: 0;\n transform: scale(0.95);\n}\n\n/* Open state */\n[popover]:popover-open {\n opacity: 1;\n transform: scale(1);\n}\n\n/* Starting style for entry animation */\n@starting-style {\n [popover]:popover-open {\n opacity: 0;\n transform: scale(0.95);\n }\n}\n\n/* Arrow positioning based on placement */\n[data-placement^='top'] [part='arrow'] {\n bottom: -4px;\n border-top: none;\n border-left: none;\n}\n\n[data-placement^='bottom'] [part='arrow'] {\n top: -4px;\n border-bottom: none;\n border-right: none;\n}\n\n[data-placement^='left'] [part='arrow'] {\n right: -4px;\n border-bottom: none;\n border-left: none;\n}\n\n[data-placement^='right'] [part='arrow'] {\n left: -4px;\n border-top: none;\n border-right: none;\n}\n","import { Component, ComponentInterface, Prop, Element, State, h, Event, EventEmitter, Watch, Method, Host, Listen } from '@stencil/core';\nimport { computePosition, shift, offset, autoUpdate, flip, arrow, type Placement } from '@floating-ui/dom';\nimport { tv } from '@utils/tv';\n\nexport type TriggerType = 'hover' | 'click' | 'focus' | 'manual';\n\n/**\n * @component BcmLinked\n * @description A flexible linked floating element component that displays contextual content relative to a trigger element.\n * Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.\n * Supports different trigger types (click, hover, focus, manual) and comprehensive event system.\n *\n * @example Basic Click Trigger\n * <bcm-linked trigger=\"click\">\n * <button slot=\"trigger\">Click Me</button>\n * <div>Floating content here</div>\n * </bcm-linked>\n *\n * @example Hover Trigger with Delays\n * <bcm-linked trigger=\"hover\" show-delay=\"200\" hide-delay=\"100\">\n * <span slot=\"trigger\">Hover Me</span>\n * <div>This appears on hover</div>\n * </bcm-linked>\n *\n * @example Manual Control\n * <bcm-linked id=\"my-linked\" trigger=\"manual\">\n * <button slot=\"trigger\">Trigger</button>\n * <div>Controlled content</div>\n * </bcm-linked>\n * <script>\n * const linked = document.querySelector('#my-linked');\n * linked.show(); // Opens the floating element\n * linked.hide(); // Closes the floating element\n * </script>\n *\n * @slot trigger - The trigger element that controls the floating element visibility\n * @slot - Default slot for the floating content\n *\n * @csspart floating - The floating container element\n * @csspart arrow - The arrow element pointing to the trigger\n * @csspart content - The content wrapper element\n */\n@Component({\n tag: 'bcm-linked',\n styleUrl: 'linked.css',\n shadow: true,\n})\nexport class BcmLinked implements ComponentInterface {\n @Element() host: HTMLElement;\n\n // Element references\n private floatingRef?: HTMLElement;\n private triggerRef?: HTMLElement;\n private arrowRef?: HTMLElement;\n\n // Cleanup references\n private cleanupAutoUpdate?: () => void;\n private showTimeout?: number;\n private hideTimeout?: number;\n\n // Unique ID for ARIA\n private componentId = `linked-${Math.random().toString(36).substring(2, 11)}`;\n\n /**\n * @prop {boolean} visible - Controls the visibility state of the floating element.\n * Can be set programmatically or toggled by user interaction.\n * Default: false\n */\n @Prop({ mutable: true, reflect: true }) visible: boolean = false;\n\n /**\n * @prop {TriggerType} trigger - Defines the interaction type to show/hide the floating element.\n * 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave,\n * 'focus' shows on focus and hides on blur, 'manual' requires programmatic control.\n * Default: 'click'\n */\n @Prop() trigger: TriggerType = 'click';\n\n /**\n * @prop {Placement} placement - Defines the position of the floating element relative to the trigger.\n * Default: 'bottom-start'\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * @prop {number} showDelay - Delay in milliseconds before showing the floating element.\n * Default: 0\n */\n @Prop() showDelay: number = 0;\n\n /**\n * @prop {number} hideDelay - Delay in milliseconds before hiding the floating element.\n * Default: 0\n */\n @Prop() hideDelay: number = 0;\n\n /**\n * @prop {number} offsetDistance - Distance in pixels between the floating element and the trigger.\n * Default: 8\n */\n @Prop() offsetDistance: number = 8;\n\n /**\n * @prop {boolean} showArrow - Whether to show an arrow pointing to the trigger element.\n * Default: true\n */\n @Prop() showArrow: boolean = true;\n\n /**\n * @prop {boolean} disabled - Disables the floating element, preventing it from showing.\n * Default: false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside.\n * Default: true\n */\n @Prop() closeOnOutsideClick: boolean = true;\n\n /**\n * @prop {boolean} closeOnEscape - Whether to close when pressing Escape key.\n * Default: true\n */\n @Prop() closeOnEscape: boolean = true;\n\n // Internal state\n @State() isVisible: boolean = false;\n\n /**\n * @event bcmBeforeShow - Emitted before the floating element shows.\n */\n @Event({ composed: false, bubbles: false }) bcmBeforeShow: EventEmitter<void>;\n\n /**\n * @event bcmShow - Emitted when the floating element is shown.\n */\n @Event({ composed: false, bubbles: false }) bcmShow: EventEmitter<void>;\n\n /**\n * @event bcmBeforeHide - Emitted before the floating element hides.\n */\n @Event({ composed: false, bubbles: false }) bcmBeforeHide: EventEmitter<void>;\n\n /**\n * @event bcmHide - Emitted when the floating element is hidden.\n */\n @Event({ composed: false, bubbles: false }) bcmHide: EventEmitter<void>;\n\n /**\n * @event bcmShown - Emitted after the floating element is fully shown (after animation).\n */\n @Event({ composed: false, bubbles: false }) bcmShown: EventEmitter<void>;\n\n /**\n * @event bcmHidden - Emitted after the floating element is fully hidden (after animation).\n */\n @Event({ composed: false, bubbles: false }) bcmHidden: EventEmitter<void>;\n\n // Watch for visibility prop changes\n @Watch('visible')\n handleVisibleChange(newValue: boolean) {\n if (this.disabled) return;\n\n if (newValue) {\n this.showInternal();\n } else {\n this.hideInternal();\n }\n }\n\n @Watch('disabled')\n handleDisabledChange(isDisabled: boolean) {\n if (isDisabled && this.visible) {\n this.hide();\n }\n }\n\n @Watch('placement')\n @Watch('offsetDistance')\n @Watch('showArrow')\n handlePositionPropsChange() {\n if (this.visible) {\n this.updatePosition();\n }\n }\n\n // Internal show logic\n private showInternal() {\n if (!this.floatingRef || this.disabled) return;\n\n this.bcmShow.emit();\n this.isVisible = true;\n this.floatingRef.showPopover();\n this.startAutoUpdate();\n this.updatePosition();\n this.triggerRef?.setAttribute('aria-expanded', 'true');\n\n if (this.closeOnOutsideClick && this.trigger !== 'manual') {\n this.addOutsideClickListener();\n }\n\n // Emit bcmShown after animation\n requestAnimationFrame(() => {\n this.bcmShown.emit();\n });\n }\n\n // Internal hide logic\n private hideInternal() {\n if (!this.floatingRef) return;\n\n this.bcmHide.emit();\n this.isVisible = false;\n this.floatingRef.hidePopover();\n this.stopAutoUpdate();\n this.triggerRef?.setAttribute('aria-expanded', 'false');\n this.removeOutsideClickListener();\n\n // Emit bcmHidden after animation\n setTimeout(() => {\n this.bcmHidden.emit();\n }, 150);\n }\n\n /**\n * Programmatically shows the floating element.\n * Respects the showDelay prop.\n */\n @Method()\n async show(): Promise<void> {\n if (this.visible || this.disabled) return;\n\n this.clearTimeouts();\n\n if (this.showDelay > 0) {\n this.showTimeout = window.setTimeout(() => {\n this.bcmBeforeShow.emit();\n this.visible = true;\n }, this.showDelay);\n } else {\n this.bcmBeforeShow.emit();\n this.visible = true;\n }\n }\n\n /**\n * Programmatically hides the floating element.\n * Respects the hideDelay prop.\n */\n @Method()\n async hide(): Promise<void> {\n if (!this.visible) return;\n\n this.clearTimeouts();\n\n if (this.hideDelay > 0) {\n this.hideTimeout = window.setTimeout(() => {\n this.bcmBeforeHide.emit();\n this.visible = false;\n }, this.hideDelay);\n } else {\n this.bcmBeforeHide.emit();\n this.visible = false;\n }\n }\n\n /**\n * Toggles the floating element visibility.\n */\n @Method()\n async toggle(): Promise<void> {\n if (this.visible) {\n await this.hide();\n } else {\n await this.show();\n }\n }\n\n /**\n * Updates the position of the floating element.\n * Useful when the trigger element moves or resizes.\n */\n @Method()\n async updatePosition(): Promise<void> {\n await this.calculatePosition();\n }\n\n private clearTimeouts() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private handleTriggerSlotChange = () => {\n const slot = this.host.shadowRoot?.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement;\n if (!slot) return;\n\n const elements = slot.assignedElements();\n if (elements.length > 0) {\n this.removeTriggerListeners();\n this.triggerRef = elements[0] as HTMLElement;\n this.setupTriggerListeners();\n this.setupAriaAttributes();\n }\n };\n\n private setupAriaAttributes() {\n if (!this.triggerRef) return;\n\n this.triggerRef.setAttribute('aria-describedby', this.componentId);\n this.triggerRef.setAttribute('aria-expanded', String(this.visible));\n this.triggerRef.setAttribute('aria-haspopup', 'true');\n }\n\n private setupTriggerListeners() {\n if (!this.triggerRef || this.disabled) return;\n\n switch (this.trigger) {\n case 'hover':\n this.triggerRef.addEventListener('mouseenter', this.handleMouseEnter);\n this.triggerRef.addEventListener('mouseleave', this.handleMouseLeave);\n this.floatingRef?.addEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingRef?.addEventListener('mouseleave', this.handleFloatingMouseLeave);\n break;\n\n case 'click':\n this.triggerRef.addEventListener('click', this.handleTriggerClick);\n break;\n\n case 'focus':\n this.triggerRef.addEventListener('focus', this.handleFocus);\n this.triggerRef.addEventListener('blur', this.handleBlur);\n break;\n\n case 'manual':\n // No automatic listeners\n break;\n }\n }\n\n private removeTriggerListeners() {\n if (!this.triggerRef) return;\n\n this.triggerRef.removeEventListener('mouseenter', this.handleMouseEnter);\n this.triggerRef.removeEventListener('mouseleave', this.handleMouseLeave);\n this.triggerRef.removeEventListener('click', this.handleTriggerClick);\n this.triggerRef.removeEventListener('focus', this.handleFocus);\n this.triggerRef.removeEventListener('blur', this.handleBlur);\n\n this.floatingRef?.removeEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingRef?.removeEventListener('mouseleave', this.handleFloatingMouseLeave);\n }\n\n private handleMouseEnter = () => {\n this.show();\n };\n\n private handleMouseLeave = () => {\n this.hide();\n };\n\n private handleFloatingMouseEnter = () => {\n this.clearTimeouts();\n };\n\n private handleFloatingMouseLeave = () => {\n this.hide();\n };\n\n private handleTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.toggle();\n };\n\n private handleFocus = () => {\n this.show();\n };\n\n private handleBlur = () => {\n this.hide();\n };\n\n @Listen('keydown', { target: 'document' })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.closeOnEscape || !this.visible) return;\n\n if (event.key === 'Escape') {\n const openLinked = Array.from(document.querySelectorAll('bcm-linked[visible]'));\n const topLinked = openLinked[openLinked.length - 1];\n\n if (topLinked === this.host) {\n event.preventDefault();\n this.hide();\n this.triggerRef?.focus();\n }\n }\n }\n\n private handleOutsideClick = (event: Event) => {\n if (!this.closeOnOutsideClick || !this.visible) return;\n\n const target = event.target as Node;\n const path = event.composedPath();\n\n const isInsideHost = this.host.contains(target) || path.includes(this.host);\n const isInsideFloating = this.floatingRef?.contains(target) || (this.floatingRef && path.includes(this.floatingRef));\n\n if (!isInsideHost && !isInsideFloating) {\n this.hide();\n }\n };\n\n private addOutsideClickListener() {\n setTimeout(() => {\n document.addEventListener('click', this.handleOutsideClick, true);\n }, 0);\n }\n\n private removeOutsideClickListener() {\n document.removeEventListener('click', this.handleOutsideClick, true);\n }\n\n private async calculatePosition() {\n if (!this.triggerRef || !this.floatingRef || !this.isVisible) return;\n\n const virtualElement = {\n getBoundingClientRect: () => this.triggerRef!.getBoundingClientRect(),\n };\n\n const middlewareList = [\n offset(this.offsetDistance),\n flip({\n fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],\n }),\n shift({\n padding: 8,\n }),\n ];\n\n if (this.showArrow && this.arrowRef) {\n middlewareList.push(arrow({ element: this.arrowRef }));\n }\n\n const { x, y, placement, middlewareData } = await computePosition(virtualElement, this.floatingRef, {\n placement: this.placement,\n middleware: middlewareList,\n strategy: 'fixed',\n });\n\n Object.assign(this.floatingRef.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n // Arrow positioning\n if (this.showArrow && this.arrowRef && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]] as string;\n\n Object.assign(this.arrowRef.style, {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: '-4px',\n });\n }\n\n this.floatingRef.setAttribute('data-placement', placement);\n }\n\n private startAutoUpdate() {\n if (!this.triggerRef || !this.floatingRef) return;\n\n this.cleanupAutoUpdate = autoUpdate(this.triggerRef, this.floatingRef, () => this.calculatePosition(), {\n ancestorScroll: true,\n ancestorResize: true,\n elementResize: true,\n layoutShift: true,\n });\n }\n\n private stopAutoUpdate() {\n this.cleanupAutoUpdate?.();\n this.cleanupAutoUpdate = undefined;\n }\n\n private handleToggle = (event: ToggleEvent) => {\n if (event.newState === 'open' && !this.isVisible) {\n this.isVisible = true;\n } else if (event.newState === 'closed' && this.isVisible) {\n this.isVisible = false;\n }\n };\n\n componentDidLoad() {\n // Toggle event listener (Popover API)\n this.floatingRef?.addEventListener('toggle', this.handleToggle as EventListener);\n\n // Initial trigger setup - manually trigger slot change handler\n this.handleTriggerSlotChange();\n\n // Initial state sync\n if (this.visible) {\n this.showInternal();\n }\n }\n\n disconnectedCallback() {\n this.clearTimeouts();\n this.stopAutoUpdate();\n this.removeTriggerListeners();\n this.removeOutsideClickListener();\n\n if (this.floatingRef) {\n this.floatingRef.removeEventListener('toggle', this.handleToggle as EventListener);\n\n if (this.isVisible) {\n try {\n this.floatingRef.hidePopover();\n } catch (e) {\n // Element might already be removed\n }\n }\n }\n }\n\n private linkedClass = tv({\n slots: {\n wrapper: 'inline-block',\n floating: ['bcm-ui-element', 'fixed', 'bg-color-basic-base', 'rounded-md', 'shadow-lg', 'border', 'border-color-basic-subtle'],\n arrow: ['absolute', 'w-2', 'h-2', 'bg-color-basic-base', 'border', 'border-color-basic-subtle', 'rotate-45'],\n content: 'bg-color-basic-base',\n },\n });\n\n render() {\n const { wrapper, floating, arrow, content } = this.linkedClass();\n\n return (\n <Host>\n <div class={wrapper()}>\n {/* Trigger slot */}\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n\n {/* Floating element with Popover API */}\n <div\n ref={el => (this.floatingRef = el as HTMLElement)}\n id={this.componentId}\n part=\"floating\"\n class={floating()}\n // @ts-ignore - popover is a valid HTML attribute\n popover=\"manual\"\n role=\"dialog\"\n >\n {/* Arrow */}\n {this.showArrow && <div ref={el => (this.arrowRef = el as HTMLElement)} part=\"arrow\" class={arrow()} />}\n\n {/* Content */}\n <div part=\"content\" class={content()}>\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["offset","flip","shift","arrow","computePosition","autoUpdate","tv","h","Host"],"mappings":"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"}
@@ -0,0 +1,360 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-1Qal-onT.js');
4
+ var tv = require('./tv-ngpIbGlG.js');
5
+
6
+ const modalCss = ".contents{display:contents}:host{display:contents}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.m-0{margin:0}.flex{display:flex}.hidden{display:none}.h-6{height:1.5rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-full{max-height:100%}.max-h-none{max-height:none}.w-6{width:1.5rem}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.max-w-full{max-width:100%}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-y-4{--tw-translate-y:-1rem}.-translate-y-4,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-shake{animation:shake .82s cubic-bezier(.36,.07,.19,.97) infinite;animation:shake .3s cubic-bezier(.36,.07,.19,.97) both}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:var(--bcm-ui-border-radius-default,6px)}.rounded-lg{border-radius:var(--bcm-ui-border-radius-lg,8px)}.rounded-none{border-radius:var(--bcm-ui-border-radius-none,0)}.rounded-t-lg{border-top-left-radius:var(--bcm-ui-border-radius-lg,8px);border-top-right-radius:var(--bcm-ui-border-radius-lg,8px)}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-color-default{border-color:var(--bcm-ui-color-border-default)}.bg-color-base{background-color:var(--bcm-ui-color-background-base-default)}.bg-color-basic-base{background-color:var(--bcm-ui-color-background-basic-base)}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.pt-20{padding-top:5rem}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-color-default{color:var(--bcm-ui-color-text-default)}.text-color-header{color:var(--bcm-ui-color-text-header)}.text-color-placeholder{color:var(--bcm-ui-color-text-placeholder)}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default)}.shadow,.shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:var(--bcm-ui-box-shadow-2xl);--tw-shadow-colored:var(--bcm-ui-box-shadow-2xl)}.outline-none{outline:2px solid transparent;outline-offset:2px}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.backdrop\\:bg-color-default-dark::backdrop{background-color:var(--bcm-ui-color-background-default-dark-default)}.backdrop\\:opacity-50::backdrop{opacity:.5}.backdrop\\:transition-opacity::backdrop{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.backdrop\\:duration-300::backdrop{transition-duration:.3s}.hover\\:bg-color-default-hover:hover{background-color:var(--bcm-ui-color-background-default-hover)}.focus-visible\\:ring:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}";
7
+
8
+ const BcmModal = class {
9
+ constructor(hostRef) {
10
+ index.registerInstance(this, hostRef);
11
+ this.bcmOpen = index.createEvent(this, "bcmOpen", 7);
12
+ this.bcmClose = index.createEvent(this, "bcmClose", 7);
13
+ this.bcmBeforeOpen = index.createEvent(this, "bcmBeforeOpen", 7);
14
+ this.bcmBeforeClose = index.createEvent(this, "bcmBeforeClose", 7);
15
+ }
16
+ get host() { return index.getElement(this); }
17
+ dialogRef;
18
+ /**
19
+ * Controls whether the modal is open or closed
20
+ */
21
+ open = false;
22
+ /**
23
+ * The size of the modal
24
+ * - 'small': 400px
25
+ * - 'medium': 600px
26
+ * - 'large': 800px
27
+ * - 'xlarge': 1024px
28
+ * - 'xxlarge': 1200px
29
+ * - 'full': 100% width
30
+ */
31
+ size = 'medium';
32
+ /**
33
+ * The placement of the modal on the screen
34
+ * - 'center': Centered vertically and horizontally
35
+ * - 'top': Aligned to the top with 80px padding
36
+ */
37
+ placement = 'center';
38
+ /**
39
+ * Controls backdrop behavior
40
+ * - true: Shows backdrop, modal can be closed by clicking outside
41
+ * - false: No backdrop
42
+ * - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
43
+ */
44
+ backdrop = true;
45
+ /**
46
+ * Makes the modal take full width of the viewport (max-width: 100%)
47
+ */
48
+ fullWidth = false;
49
+ /**
50
+ * Makes the modal take the full screen (100vw x 100vh, no border radius)
51
+ */
52
+ fullScreen = false;
53
+ /**
54
+ * Text to display in the modal header
55
+ */
56
+ headerText;
57
+ /**
58
+ * Helper text to display below the header title
59
+ */
60
+ helperText;
61
+ /**
62
+ * Hides the header section completely
63
+ */
64
+ noHeader = false;
65
+ /**
66
+ * Hides the footer section completely
67
+ */
68
+ noFooter = false;
69
+ /**
70
+ * Allows closing the modal by clicking on the backdrop
71
+ */
72
+ closeOnBackdrop = true;
73
+ /**
74
+ * Allows closing the modal by pressing the Escape key
75
+ */
76
+ closeOnEscape = true;
77
+ isAnimating = false;
78
+ shake = false;
79
+ /**
80
+ * Emitted after the modal has opened
81
+ */
82
+ bcmOpen;
83
+ /**
84
+ * Emitted after the modal has closed
85
+ */
86
+ bcmClose;
87
+ /**
88
+ * Emitted before the modal opens. Can be cancelled by calling event.preventDefault()
89
+ */
90
+ bcmBeforeOpen;
91
+ /**
92
+ * Emitted before the modal closes. Can be cancelled by calling event.preventDefault()
93
+ */
94
+ bcmBeforeClose;
95
+ modalClass = tv.tv({
96
+ slots: {
97
+ dialog: 'bcm-ui-element fixed inset-0 m-0 p-0 w-full max-w-full h-full max-h-full border-none bg-transparent backdrop:bg-color-default-dark backdrop:opacity-50 backdrop:transition-opacity backdrop:duration-300',
98
+ container: 'fixed inset-0 flex items-start justify-center p-4 overflow-y-auto overscroll-contain',
99
+ modal: 'relative bg-color-basic-base text-color-default rounded-lg shadow-2xl transform transition-all duration-300 ease-in-out flex flex-col',
100
+ header: 'flex justify-between items-start bg-color-base text-color-default border-color-default border-solid border-0 border-b rounded-t-lg',
101
+ headerContent: 'flex-1 min-w-0 flex items-center gap-2',
102
+ title: 'font-semibold m-0 text-size-6 text-color-header',
103
+ helperText: 'text-size-5 text-color-placeholder m-0',
104
+ closeButton: 'text-size-5 font-medium text-color-default bg-transparent border-none p-0 h-6 w-6 rounded hover:bg-color-default-hover cursor-pointer active:bg-color-active transition-colors flex-shrink-0 outline-none focus-visible:ring ',
105
+ content: 'flex-grow overflow-y-auto',
106
+ footer: 'flex items-center justify-end gap-2',
107
+ },
108
+ variants: {
109
+ open: {
110
+ true: {
111
+ modal: 'opacity-100 translate-y-0 scale-100',
112
+ },
113
+ false: {
114
+ modal: 'opacity-0 -translate-y-4 scale-95',
115
+ },
116
+ },
117
+ placement: {
118
+ center: {
119
+ container: 'items-center',
120
+ },
121
+ top: {
122
+ container: 'items-start pt-20',
123
+ },
124
+ },
125
+ size: {
126
+ small: {
127
+ header: 'py-3 px-4',
128
+ content: 'p-4',
129
+ footer: 'py-3 px-4',
130
+ },
131
+ medium: {
132
+ header: 'py-4 px-5',
133
+ content: 'p-5',
134
+ footer: 'py-4 px-5',
135
+ },
136
+ large: {
137
+ header: 'py-4 px-6',
138
+ content: 'p-6',
139
+ footer: 'py-4 px-6',
140
+ },
141
+ xlarge: {
142
+ header: 'py-5 px-6',
143
+ content: 'p-6',
144
+ footer: 'py-5 px-6',
145
+ },
146
+ xxlarge: {
147
+ header: 'py-5 px-8',
148
+ content: 'p-8',
149
+ footer: 'py-5 px-8',
150
+ },
151
+ full: {
152
+ header: 'py-5 px-8',
153
+ content: 'p-8',
154
+ footer: 'py-5 px-8',
155
+ },
156
+ },
157
+ fullScreen: {
158
+ true: {
159
+ modal: 'rounded-none w-screen h-screen max-w-none max-h-none',
160
+ container: 'p-0',
161
+ },
162
+ },
163
+ shake: {
164
+ true: {
165
+ modal: 'animate-shake',
166
+ },
167
+ },
168
+ noHeader: {
169
+ true: {
170
+ header: 'hidden',
171
+ },
172
+ },
173
+ noFooter: {
174
+ true: {
175
+ footer: 'hidden',
176
+ },
177
+ },
178
+ },
179
+ });
180
+ async handleOpenChange(isOpen) {
181
+ if (isOpen) {
182
+ this.isAnimating = true;
183
+ const event = this.bcmBeforeOpen.emit();
184
+ if (event.defaultPrevented) {
185
+ this.open = false;
186
+ return;
187
+ }
188
+ // Use native dialog API with top-layer
189
+ if (this.dialogRef) {
190
+ this.dialogRef.showModal();
191
+ // Small delay for animation
192
+ await new Promise(resolve => setTimeout(resolve, 50));
193
+ this.isAnimating = false;
194
+ this.bcmOpen.emit();
195
+ }
196
+ }
197
+ else {
198
+ this.isAnimating = true;
199
+ const event = this.bcmBeforeClose.emit();
200
+ if (event.defaultPrevented) {
201
+ this.open = true;
202
+ return;
203
+ }
204
+ // Wait for animation before closing
205
+ await new Promise(resolve => setTimeout(resolve, 300));
206
+ if (this.dialogRef) {
207
+ this.dialogRef.close();
208
+ }
209
+ this.isAnimating = false;
210
+ this.bcmClose.emit();
211
+ }
212
+ }
213
+ handleClick(event) {
214
+ // Use composedPath to work with shadow DOM and slots
215
+ const path = event.composedPath();
216
+ const dismissElement = path.find(el => el.hasAttribute?.('data-dismiss'));
217
+ const closeModalElement = path.find(el => el.hasAttribute?.('data-close-modal'));
218
+ if (dismissElement) {
219
+ this.hide();
220
+ event.preventDefault();
221
+ event.stopPropagation();
222
+ }
223
+ else if (closeModalElement) {
224
+ const modalId = closeModalElement.getAttribute('data-close-modal');
225
+ // If modalId matches this modal's id, close it
226
+ if (!modalId || modalId === this.host.id) {
227
+ this.hide();
228
+ event.preventDefault();
229
+ event.stopPropagation();
230
+ }
231
+ }
232
+ }
233
+ handleKeyDown(event) {
234
+ if (event.key === 'Escape' && this.open) {
235
+ // Only handle ESC if this is the topmost modal
236
+ const openModals = Array.from(document.querySelectorAll('bcm-modal[open]'));
237
+ const topModal = openModals[openModals.length - 1];
238
+ if (topModal !== this.host) {
239
+ return;
240
+ }
241
+ event.preventDefault();
242
+ if (this.closeOnEscape) {
243
+ if (this.backdrop === 'static') {
244
+ this.shakeModal();
245
+ }
246
+ else {
247
+ this.hide();
248
+ }
249
+ }
250
+ else if (this.backdrop === 'static') {
251
+ this.shakeModal();
252
+ }
253
+ }
254
+ }
255
+ /**
256
+ * Programmatically opens the modal
257
+ */
258
+ async show() {
259
+ this.open = true;
260
+ }
261
+ /**
262
+ * Programmatically closes the modal
263
+ */
264
+ async hide() {
265
+ this.open = false;
266
+ }
267
+ /**
268
+ * Toggles the modal open/closed state
269
+ */
270
+ async toggle() {
271
+ this.open = !this.open;
272
+ }
273
+ shakeModal() {
274
+ this.shake = true;
275
+ setTimeout(() => {
276
+ this.shake = false;
277
+ }, 300);
278
+ }
279
+ handleBackdropClick = (event) => {
280
+ const target = event.target;
281
+ // Check if click is on the container (backdrop area), not on modal content
282
+ if (target.getAttribute('part') === 'container') {
283
+ if (this.backdrop === 'static') {
284
+ this.shakeModal();
285
+ }
286
+ else if (this.closeOnBackdrop) {
287
+ this.hide();
288
+ }
289
+ }
290
+ };
291
+ handleDialogCancel = (event) => {
292
+ event.preventDefault();
293
+ if (this.closeOnEscape) {
294
+ if (this.backdrop === 'static') {
295
+ this.shakeModal();
296
+ }
297
+ else {
298
+ this.hide();
299
+ }
300
+ }
301
+ };
302
+ getModalStyle() {
303
+ if (this.fullScreen) {
304
+ return {
305
+ width: '100vw',
306
+ height: '100vh',
307
+ maxWidth: 'none',
308
+ maxHeight: 'none',
309
+ };
310
+ }
311
+ if (this.fullWidth) {
312
+ return {
313
+ width: '100%',
314
+ maxWidth: '100%',
315
+ };
316
+ }
317
+ const widths = {
318
+ small: '400px',
319
+ medium: '600px',
320
+ large: '800px',
321
+ xlarge: '1024px',
322
+ xxlarge: '1200px',
323
+ full: '100%',
324
+ };
325
+ return {
326
+ width: widths[this.size],
327
+ maxWidth: this.fullScreen ? 'none' : '90vw',
328
+ maxHeight: this.fullScreen ? 'none' : '90vh',
329
+ };
330
+ }
331
+ componentDidLoad() {
332
+ if (this.open && this.dialogRef) {
333
+ this.dialogRef.showModal();
334
+ }
335
+ }
336
+ disconnectedCallback() {
337
+ if (this.dialogRef && this.open) {
338
+ this.dialogRef.close();
339
+ }
340
+ }
341
+ render() {
342
+ const { dialog, container, modal, header, headerContent, title, helperText, closeButton, content, footer } = this.modalClass({
343
+ open: this.open,
344
+ placement: this.placement,
345
+ size: this.size,
346
+ fullScreen: this.fullScreen,
347
+ shake: this.shake,
348
+ noHeader: this.noHeader,
349
+ noFooter: this.noFooter,
350
+ });
351
+ return (index.h("dialog", { key: '604224de7fad889eff33705ec549d41927728f7d', ref: el => (this.dialogRef = el), part: "dialog", class: dialog(), onClick: this.handleBackdropClick, onCancel: this.handleDialogCancel, "aria-labelledby": "modal-title", "aria-describedby": this.helperText ? 'modal-helper' : undefined, "aria-modal": "true" }, index.h("div", { key: '7182bea36412891a27153711392e9e70920ac9c4', part: "container", class: container() }, index.h("div", { key: 'a8ad382c7766e1db2fc330aa73479bb3e5002eff', part: "modal", class: modal(), style: this.getModalStyle(), role: "document", onClick: e => e.stopPropagation() }, !this.noHeader && (index.h("div", { key: '8ea66d15bc39c5b06d887529e8af07020bfe4fc4', part: "header", class: header() }, index.h("div", { key: '24ed7baca534c2016a0e6abcaa396643ab91f5c7', part: "header-content", class: headerContent() }, index.h("h2", { key: '4dd835faebd8b96c1a77dfc07731aa76418e2afc', id: "modal-title", part: "title", class: title() }, index.h("slot", { key: 'bf2d40045ccc6040d990d7caccbefa1e0f9e9164', name: "header" }, this.headerText)), this.helperText && (index.h("p", { key: '4dac43e3355fc7d53500dc90fcbfe3191e174c76', id: "modal-helper", part: "helper-text", class: helperText() }, index.h("slot", { key: 'dd37c548df818e4a758bdeede4dc0fd49ca241a3', name: "helper" }, this.helperText)))), index.h("button", { key: '38262ebb76c8d471f4e6070c32e3a4ef4ca01007', part: "close-button", class: closeButton(), onClick: () => this.hide(), "aria-label": "Close modal", type: "button" }, index.h("bcm-icon", { key: '69fca23e4377193ead2931283c6321df9189e3c7', name: "fa-solid fa-xmark" })))), index.h("div", { key: 'e67d5ee554203441246394a2062d4a5662f04b21', part: "content", class: content() }, index.h("slot", { key: '71020c0e5593186befb4ea9841b459986a6dfc2b' })), !this.noFooter && (index.h("div", { key: '12bf38555e3cf905a56543a24742746364c3a41d', part: "footer", class: footer() }, index.h("slot", { key: 'afc38ce22fcb46b85795f8d95eab2f20c6ef3deb', name: "footer" })))))));
352
+ }
353
+ static get watchers() { return {
354
+ "open": ["handleOpenChange"]
355
+ }; }
356
+ };
357
+ BcmModal.style = modalCss;
358
+
359
+ exports.bcm_modal = BcmModal;
360
+ //# sourceMappingURL=bcm-modal.entry.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bcm-modal.entry.cjs.js","sources":["src/components/modal/modal.css?tag=bcm-modal&encapsulation=shadow","src/components/modal/modal.component.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n","import { Component, Prop, h, Element, Event, EventEmitter, Method, Watch, Listen, State } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\nexport type ModalSize = 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'full';\nexport type ModalPlacement = 'center' | 'top';\n\n/**\n * @component BcmModal\n * @description A flexible modal dialog component built on the native HTML Dialog API.\n * Provides a powerful way to display content in a layer above the page with full keyboard and focus management.\n *\n * @slot - Main content area of the modal\n * @slot header - Custom header content (overrides header-text prop)\n * @slot helper - Custom helper text content (overrides helper-text prop)\n * @slot footer - Footer content for action buttons\n *\n * @part dialog - The native dialog element\n * @part container - The container wrapper for centering and scrolling\n * @part modal - The main modal box\n * @part header - The header section\n * @part header-content - The content wrapper inside header\n * @part title - The title heading element\n * @part helper-text - The helper text paragraph\n * @part close-button - The close button in header\n * @part content - The main content area\n * @part footer - The footer section\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <bcm-modal open header-text=\"Welcome\" helper-text=\"Please read carefully\">\n * <p>Modal content goes here</p>\n * <div slot=\"footer\">\n * <button data-dismiss>Close</button>\n * </div>\n * </bcm-modal>\n *\n * <!-- Custom size and placement -->\n * <bcm-modal size=\"large\" placement=\"top\">\n * <div slot=\"header\">Custom Header</div>\n * <p>Content here</p>\n * <div slot=\"footer\">\n * <button>Cancel</button>\n * <button>Confirm</button>\n * </div>\n * </bcm-modal>\n *\n * <!-- Full screen modal -->\n * <bcm-modal full-screen no-footer>\n * <p>Full screen content</p>\n * </bcm-modal>\n *\n * <!-- Programmatic usage -->\n * <bcm-modal id=\"myModal\">Content</bcm-modal>\n * <script>\n * document.getElementById('myModal').show();\n * </script>\n * ```\n */\n@Component({\n tag: 'bcm-modal',\n styleUrl: 'modal.css',\n shadow: true,\n})\nexport class BcmModal {\n @Element() host: HTMLBcmModalElement;\n\n private dialogRef?: HTMLDialogElement;\n\n /**\n * Controls whether the modal is open or closed\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * The size of the modal\n * - 'small': 400px\n * - 'medium': 600px\n * - 'large': 800px\n * - 'xlarge': 1024px\n * - 'xxlarge': 1200px\n * - 'full': 100% width\n */\n @Prop() size: ModalSize = 'medium';\n\n /**\n * The placement of the modal on the screen\n * - 'center': Centered vertically and horizontally\n * - 'top': Aligned to the top with 80px padding\n */\n @Prop() placement: ModalPlacement = 'center';\n\n /**\n * Controls backdrop behavior\n * - true: Shows backdrop, modal can be closed by clicking outside\n * - false: No backdrop\n * - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)\n */\n @Prop() backdrop: boolean | 'static' = true;\n\n /**\n * Makes the modal take full width of the viewport (max-width: 100%)\n */\n @Prop({ attribute: 'full-width' }) fullWidth: boolean = false;\n\n /**\n * Makes the modal take the full screen (100vw x 100vh, no border radius)\n */\n @Prop({ attribute: 'full-screen' }) fullScreen: boolean = false;\n\n /**\n * Text to display in the modal header\n */\n @Prop({ attribute: 'header-text' }) headerText?: string;\n\n /**\n * Helper text to display below the header title\n */\n @Prop({ attribute: 'helper-text' }) helperText?: string;\n\n /**\n * Hides the header section completely\n */\n @Prop({ attribute: 'no-header' }) noHeader: boolean = false;\n\n /**\n * Hides the footer section completely\n */\n @Prop({ attribute: 'no-footer' }) noFooter: boolean = false;\n\n /**\n * Allows closing the modal by clicking on the backdrop\n */\n @Prop({ attribute: 'close-on-backdrop' }) closeOnBackdrop: boolean = true;\n\n /**\n * Allows closing the modal by pressing the Escape key\n */\n @Prop({ attribute: 'close-on-escape' }) closeOnEscape: boolean = true;\n\n @State() isAnimating: boolean = false;\n @State() shake: boolean = false;\n\n /**\n * Emitted after the modal has opened\n */\n @Event() bcmOpen: EventEmitter<void>;\n\n /**\n * Emitted after the modal has closed\n */\n @Event() bcmClose: EventEmitter<void>;\n\n /**\n * Emitted before the modal opens. Can be cancelled by calling event.preventDefault()\n */\n @Event({ cancelable: true }) bcmBeforeOpen: EventEmitter<void>;\n\n /**\n * Emitted before the modal closes. Can be cancelled by calling event.preventDefault()\n */\n @Event({ cancelable: true }) bcmBeforeClose: EventEmitter<void>;\n\n private modalClass = tv({\n slots: {\n dialog:\n 'bcm-ui-element fixed inset-0 m-0 p-0 w-full max-w-full h-full max-h-full border-none bg-transparent backdrop:bg-color-default-dark backdrop:opacity-50 backdrop:transition-opacity backdrop:duration-300',\n container: 'fixed inset-0 flex items-start justify-center p-4 overflow-y-auto overscroll-contain',\n modal: 'relative bg-color-basic-base text-color-default rounded-lg shadow-2xl transform transition-all duration-300 ease-in-out flex flex-col',\n header: 'flex justify-between items-start bg-color-base text-color-default border-color-default border-solid border-0 border-b rounded-t-lg',\n headerContent: 'flex-1 min-w-0 flex items-center gap-2',\n title: 'font-semibold m-0 text-size-6 text-color-header',\n helperText: 'text-size-5 text-color-placeholder m-0',\n closeButton:\n 'text-size-5 font-medium text-color-default bg-transparent border-none p-0 h-6 w-6 rounded hover:bg-color-default-hover cursor-pointer active:bg-color-active transition-colors flex-shrink-0 outline-none focus-visible:ring ',\n content: 'flex-grow overflow-y-auto',\n footer: 'flex items-center justify-end gap-2',\n },\n variants: {\n open: {\n true: {\n modal: 'opacity-100 translate-y-0 scale-100',\n },\n false: {\n modal: 'opacity-0 -translate-y-4 scale-95',\n },\n },\n placement: {\n center: {\n container: 'items-center',\n },\n top: {\n container: 'items-start pt-20',\n },\n },\n size: {\n small: {\n header: 'py-3 px-4',\n content: 'p-4',\n footer: 'py-3 px-4',\n },\n medium: {\n header: 'py-4 px-5',\n content: 'p-5',\n footer: 'py-4 px-5',\n },\n large: {\n header: 'py-4 px-6',\n content: 'p-6',\n footer: 'py-4 px-6',\n },\n xlarge: {\n header: 'py-5 px-6',\n content: 'p-6',\n footer: 'py-5 px-6',\n },\n xxlarge: {\n header: 'py-5 px-8',\n content: 'p-8',\n footer: 'py-5 px-8',\n },\n full: {\n header: 'py-5 px-8',\n content: 'p-8',\n footer: 'py-5 px-8',\n },\n },\n fullScreen: {\n true: {\n modal: 'rounded-none w-screen h-screen max-w-none max-h-none',\n container: 'p-0',\n },\n },\n shake: {\n true: {\n modal: 'animate-shake',\n },\n },\n noHeader: {\n true: {\n header: 'hidden',\n },\n },\n noFooter: {\n true: {\n footer: 'hidden',\n },\n },\n },\n });\n\n @Watch('open')\n async handleOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.isAnimating = true;\n const event = this.bcmBeforeOpen.emit();\n if (event.defaultPrevented) {\n this.open = false;\n return;\n }\n\n // Use native dialog API with top-layer\n if (this.dialogRef) {\n this.dialogRef.showModal();\n // Small delay for animation\n await new Promise(resolve => setTimeout(resolve, 50));\n this.isAnimating = false;\n this.bcmOpen.emit();\n }\n } else {\n this.isAnimating = true;\n const event = this.bcmBeforeClose.emit();\n if (event.defaultPrevented) {\n this.open = true;\n return;\n }\n\n // Wait for animation before closing\n await new Promise(resolve => setTimeout(resolve, 300));\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n this.isAnimating = false;\n this.bcmClose.emit();\n }\n }\n\n @Listen('click', { capture: true })\n handleClick(event: MouseEvent) {\n // Use composedPath to work with shadow DOM and slots\n const path = event.composedPath() as HTMLElement[];\n const dismissElement = path.find(el => el.hasAttribute?.('data-dismiss'));\n const closeModalElement = path.find(el => el.hasAttribute?.('data-close-modal'));\n\n if (dismissElement) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n } else if (closeModalElement) {\n const modalId = closeModalElement.getAttribute('data-close-modal');\n // If modalId matches this modal's id, close it\n if (!modalId || modalId === this.host.id) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.open) {\n // Only handle ESC if this is the topmost modal\n const openModals = Array.from(document.querySelectorAll('bcm-modal[open]'));\n const topModal = openModals[openModals.length - 1];\n\n if (topModal !== this.host) {\n return;\n }\n\n event.preventDefault();\n if (this.closeOnEscape) {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else {\n this.hide();\n }\n } else if (this.backdrop === 'static') {\n this.shakeModal();\n }\n }\n }\n\n /**\n * Programmatically opens the modal\n */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /**\n * Programmatically closes the modal\n */\n @Method()\n async hide(): Promise<void> {\n this.open = false;\n }\n\n /**\n * Toggles the modal open/closed state\n */\n @Method()\n async toggle(): Promise<void> {\n this.open = !this.open;\n }\n\n private shakeModal() {\n this.shake = true;\n setTimeout(() => {\n this.shake = false;\n }, 300);\n }\n\n private handleBackdropClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n // Check if click is on the container (backdrop area), not on modal content\n if (target.getAttribute('part') === 'container') {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else if (this.closeOnBackdrop) {\n this.hide();\n }\n }\n };\n\n private handleDialogCancel = (event: Event) => {\n event.preventDefault();\n if (this.closeOnEscape) {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else {\n this.hide();\n }\n }\n };\n\n private getModalStyle() {\n if (this.fullScreen) {\n return {\n width: '100vw',\n height: '100vh',\n maxWidth: 'none',\n maxHeight: 'none',\n };\n }\n\n if (this.fullWidth) {\n return {\n width: '100%',\n maxWidth: '100%',\n };\n }\n\n const widths = {\n small: '400px',\n medium: '600px',\n large: '800px',\n xlarge: '1024px',\n xxlarge: '1200px',\n full: '100%',\n };\n\n return {\n width: widths[this.size],\n maxWidth: this.fullScreen ? 'none' : '90vw',\n maxHeight: this.fullScreen ? 'none' : '90vh',\n };\n }\n\n componentDidLoad() {\n if (this.open && this.dialogRef) {\n this.dialogRef.showModal();\n }\n }\n\n disconnectedCallback() {\n if (this.dialogRef && this.open) {\n this.dialogRef.close();\n }\n }\n\n render() {\n const { dialog, container, modal, header, headerContent, title, helperText, closeButton, content, footer } = this.modalClass({\n open: this.open,\n placement: this.placement,\n size: this.size,\n fullScreen: this.fullScreen,\n shake: this.shake,\n noHeader: this.noHeader,\n noFooter: this.noFooter,\n });\n\n return (\n <dialog\n ref={el => (this.dialogRef = el)}\n part=\"dialog\"\n class={dialog()}\n onClick={this.handleBackdropClick}\n onCancel={this.handleDialogCancel}\n aria-labelledby=\"modal-title\"\n aria-describedby={this.helperText ? 'modal-helper' : undefined}\n aria-modal=\"true\"\n >\n <div part=\"container\" class={container()}>\n <div part=\"modal\" class={modal()} style={this.getModalStyle()} role=\"document\" onClick={e => e.stopPropagation()}>\n {!this.noHeader && (\n <div part=\"header\" class={header()}>\n <div part=\"header-content\" class={headerContent()}>\n <h2 id=\"modal-title\" part=\"title\" class={title()}>\n <slot name=\"header\">{this.headerText}</slot>\n </h2>\n {this.helperText && (\n <p id=\"modal-helper\" part=\"helper-text\" class={helperText()}>\n <slot name=\"helper\">{this.helperText}</slot>\n </p>\n )}\n </div>\n <button part=\"close-button\" class={closeButton()} onClick={() => this.hide()} aria-label=\"Close modal\" type=\"button\">\n <bcm-icon name=\"fa-solid fa-xmark\"></bcm-icon>\n </button>\n </div>\n )}\n\n <div part=\"content\" class={content()}>\n <slot />\n </div>\n\n {!this.noFooter && (\n <div part=\"footer\" class={footer()}>\n <slot name=\"footer\" />\n </div>\n )}\n </div>\n </div>\n </dialog>\n );\n }\n}\n"],"names":["tv","h"],"mappings":"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"}