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
@@ -0,0 +1,550 @@
1
+ import { r as registerInstance, c as createEvent, a as getElement, h, F as Fragment, H as Host } from './index-B6Ppbs5O.js';
2
+ import { t as tv } from './tv-CEcVC0yX.js';
3
+
4
+ const fileUploadCss = ".block{display:block}:host{display:block}.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}.relative{position:relative}.flex{display:flex}.hidden{display:none}.size-4{height:1rem;width:1rem}.size-5{height:1.25rem;width:1.25rem}.size-8{height:2rem;width:2rem}.h-1\\.5{height:.375rem}.h-10{height:2.5rem}.h-full{height:100%}.w-\\[50px\\]{width:50px}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\\[3ch\\]{min-width:3ch}.max-w-64{max-width:16rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{user-select:none}.appearance-none{appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:var(--bcm-ui-border-radius-default,6px)}.rounded-full{border-radius:var(--bcm-ui-border-radius-full,9999px)}.border{border-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-color-default{border-color:var(--bcm-ui-color-border-default)}.border-color-disabled{border-color:var(--bcm-ui-color-border-disabled)}.border-color-primary{border-color:var(--bcm-ui-color-border-primary)}.bg-color-basic-masterpage{background-color:var(--bcm-ui-color-background-basic-masterpage)}.bg-color-default{background-color:var(--bcm-ui-color-background-default-default)}.bg-color-disabled{background-color:var(--bcm-ui-color-background-disabled-default)}.bg-color-primary{background-color:var(--bcm-ui-color-background-primary-default)}.bg-color-soft-blue{background-color:var(--bcm-ui-color-background-soft-blue-default)}.bg-transparent{background-color:transparent}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-4{padding-bottom:1rem;padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-size-10{font-size:var(--bcm-ui-font-size-10,36px);line-height:var(--bcm-ui-line-height-10,44px)}.text-size-2{font-size:var(--bcm-ui-font-size-2,10px);line-height:var(--bcm-ui-line-height-2,12px)}.text-size-3{font-size:var(--bcm-ui-font-size-3,12px);line-height:var(--bcm-ui-line-height-3,16px)}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-8{font-size:var(--bcm-ui-font-size-8,24px);line-height:var(--bcm-ui-line-height-8,32px)}.font-medium{font-weight:500}.text-color-caption{color:var(--bcm-ui-color-text-caption)}.text-color-default{color:var(--bcm-ui-color-text-default)}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-helper{color:var(--bcm-ui-color-text-helper)}.text-color-icon-default{color:var(--bcm-ui-color-text-icon-default)}.text-color-label{color:var(--bcm-ui-color-text-label)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.no-underline{text-decoration-line:none}.opacity-60{opacity:.6}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.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-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\\:bg-color-default-hover:hover{background-color:var(--bcm-ui-color-background-default-hover)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:no-underline:hover{text-decoration-line:none}";
5
+
6
+ /**
7
+ * @component BcmFileUpload
8
+ * @description A fully featured drag-and-drop file uploader component.
9
+ * Supports form-associated behavior, validation, custom size limits,
10
+ * accepted file type filtering, multiple file selection, progress tracking,
11
+ * upload canceling, file removal, and accessibility events (focus/blur).
12
+ *
13
+ * Upload progress is currently simulated locally. The `uploadUrl` prop
14
+ * is reserved for future real HTTP upload integration and has no effect yet.
15
+ *
16
+ * @example Basic usage
17
+ * <bcm-file-upload name="report" label="Upload Report"></bcm-file-upload>
18
+ *
19
+ * @example Multiple files
20
+ * <bcm-file-upload name="attachments" multiple></bcm-file-upload>
21
+ *
22
+ * @example Custom max size and accepted formats
23
+ * <bcm-file-upload
24
+ * name="medicalFiles"
25
+ * accept=".pdf,.jpg"
26
+ * maxSize={5}
27
+ * ></bcm-file-upload>
28
+ *
29
+ * @prop {string} name
30
+ * The name of the form field used when the component is inside a `<form>`.
31
+ * Supports automatic FormData generation including:
32
+ * - single upload: name="file"
33
+ * - multiple upload: name="file[0], file[1], ..."
34
+ *
35
+ * @prop {string} label
36
+ * Optional label shown above the upload zone.
37
+ *
38
+ * @prop {string} caption
39
+ * Optional helper text rendered below the file list. Example: “Max size 5MB”.
40
+ *
41
+ * @prop {boolean} multiple
42
+ * Allows selecting and uploading multiple files at once.
43
+ *
44
+ * @prop {string} accept
45
+ * Comma-separated list of allowed file extensions.
46
+ * Example: ".pdf,.xls,.png".
47
+ *
48
+ * @prop {number} maxSize
49
+ * Maximum allowed size per file (in MB). If exceeded, an error alert appears.
50
+ *
51
+ * @prop {boolean} required
52
+ * Enables form validation — at least one file must be uploaded.
53
+ * Validity integrates with native `<form>` using ElementInternals.
54
+ *
55
+ * @prop {boolean} disabled
56
+ * Makes the uploader non-interactive: no clicking, no drag-and-drop.
57
+ *
58
+ * @prop {"medium" | "small"} size
59
+ * Controls spacing, typography, and visual density of the upload zone.
60
+ *
61
+ * @prop {string} uploadUrl
62
+ * Reserved for future backend upload integration.
63
+ * Currently has no effect and does not trigger any HTTP requests.
64
+ *
65
+ * @prop {number} maxFileCount
66
+ * Optional limit for how many files can be selected in total.
67
+ * Only applied when `multiple` is true.
68
+ * If exceeded, new files are ignored and a max-file-count error is shown.
69
+ *
70
+ * @prop {BcmUploadErrorMessages} customErrorMessages
71
+ * Optional override for all error messages:
72
+ * - maxSize: file too large
73
+ * - type: unsupported file type
74
+ * - maxFileCount: too many files selected
75
+ * - required: no file selected while required
76
+ *
77
+ *
78
+ * @event {EventEmitter<File[]>} bcmFileChange
79
+ * Fired whenever the component's internal file list changes.
80
+ * Emits an array of the current File objects.
81
+ *
82
+ * @event {EventEmitter<BcmUploadItem>} bcmFileRemoved
83
+ * Fired when the user removes a file from the list.
84
+ *
85
+ * @event {EventEmitter<BcmUploadItem>} bcmUploadCanceled
86
+ * Fired when an upload is canceled before completion.
87
+ *
88
+ * @event {EventEmitter<FocusEvent>} bcmFocus
89
+ * Fired when upload zone receives keyboard or mouse focus.
90
+ *
91
+ * @event {EventEmitter<FocusEvent>} bcmBlur
92
+ * Fired when upload zone loses focus.
93
+ *
94
+ *
95
+ * @csspart upload-zone
96
+ * The root clickable drop area for file selection or drag-and-drop.
97
+ *
98
+ * @csspart file-list
99
+ * The container wrapping rendered file rows.
100
+ *
101
+ * @csspart file-row
102
+ * A single file entry including its name, actions, and progress bar.
103
+ *
104
+ * @csspart remove-btn
105
+ * The remove action button inside uploaded file rows.
106
+ *
107
+ * @csspart cancel-btn
108
+ * The cancel upload button during uploading progress.
109
+ *
110
+ * @csspart download-btn
111
+ * The download button for already uploaded files.
112
+ *
113
+ * @csspart label
114
+ * The external label text displayed above the component.
115
+ *
116
+ * @csspart caption
117
+ * Helper or informative caption displayed below the uploaded list.
118
+ */
119
+ const uploadClasses = tv({
120
+ slots: {
121
+ container: 'bcm-ui-element flex flex-col gap-2 w-full max-w-64',
122
+ label: 'text-size-4 font-medium text-color-label',
123
+ // Upload Zone
124
+ zone: [
125
+ 'relative rounded border border-dashed transition-all duration-200 ease-in-out',
126
+ 'px-4 py-4 select-none',
127
+ 'border-color-default bg-color-basic-masterpage',
128
+ 'flex items-center justify-center',
129
+ ],
130
+ zoneActive: 'border-color-primary bg-color-soft-blue',
131
+ iconContainer: 'flex items-center justify-center shrink-0',
132
+ iconSizeClass: 'text-size-10',
133
+ zoneTextWrapper: 'flex flex-col flex-1 min-w-0',
134
+ zoneTextMain: 'text-size-4 text-color-default font-medium',
135
+ zoneLink: 'text-color-primary hover:underline',
136
+ zoneTextSub: 'text-size-3 text-color-caption',
137
+ // File List
138
+ list: 'flex flex-col gap-3',
139
+ // File Row
140
+ fileRow: [
141
+ 'flex flex-col items-center gap-2 rounded border transition-colors min-w-0 px-3 py-1.5',
142
+ 'bg-color-default border-color-default',
143
+ ],
144
+ fileIcon: 'flex items-center justify-center rounded bg-color-soft-blue shrink-0',
145
+ fileNameWrapper: 'flex flex-col flex-1 min-w-0',
146
+ fileTitle: 'text-size-4 font-medium text-color-default',
147
+ fileName: 'text-size-4 text-color-default truncate',
148
+ // Progress
149
+ progressWrapper: 'flex items-center gap-3 w-full',
150
+ progressBar: 'h-full bg-color-primary rounded transition-all duration-300 ease-out',
151
+ percent: 'text-size-4 font-medium text-color-caption min-w-[3ch] text-right',
152
+ // Actions
153
+ actions: 'flex items-center gap-2',
154
+ iconBtn: [
155
+ 'size-4 rounded-full flex items-center justify-center transition-colors cursor-pointer appearance-none',
156
+ 'text-color-icon-default hover:bg-color-default-hover border-none',
157
+ ],
158
+ caption: 'text-size-3 text-color-caption',
159
+ },
160
+ variants: {
161
+ size: {
162
+ medium: {
163
+ zone: 'flex-col text-center gap-2',
164
+ iconContainer: 'h-10 w-[50px]',
165
+ zoneTextWrapper: 'items-center gap-1',
166
+ },
167
+ small: {
168
+ zone: 'px-3 py-4 gap-2 flex-row text-left',
169
+ iconContainer: 'size-8',
170
+ iconSizeClass: 'text-size-8',
171
+ zoneTextWrapper: 'items-start gap-1',
172
+ label: 'text-size-3',
173
+ caption: 'text-size-2',
174
+ },
175
+ },
176
+ disabled: {
177
+ true: 'opacity-60 cursor-not-allowed',
178
+ false: '',
179
+ },
180
+ },
181
+ compoundVariants: [
182
+ {
183
+ disabled: true,
184
+ class: {
185
+ zone: 'bg-color-disabled border-color-disabled cursor-not-allowed',
186
+ zoneTextMain: 'text-color-disabled',
187
+ zoneTextSub: 'text-color-disabled',
188
+ zoneLink: 'text-color-disabled cursor-not-allowed no-underline hover:no-underline',
189
+ },
190
+ },
191
+ {
192
+ disabled: false,
193
+ class: {
194
+ zone: 'cursor-pointer',
195
+ },
196
+ },
197
+ ],
198
+ defaultVariants: {
199
+ size: 'medium',
200
+ disabled: false,
201
+ },
202
+ });
203
+ const BcmFileUpload = class {
204
+ constructor(hostRef) {
205
+ registerInstance(this, hostRef);
206
+ this.bcmFileChange = createEvent(this, "bcmFileChange", 1);
207
+ this.bcmFileRemoved = createEvent(this, "bcmFileRemoved", 1);
208
+ this.bcmUploadCanceled = createEvent(this, "bcmUploadCanceled", 1);
209
+ this.bcmFocus = createEvent(this, "bcmFocus", 1);
210
+ this.bcmBlur = createEvent(this, "bcmBlur", 1);
211
+ if (hostRef.$hostElement$["s-ei"]) {
212
+ this.internals = hostRef.$hostElement$["s-ei"];
213
+ }
214
+ else {
215
+ this.internals = hostRef.$hostElement$.attachInternals();
216
+ hostRef.$hostElement$["s-ei"] = this.internals;
217
+ }
218
+ }
219
+ get host() { return getElement(this); }
220
+ internals;
221
+ fileInput;
222
+ uploadTimer;
223
+ // Focus target for validation errors and keyboard focus
224
+ uploadZoneRef;
225
+ name = 'file';
226
+ label = '';
227
+ caption = '';
228
+ multiple = false;
229
+ accept = '.xls,.pdf';
230
+ maxSize = 2; // MB
231
+ required = false;
232
+ disabled = false;
233
+ size = 'medium';
234
+ /**
235
+ * Reserved for future backend upload integration.
236
+ * Currently does not affect component behavior.
237
+ */
238
+ uploadUrl;
239
+ /**
240
+ * Maximum number of files allowed in total.
241
+ * Only applied when `multiple` is true.
242
+ */
243
+ maxFileCount;
244
+ /**
245
+ * Allows consumers to override default error messages.
246
+ */
247
+ customErrorMessages;
248
+ files = [];
249
+ dragActive = false;
250
+ maxSizeError = false;
251
+ typeError = false;
252
+ maxFileCountError = false;
253
+ // Emits when file list changes
254
+ bcmFileChange;
255
+ // Emits when a file is removed
256
+ bcmFileRemoved;
257
+ // Emits when an upload is canceled
258
+ bcmUploadCanceled;
259
+ // Emits when the upload zone receives focus
260
+ bcmFocus;
261
+ // Emits when the upload zone loses focus
262
+ bcmBlur;
263
+ internalMaxSizeInBytes = this.maxSize * 1024 * 1024;
264
+ componentWillLoad() {
265
+ this.internalMaxSizeInBytes = this.maxSize * 1024 * 1024;
266
+ this.updateFormValueAndValidity();
267
+ }
268
+ disconnectedCallback() {
269
+ // Clear interval when component is removed from the DOM
270
+ if (this.uploadTimer) {
271
+ window.clearInterval(this.uploadTimer);
272
+ this.uploadTimer = undefined;
273
+ }
274
+ }
275
+ handleMaxSizeChange() {
276
+ this.internalMaxSizeInBytes = this.maxSize * 1024 * 1024;
277
+ }
278
+ /**
279
+ * Normalize and check a file against the `accept` attribute.
280
+ */
281
+ isFileAccepted(file) {
282
+ if (!this.accept)
283
+ return true;
284
+ const extension = '.' + (file.name.split('.').pop() || '').toLowerCase();
285
+ const accepted = this.accept
286
+ .toLowerCase()
287
+ .split(',')
288
+ .map(x => x.trim())
289
+ .filter(Boolean); // e.g. ['.pdf', '.jpg', '.png']
290
+ return accepted.includes(extension);
291
+ }
292
+ /**
293
+ * Update form value and validity state for form-associated behavior.
294
+ */
295
+ updateFormValueAndValidity() {
296
+ if (!this.internals)
297
+ return;
298
+ if (!this.files.length) {
299
+ this.internals.setFormValue(null);
300
+ if (this.required) {
301
+ const msg = this.customErrorMessages?.required ||
302
+ 'Please upload at least one file.';
303
+ this.internals.setValidity({ valueMissing: true }, msg,
304
+ // Use upload zone if available, otherwise host as the validation anchor
305
+ this.uploadZoneRef ?? this.host);
306
+ }
307
+ else {
308
+ this.internals.setValidity({});
309
+ }
310
+ return;
311
+ }
312
+ const formData = new FormData();
313
+ this.files.forEach((item, index) => {
314
+ const key = this.multiple ? `${this.name}[${index}]` : this.name;
315
+ formData.append(key, item.file);
316
+ });
317
+ this.internals.setFormValue(formData);
318
+ this.internals.setValidity({});
319
+ }
320
+ emitChange() {
321
+ this.bcmFileChange.emit(this.files.map(f => f.file));
322
+ }
323
+ /**
324
+ * Simulate upload progress. Replace with real upload logic if needed.
325
+ */
326
+ startFakeUpload() {
327
+ if (this.uploadTimer) {
328
+ window.clearInterval(this.uploadTimer);
329
+ }
330
+ this.uploadTimer = window.setInterval(() => {
331
+ let anyUploading = false;
332
+ this.files = this.files.map(item => {
333
+ if (item.status !== 'uploading')
334
+ return item;
335
+ anyUploading = true;
336
+ const current = item.progress ?? 0;
337
+ const next = Math.min(current + 15, 100);
338
+ if (next >= 100) {
339
+ return { ...item, status: 'uploaded', progress: undefined };
340
+ }
341
+ return { ...item, progress: next };
342
+ });
343
+ if (!anyUploading && this.uploadTimer) {
344
+ window.clearInterval(this.uploadTimer);
345
+ this.uploadTimer = undefined;
346
+ this.updateFormValueAndValidity();
347
+ this.emitChange();
348
+ }
349
+ }, 300);
350
+ }
351
+ /**
352
+ * Add files from input or drop.
353
+ */
354
+ addFiles(fileList) {
355
+ if (!fileList || this.disabled)
356
+ return;
357
+ const newItems = [];
358
+ let hasSizeError = false;
359
+ let hasTypeError = false;
360
+ Array.from(fileList).forEach(file => {
361
+ if (!this.isFileAccepted(file)) {
362
+ hasTypeError = true;
363
+ return;
364
+ }
365
+ if (file.size > this.internalMaxSizeInBytes) {
366
+ hasSizeError = true;
367
+ return;
368
+ }
369
+ newItems.push({
370
+ id: crypto.randomUUID(),
371
+ file,
372
+ status: 'uploading',
373
+ progress: 0,
374
+ });
375
+ });
376
+ this.maxSizeError = hasSizeError;
377
+ this.typeError = hasTypeError;
378
+ this.maxFileCountError = false;
379
+ // If there are no valid files, just update validity and exit.
380
+ if (!newItems.length) {
381
+ this.updateFormValueAndValidity();
382
+ this.emitChange();
383
+ return;
384
+ }
385
+ let merged;
386
+ if (this.multiple) {
387
+ if (typeof this.maxFileCount === 'number') {
388
+ const remaining = this.maxFileCount - this.files.length;
389
+ if (remaining <= 0) {
390
+ this.maxFileCountError = true;
391
+ this.updateFormValueAndValidity();
392
+ this.emitChange();
393
+ return;
394
+ }
395
+ const acceptedNew = newItems.slice(0, Math.max(0, remaining));
396
+ if (acceptedNew.length < newItems.length) {
397
+ this.maxFileCountError = true;
398
+ }
399
+ merged = [...this.files, ...acceptedNew];
400
+ }
401
+ else {
402
+ merged = [...this.files, ...newItems];
403
+ }
404
+ }
405
+ else {
406
+ // single file mode → only take first new item
407
+ merged = [newItems[0]];
408
+ }
409
+ this.files = merged;
410
+ this.updateFormValueAndValidity();
411
+ this.emitChange();
412
+ // Only fake upload for now
413
+ this.startFakeUpload();
414
+ }
415
+ removeFile(item) {
416
+ this.files = this.files.filter(f => f.id !== item.id);
417
+ this.bcmFileRemoved.emit(item);
418
+ this.updateFormValueAndValidity();
419
+ this.emitChange();
420
+ }
421
+ cancelUpload(item) {
422
+ this.files = this.files.filter(f => f.id !== item.id);
423
+ this.bcmUploadCanceled.emit(item);
424
+ this.updateFormValueAndValidity();
425
+ this.emitChange();
426
+ }
427
+ onFileInputChange = (event) => {
428
+ const input = event.target;
429
+ this.addFiles(input.files);
430
+ // Reset input so the same file can be selected again
431
+ input.value = '';
432
+ };
433
+ downloadFile(file) {
434
+ const url = URL.createObjectURL(file);
435
+ const a = document.createElement('a');
436
+ a.href = url;
437
+ a.download = file.name;
438
+ a.click();
439
+ URL.revokeObjectURL(url);
440
+ }
441
+ handleDrop(ev) {
442
+ ev.preventDefault();
443
+ this.dragActive = false;
444
+ if (this.disabled)
445
+ return;
446
+ const files = ev.dataTransfer?.files || null;
447
+ if (!files || files.length === 0)
448
+ return;
449
+ const first = files.item(0);
450
+ if (!first || !this.isFileAccepted(first)) {
451
+ this.typeError = true;
452
+ return;
453
+ }
454
+ this.addFiles(files);
455
+ }
456
+ handleDragOver(ev) {
457
+ ev.preventDefault();
458
+ if (this.disabled)
459
+ return;
460
+ this.dragActive = true;
461
+ }
462
+ handleDragLeave(ev) {
463
+ ev.preventDefault();
464
+ this.dragActive = false;
465
+ }
466
+ openFileDialog = () => {
467
+ if (this.disabled)
468
+ return;
469
+ this.fileInput?.click();
470
+ };
471
+ formResetCallback() {
472
+ this.files = [];
473
+ this.maxSizeError = false;
474
+ this.typeError = false;
475
+ this.maxFileCountError = false;
476
+ if (this.uploadTimer) {
477
+ window.clearInterval(this.uploadTimer);
478
+ this.uploadTimer = undefined;
479
+ }
480
+ this.updateFormValueAndValidity();
481
+ this.emitChange();
482
+ }
483
+ /**
484
+ * When the browser or user calls element.focus(),
485
+ * move focus to the upload zone.
486
+ */
487
+ focus(options) {
488
+ this.uploadZoneRef?.focus(options);
489
+ }
490
+ handleFocus = (event) => {
491
+ this.bcmFocus.emit(event);
492
+ };
493
+ handleBlur = (event) => {
494
+ this.bcmBlur.emit(event);
495
+ };
496
+ renderErrors() {
497
+ if (!this.maxSizeError && !this.typeError && !this.maxFileCountError) {
498
+ return null;
499
+ }
500
+ const acceptedFormats = this.accept
501
+ .replace(/\./g, '')
502
+ .toUpperCase()
503
+ .replace(/,/g, ', ');
504
+ const maxSizeMsg = this.customErrorMessages?.maxSize ||
505
+ 'File size exceeds the maximum allowed limit.';
506
+ const typeMsg = this.customErrorMessages?.type ||
507
+ `Unsupported file type. Allowed formats: ${acceptedFormats}`;
508
+ const maxFileCountMsg = this.customErrorMessages?.maxFileCount ||
509
+ 'You have reached the maximum number of files.';
510
+ return (h("div", { class: "w-full space-y-1" }, this.maxSizeError && (h("bcm-alert", { status: "error", size: "small", dismissible: true, onBcmDismiss: () => (this.maxSizeError = false) }, maxSizeMsg)), this.typeError && (h("bcm-alert", { status: "error", size: "small", dismissible: true, onBcmDismiss: () => (this.typeError = false) }, typeMsg)), this.maxFileCountError && (h("bcm-alert", { status: "error", size: "small", dismissible: true, onBcmDismiss: () => (this.maxFileCountError = false) }, maxFileCountMsg))));
511
+ }
512
+ renderUploadZone() {
513
+ const classes = uploadClasses({ size: this.size, disabled: this.disabled });
514
+ const { zone, zoneActive, iconContainer, iconSizeClass, zoneTextWrapper, zoneTextMain, zoneTextSub, zoneLink, } = classes;
515
+ const zoneClasses = [zone(), this.dragActive && zoneActive()]
516
+ .filter(Boolean)
517
+ .join(' ');
518
+ const maxMb = Math.round(this.internalMaxSizeInBytes / (1024 * 1024));
519
+ const iconColorClass = this.dragActive
520
+ ? 'text-color-primary'
521
+ : 'text-color-icon-default';
522
+ return (h("div", { ref: el => (this.uploadZoneRef = el), tabindex: this.disabled ? undefined : 0, part: "upload-zone", class: zoneClasses, onClick: this.openFileDialog, onFocus: this.handleFocus, onBlur: this.handleBlur, onDragOver: ev => this.handleDragOver(ev), onDragLeave: ev => this.handleDragLeave(ev), onDrop: ev => this.handleDrop(ev) }, h("div", { class: iconContainer() }, h("bcm-icon", { name: "fa-solid fa-cloud-arrow-up", class: `${iconColorClass} ${iconSizeClass()}` })), h("div", { class: zoneTextWrapper() }, h("div", { class: zoneTextMain() }, "Drag & Drop", ' ', h("span", { class: "text-color-helper" }, "or "), h("a", { class: zoneLink(), onClick: e => {
523
+ e.preventDefault();
524
+ this.openFileDialog();
525
+ } }, "Choose File")), h("div", { class: zoneTextSub() }, "Max: ", maxMb, "MB Formats:", ' ', this.accept.replace(/\./g, '').toUpperCase().replace(/,/g, ', '))), h("input", { ref: el => (this.fileInput = el), type: "file", hidden: true, accept: this.accept, multiple: this.multiple, disabled: this.disabled, onChange: this.onFileInputChange })));
526
+ }
527
+ renderFileRow(item) {
528
+ const { percent, actions, iconBtn, fileRow, fileTitle } = uploadClasses({
529
+ size: this.size,
530
+ disabled: this.disabled,
531
+ });
532
+ const isUploading = item?.status === 'uploading';
533
+ return (h("div", { part: "file-row", class: fileRow(), title: item?.file?.name }, h("div", { class: "flex items-center justify-between w-full gap-2 min-w-0" }, h("div", { class: "flex items-center gap-1.5 min-w-0 flex-1 flex-shrink" }, h("div", { class: "flex items-center rounded bg-color-default shrink-0 text-size-3 text-color-caption" }, h("bcm-icon", { name: "fa-regular fa-file" })), h("span", { class: fileTitle() + ' truncate' }, item?.file?.name)), h("div", { class: actions() + ' flex-shrink-0' }, item.status === 'uploaded' && (h(Fragment, null, h("button", { type: "button", part: "download-btn", class: iconBtn(), onClick: () => this.downloadFile(item.file), title: "Download" }, h("bcm-icon", { name: "fa-regular fa-download", class: "text-size-4" })), h("button", { type: "button", part: "remove-btn", class: iconBtn(), onClick: () => this.removeFile(item), title: "Remove" }, h("bcm-icon", { name: "fa-regular fa-trash", class: "text-size-4" })))), isUploading && (h("button", { type: "button", part: "cancel-btn", class: 'text-color-default bg-transparent hover:bg-color-default-hover text-size-4 cursor-pointer flex items-center justify-center size-5 rounded-full border-none', onClick: () => this.cancelUpload(item), title: "Cancel" }, h("bcm-icon", { name: "fa-regular fa-xmark", class: "text-size-4" }))))), isUploading && (h("div", { class: "flex items-center gap-3 w-full min-w-0" }, h("div", { class: "h-1.5 flex-1 rounded-full bg-color-surface-default overflow-hidden" }, h("div", { class: "h-full bg-color-primary rounded-full transition-all duration-300 ease-out", style: { width: `${item.progress ?? 0}%` } })), h("span", { class: percent() }, item.progress ?? 0, "%")))));
534
+ }
535
+ render() {
536
+ const { container, label, list, caption } = uploadClasses({
537
+ size: this.size,
538
+ disabled: this.disabled,
539
+ });
540
+ return (h(Host, { key: '55e97908c7f1e8050231e1996086232e577c6f7f', tabindex: "-1" }, h("div", { key: '1a4ec527f4238923e8c1bba953c1eca16692b5ee', class: container() }, this.label && (h("label", { key: '07af6d58fbf4c3e97e9d2278173419ec024694ed', part: "label", class: label() }, this.label)), this.renderUploadZone(), this.renderErrors(), this.files.length > 0 && (h("div", { key: '17689bdd0cd4f7d060f35b616700fdf4ce8a0a70', part: "file-list", class: list() }, this.files.map(item => this.renderFileRow(item)))), this.caption && (h("span", { key: '89a5f04f9becb9af49040534e1e063c8adf9bfd6', part: "caption", class: caption() }, this.caption)))));
541
+ }
542
+ static get formAssociated() { return true; }
543
+ static get watchers() { return {
544
+ "maxSize": ["handleMaxSizeChange"]
545
+ }; }
546
+ };
547
+ BcmFileUpload.style = fileUploadCss;
548
+
549
+ export { BcmFileUpload as bcm_file_upload };
550
+ //# sourceMappingURL=bcm-file-upload.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bcm-file-upload.entry.js","sources":["src/components/upload/file-upload.css?tag=bcm-file-upload&encapsulation=shadow","src/components/upload/file-upload.component.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import {\n Component,\n Prop,\n State,\n h,\n Element,\n Event,\n EventEmitter,\n AttachInternals,\n ComponentInterface,\n Fragment,\n Watch,\n Host,\n} from '@stencil/core';\nimport { tv } from '@utils/tv';\n\nexport type BcmUploadStatus = 'uploading' | 'uploaded' | 'error';\n\nexport interface BcmUploadItem {\n id: string;\n file: File;\n status: BcmUploadStatus;\n progress?: number;\n}\n\nexport interface BcmUploadErrorMessages {\n /**\n * Error message shown when a file exceeds the maxSize limit.\n */\n maxSize?: string;\n\n /**\n * Error message shown when file type is not allowed by `accept`.\n */\n type?: string;\n\n /**\n * Error message shown when `maxFileCount` is exceeded.\n */\n maxFileCount?: string;\n\n /**\n * Error message used for `required` validation when no file is selected.\n */\n required?: string;\n}\n\n/**\n * @component BcmFileUpload\n * @description A fully featured drag-and-drop file uploader component.\n * Supports form-associated behavior, validation, custom size limits,\n * accepted file type filtering, multiple file selection, progress tracking,\n * upload canceling, file removal, and accessibility events (focus/blur).\n *\n * Upload progress is currently simulated locally. The `uploadUrl` prop\n * is reserved for future real HTTP upload integration and has no effect yet.\n *\n * @example Basic usage\n * <bcm-file-upload name=\"report\" label=\"Upload Report\"></bcm-file-upload>\n *\n * @example Multiple files\n * <bcm-file-upload name=\"attachments\" multiple></bcm-file-upload>\n *\n * @example Custom max size and accepted formats\n * <bcm-file-upload\n * name=\"medicalFiles\"\n * accept=\".pdf,.jpg\"\n * maxSize={5}\n * ></bcm-file-upload>\n *\n * @prop {string} name\n * The name of the form field used when the component is inside a `<form>`.\n * Supports automatic FormData generation including:\n * - single upload: name=\"file\"\n * - multiple upload: name=\"file[0], file[1], ...\"\n *\n * @prop {string} label\n * Optional label shown above the upload zone.\n *\n * @prop {string} caption\n * Optional helper text rendered below the file list. Example: “Max size 5MB”.\n *\n * @prop {boolean} multiple\n * Allows selecting and uploading multiple files at once.\n *\n * @prop {string} accept\n * Comma-separated list of allowed file extensions.\n * Example: \".pdf,.xls,.png\".\n *\n * @prop {number} maxSize\n * Maximum allowed size per file (in MB). If exceeded, an error alert appears.\n *\n * @prop {boolean} required\n * Enables form validation — at least one file must be uploaded.\n * Validity integrates with native `<form>` using ElementInternals.\n *\n * @prop {boolean} disabled\n * Makes the uploader non-interactive: no clicking, no drag-and-drop.\n *\n * @prop {\"medium\" | \"small\"} size\n * Controls spacing, typography, and visual density of the upload zone.\n *\n * @prop {string} uploadUrl\n * Reserved for future backend upload integration.\n * Currently has no effect and does not trigger any HTTP requests.\n *\n * @prop {number} maxFileCount\n * Optional limit for how many files can be selected in total.\n * Only applied when `multiple` is true.\n * If exceeded, new files are ignored and a max-file-count error is shown.\n *\n * @prop {BcmUploadErrorMessages} customErrorMessages\n * Optional override for all error messages:\n * - maxSize: file too large\n * - type: unsupported file type\n * - maxFileCount: too many files selected\n * - required: no file selected while required\n *\n *\n * @event {EventEmitter<File[]>} bcmFileChange\n * Fired whenever the component's internal file list changes.\n * Emits an array of the current File objects.\n *\n * @event {EventEmitter<BcmUploadItem>} bcmFileRemoved\n * Fired when the user removes a file from the list.\n *\n * @event {EventEmitter<BcmUploadItem>} bcmUploadCanceled\n * Fired when an upload is canceled before completion.\n *\n * @event {EventEmitter<FocusEvent>} bcmFocus\n * Fired when upload zone receives keyboard or mouse focus.\n *\n * @event {EventEmitter<FocusEvent>} bcmBlur\n * Fired when upload zone loses focus.\n *\n *\n * @csspart upload-zone\n * The root clickable drop area for file selection or drag-and-drop.\n *\n * @csspart file-list\n * The container wrapping rendered file rows.\n *\n * @csspart file-row\n * A single file entry including its name, actions, and progress bar.\n *\n * @csspart remove-btn\n * The remove action button inside uploaded file rows.\n *\n * @csspart cancel-btn\n * The cancel upload button during uploading progress.\n *\n * @csspart download-btn\n * The download button for already uploaded files.\n *\n * @csspart label\n * The external label text displayed above the component.\n *\n * @csspart caption\n * Helper or informative caption displayed below the uploaded list.\n */\n\nconst uploadClasses = tv({\n slots: {\n container: 'bcm-ui-element flex flex-col gap-2 w-full max-w-64',\n label: 'text-size-4 font-medium text-color-label',\n\n // Upload Zone\n zone: [\n 'relative rounded border border-dashed transition-all duration-200 ease-in-out',\n 'px-4 py-4 select-none',\n 'border-color-default bg-color-basic-masterpage',\n 'flex items-center justify-center',\n ],\n zoneActive: 'border-color-primary bg-color-soft-blue',\n\n iconContainer: 'flex items-center justify-center shrink-0',\n iconSizeClass: 'text-size-10',\n\n zoneTextWrapper: 'flex flex-col flex-1 min-w-0',\n\n zoneTextMain: 'text-size-4 text-color-default font-medium',\n zoneLink: 'text-color-primary hover:underline',\n zoneTextSub: 'text-size-3 text-color-caption',\n\n // File List\n list: 'flex flex-col gap-3',\n\n // File Row\n fileRow: [\n 'flex flex-col items-center gap-2 rounded border transition-colors min-w-0 px-3 py-1.5',\n 'bg-color-default border-color-default',\n ],\n fileIcon: 'flex items-center justify-center rounded bg-color-soft-blue shrink-0',\n fileNameWrapper: 'flex flex-col flex-1 min-w-0',\n fileTitle: 'text-size-4 font-medium text-color-default',\n fileName: 'text-size-4 text-color-default truncate',\n\n // Progress\n progressWrapper: 'flex items-center gap-3 w-full',\n progressBar: 'h-full bg-color-primary rounded transition-all duration-300 ease-out',\n percent: 'text-size-4 font-medium text-color-caption min-w-[3ch] text-right',\n\n // Actions\n actions: 'flex items-center gap-2',\n iconBtn: [\n 'size-4 rounded-full flex items-center justify-center transition-colors cursor-pointer appearance-none',\n 'text-color-icon-default hover:bg-color-default-hover border-none',\n ],\n\n caption: 'text-size-3 text-color-caption',\n },\n\n variants: {\n size: {\n medium: {\n zone: 'flex-col text-center gap-2',\n iconContainer: 'h-10 w-[50px]',\n zoneTextWrapper: 'items-center gap-1',\n },\n small: {\n zone: 'px-3 py-4 gap-2 flex-row text-left',\n iconContainer: 'size-8',\n iconSizeClass: 'text-size-8',\n zoneTextWrapper: 'items-start gap-1',\n label: 'text-size-3',\n caption: 'text-size-2',\n },\n },\n disabled: {\n true: 'opacity-60 cursor-not-allowed',\n false: '',\n },\n },\n compoundVariants: [\n {\n disabled: true,\n class: {\n zone: 'bg-color-disabled border-color-disabled cursor-not-allowed',\n zoneTextMain: 'text-color-disabled',\n zoneTextSub: 'text-color-disabled',\n zoneLink:\n 'text-color-disabled cursor-not-allowed no-underline hover:no-underline',\n },\n },\n {\n disabled: false,\n class: {\n zone: 'cursor-pointer',\n },\n },\n ],\n defaultVariants: {\n size: 'medium',\n disabled: false,\n },\n});\n\n@Component({\n tag: 'bcm-file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n formAssociated: true,\n})\nexport class BcmFileUpload implements ComponentInterface {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n private fileInput?: HTMLInputElement;\n private uploadTimer?: number;\n\n // Focus target for validation errors and keyboard focus\n private uploadZoneRef?: HTMLDivElement;\n\n @Prop() name: string = 'file';\n @Prop() label: string = '';\n @Prop() caption?: string = '';\n @Prop() multiple: boolean = false;\n @Prop() accept: string = '.xls,.pdf';\n @Prop({ mutable: true }) maxSize: number = 2; // MB\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() size: 'medium' | 'small' = 'medium';\n\n /**\n * Reserved for future backend upload integration.\n * Currently does not affect component behavior.\n */\n @Prop() uploadUrl?: string;\n\n /**\n * Maximum number of files allowed in total.\n * Only applied when `multiple` is true.\n */\n @Prop() maxFileCount?: number;\n\n /**\n * Allows consumers to override default error messages.\n */\n @Prop() customErrorMessages?: BcmUploadErrorMessages;\n\n @State() private files: BcmUploadItem[] = [];\n @State() private dragActive = false;\n @State() private maxSizeError = false;\n @State() private typeError = false;\n @State() private maxFileCountError = false;\n\n // Emits when file list changes\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmFileChange!: EventEmitter<File[]>;\n\n // Emits when a file is removed\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmFileRemoved!: EventEmitter<BcmUploadItem>;\n\n // Emits when an upload is canceled\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmUploadCanceled!: EventEmitter<BcmUploadItem>;\n\n // Emits when the upload zone receives focus\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmFocus!: EventEmitter<FocusEvent>;\n\n // Emits when the upload zone loses focus\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmBlur!: EventEmitter<FocusEvent>;\n\n private internalMaxSizeInBytes: number = this.maxSize * 1024 * 1024;\n\n componentWillLoad(): void {\n this.internalMaxSizeInBytes = this.maxSize * 1024 * 1024;\n this.updateFormValueAndValidity();\n }\n\n disconnectedCallback() {\n // Clear interval when component is removed from the DOM\n if (this.uploadTimer) {\n window.clearInterval(this.uploadTimer);\n this.uploadTimer = undefined;\n }\n }\n\n @Watch('maxSize')\n handleMaxSizeChange() {\n this.internalMaxSizeInBytes = this.maxSize * 1024 * 1024;\n }\n\n /**\n * Normalize and check a file against the `accept` attribute.\n */\n private isFileAccepted(file: File): boolean {\n if (!this.accept) return true;\n\n const extension = '.' + (file.name.split('.').pop() || '').toLowerCase();\n const accepted = this.accept\n .toLowerCase()\n .split(',')\n .map(x => x.trim())\n .filter(Boolean); // e.g. ['.pdf', '.jpg', '.png']\n\n return accepted.includes(extension);\n }\n\n /**\n * Update form value and validity state for form-associated behavior.\n */\n private updateFormValueAndValidity() {\n if (!this.internals) return;\n\n if (!this.files.length) {\n this.internals.setFormValue(null);\n\n if (this.required) {\n const msg =\n this.customErrorMessages?.required ||\n 'Please upload at least one file.';\n\n this.internals.setValidity(\n { valueMissing: true },\n msg,\n // Use upload zone if available, otherwise host as the validation anchor\n this.uploadZoneRef ?? this.host,\n );\n } else {\n this.internals.setValidity({});\n }\n\n return;\n }\n\n const formData = new FormData();\n this.files.forEach((item, index) => {\n const key = this.multiple ? `${this.name}[${index}]` : this.name;\n formData.append(key, item.file);\n });\n\n this.internals.setFormValue(formData);\n this.internals.setValidity({});\n }\n\n private emitChange() {\n this.bcmFileChange.emit(this.files.map(f => f.file));\n }\n\n /**\n * Simulate upload progress. Replace with real upload logic if needed.\n */\n private startFakeUpload() {\n if (this.uploadTimer) {\n window.clearInterval(this.uploadTimer);\n }\n\n this.uploadTimer = window.setInterval(() => {\n let anyUploading = false;\n\n this.files = this.files.map(item => {\n if (item.status !== 'uploading') return item;\n\n anyUploading = true;\n const current = item.progress ?? 0;\n const next = Math.min(current + 15, 100);\n\n if (next >= 100) {\n return { ...item, status: 'uploaded', progress: undefined };\n }\n\n return { ...item, progress: next };\n });\n\n if (!anyUploading && this.uploadTimer) {\n window.clearInterval(this.uploadTimer);\n this.uploadTimer = undefined;\n this.updateFormValueAndValidity();\n this.emitChange();\n }\n }, 300);\n }\n\n /**\n * Add files from input or drop.\n */\n private addFiles(fileList: FileList | null) {\n if (!fileList || this.disabled) return;\n\n const newItems: BcmUploadItem[] = [];\n let hasSizeError = false;\n let hasTypeError = false;\n\n Array.from(fileList).forEach(file => {\n if (!this.isFileAccepted(file)) {\n hasTypeError = true;\n return;\n }\n\n if (file.size > this.internalMaxSizeInBytes) {\n hasSizeError = true;\n return;\n }\n\n newItems.push({\n id: crypto.randomUUID(),\n file,\n status: 'uploading',\n progress: 0,\n });\n });\n\n this.maxSizeError = hasSizeError;\n this.typeError = hasTypeError;\n this.maxFileCountError = false;\n\n // If there are no valid files, just update validity and exit.\n if (!newItems.length) {\n this.updateFormValueAndValidity();\n this.emitChange();\n return;\n }\n\n let merged: BcmUploadItem[];\n\n if (this.multiple) {\n if (typeof this.maxFileCount === 'number') {\n const remaining = this.maxFileCount - this.files.length;\n\n if (remaining <= 0) {\n this.maxFileCountError = true;\n this.updateFormValueAndValidity();\n this.emitChange();\n return;\n }\n\n const acceptedNew = newItems.slice(0, Math.max(0, remaining));\n if (acceptedNew.length < newItems.length) {\n this.maxFileCountError = true;\n }\n\n merged = [...this.files, ...acceptedNew];\n } else {\n merged = [...this.files, ...newItems];\n }\n } else {\n // single file mode → only take first new item\n merged = [newItems[0]];\n }\n\n this.files = merged;\n\n this.updateFormValueAndValidity();\n this.emitChange();\n\n // Only fake upload for now\n this.startFakeUpload();\n }\n\n private removeFile(item: BcmUploadItem) {\n this.files = this.files.filter(f => f.id !== item.id);\n this.bcmFileRemoved.emit(item);\n this.updateFormValueAndValidity();\n this.emitChange();\n }\n\n private cancelUpload(item: BcmUploadItem) {\n this.files = this.files.filter(f => f.id !== item.id);\n this.bcmUploadCanceled.emit(item);\n this.updateFormValueAndValidity();\n this.emitChange();\n }\n\n private onFileInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.addFiles(input.files);\n // Reset input so the same file can be selected again\n input.value = '';\n };\n\n private downloadFile(file: File) {\n const url = URL.createObjectURL(file);\n const a = document.createElement('a');\n a.href = url;\n a.download = file.name;\n a.click();\n URL.revokeObjectURL(url);\n }\n\n private handleDrop(ev: DragEvent) {\n ev.preventDefault();\n this.dragActive = false;\n if (this.disabled) return;\n\n const files = ev.dataTransfer?.files || null;\n if (!files || files.length === 0) return;\n\n const first = files.item(0);\n if (!first || !this.isFileAccepted(first)) {\n this.typeError = true;\n return;\n }\n\n this.addFiles(files);\n }\n\n private handleDragOver(ev: DragEvent) {\n ev.preventDefault();\n if (this.disabled) return;\n this.dragActive = true;\n }\n\n private handleDragLeave(ev: DragEvent) {\n ev.preventDefault();\n this.dragActive = false;\n }\n\n private openFileDialog = () => {\n if (this.disabled) return;\n this.fileInput?.click();\n };\n\n formResetCallback() {\n this.files = [];\n this.maxSizeError = false;\n this.typeError = false;\n this.maxFileCountError = false;\n\n if (this.uploadTimer) {\n window.clearInterval(this.uploadTimer);\n this.uploadTimer = undefined;\n }\n\n this.updateFormValueAndValidity();\n this.emitChange();\n }\n\n /**\n * When the browser or user calls element.focus(),\n * move focus to the upload zone.\n */\n public focus(options?: FocusOptions) {\n this.uploadZoneRef?.focus(options);\n }\n\n private handleFocus = (event: FocusEvent) => {\n this.bcmFocus.emit(event);\n };\n\n private handleBlur = (event: FocusEvent) => {\n this.bcmBlur.emit(event);\n };\n\n private renderErrors() {\n if (!this.maxSizeError && !this.typeError && !this.maxFileCountError) {\n return null;\n }\n\n const acceptedFormats = this.accept\n .replace(/\\./g, '')\n .toUpperCase()\n .replace(/,/g, ', ');\n\n const maxSizeMsg =\n this.customErrorMessages?.maxSize ||\n 'File size exceeds the maximum allowed limit.';\n\n const typeMsg =\n this.customErrorMessages?.type ||\n `Unsupported file type. Allowed formats: ${acceptedFormats}`;\n\n const maxFileCountMsg =\n this.customErrorMessages?.maxFileCount ||\n 'You have reached the maximum number of files.';\n\n return (\n <div class=\"w-full space-y-1\">\n {this.maxSizeError && (\n <bcm-alert\n status=\"error\"\n size=\"small\"\n dismissible\n onBcmDismiss={() => (this.maxSizeError = false)}\n >\n {maxSizeMsg}\n </bcm-alert>\n )}\n\n {this.typeError && (\n <bcm-alert\n status=\"error\"\n size=\"small\"\n dismissible\n onBcmDismiss={() => (this.typeError = false)}\n >\n {typeMsg}\n </bcm-alert>\n )}\n\n {this.maxFileCountError && (\n <bcm-alert\n status=\"error\"\n size=\"small\"\n dismissible\n onBcmDismiss={() => (this.maxFileCountError = false)}\n >\n {maxFileCountMsg}\n </bcm-alert>\n )}\n </div>\n );\n }\n\n private renderUploadZone() {\n const classes = uploadClasses({ size: this.size, disabled: this.disabled });\n const {\n zone,\n zoneActive,\n iconContainer,\n iconSizeClass,\n zoneTextWrapper,\n zoneTextMain,\n zoneTextSub,\n zoneLink,\n } = classes;\n\n const zoneClasses = [zone(), this.dragActive && zoneActive()]\n .filter(Boolean)\n .join(' ');\n\n const maxMb = Math.round(this.internalMaxSizeInBytes / (1024 * 1024));\n const iconColorClass = this.dragActive\n ? 'text-color-primary'\n : 'text-color-icon-default';\n\n return (\n <div\n ref={el => (this.uploadZoneRef = el as HTMLDivElement)}\n tabindex={this.disabled ? undefined : 0}\n part=\"upload-zone\"\n class={zoneClasses}\n onClick={this.openFileDialog}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onDragOver={ev => this.handleDragOver(ev)}\n onDragLeave={ev => this.handleDragLeave(ev)}\n onDrop={ev => this.handleDrop(ev)}\n >\n <div class={iconContainer()}>\n <bcm-icon\n name=\"fa-solid fa-cloud-arrow-up\"\n class={`${iconColorClass} ${iconSizeClass()}`}\n ></bcm-icon>\n </div>\n\n <div class={zoneTextWrapper()}>\n <div class={zoneTextMain()}>\n Drag &amp; Drop{' '}\n <span class=\"text-color-helper\">or </span>\n <a\n class={zoneLink()}\n onClick={e => {\n e.preventDefault();\n this.openFileDialog();\n }}\n >\n Choose File\n </a>\n </div>\n <div class={zoneTextSub()}>\n Max: {maxMb}MB Formats:{' '}\n {this.accept.replace(/\\./g, '').toUpperCase().replace(/,/g, ', ')}\n </div>\n </div>\n\n <input\n ref={el => (this.fileInput = el as HTMLInputElement)}\n type=\"file\"\n hidden\n accept={this.accept}\n multiple={this.multiple}\n disabled={this.disabled}\n onChange={this.onFileInputChange}\n />\n </div>\n );\n }\n\n private renderFileRow(item: BcmUploadItem) {\n const { percent, actions, iconBtn, fileRow, fileTitle } = uploadClasses({\n size: this.size,\n disabled: this.disabled,\n });\n const isUploading = item?.status === 'uploading';\n\n return (\n <div part=\"file-row\" class={fileRow()} title={item?.file?.name}>\n <div class=\"flex items-center justify-between w-full gap-2 min-w-0\">\n <div class=\"flex items-center gap-1.5 min-w-0 flex-1 flex-shrink\">\n <div class=\"flex items-center rounded bg-color-default shrink-0 text-size-3 text-color-caption\">\n <bcm-icon name=\"fa-regular fa-file\"></bcm-icon>\n </div>\n <span class={fileTitle() + ' truncate'}>{item?.file?.name}</span>\n </div>\n\n <div class={actions() + ' flex-shrink-0'}>\n {item.status === 'uploaded' && (\n <Fragment>\n <button\n type=\"button\"\n part=\"download-btn\"\n class={iconBtn()}\n onClick={() => this.downloadFile(item.file)}\n title=\"Download\"\n >\n <bcm-icon\n name=\"fa-regular fa-download\"\n class=\"text-size-4\"\n ></bcm-icon>\n </button>\n\n <button\n type=\"button\"\n part=\"remove-btn\"\n class={iconBtn()}\n onClick={() => this.removeFile(item)}\n title=\"Remove\"\n >\n <bcm-icon\n name=\"fa-regular fa-trash\"\n class=\"text-size-4\"\n ></bcm-icon>\n </button>\n </Fragment>\n )}\n\n {isUploading && (\n <button\n type=\"button\"\n part=\"cancel-btn\"\n class={\n 'text-color-default bg-transparent hover:bg-color-default-hover text-size-4 cursor-pointer flex items-center justify-center size-5 rounded-full border-none'\n }\n onClick={() => this.cancelUpload(item)}\n title=\"Cancel\"\n >\n <bcm-icon\n name=\"fa-regular fa-xmark\"\n class=\"text-size-4\"\n ></bcm-icon>\n </button>\n )}\n </div>\n </div>\n\n {isUploading && (\n <div class=\"flex items-center gap-3 w-full min-w-0\">\n <div class=\"h-1.5 flex-1 rounded-full bg-color-surface-default overflow-hidden\">\n <div\n class=\"h-full bg-color-primary rounded-full transition-all duration-300 ease-out\"\n style={{ width: `${item.progress ?? 0}%` }}\n />\n </div>\n <span class={percent()}>{item.progress ?? 0}%</span>\n </div>\n )}\n </div>\n );\n }\n\n render() {\n const { container, label, list, caption } = uploadClasses({\n size: this.size,\n disabled: this.disabled,\n });\n\n return (\n <Host tabindex=\"-1\">\n <div class={container()}>\n {this.label && (\n <label part=\"label\" class={label()}>\n {this.label}\n </label>\n )}\n\n {this.renderUploadZone()}\n\n {this.renderErrors()}\n\n {this.files.length > 0 && (\n <div part=\"file-list\" class={list()}>\n {this.files.map(item => this.renderFileRow(item))}\n </div>\n )}\n\n {this.caption && (\n <span part=\"caption\" class={caption()}>\n {this.caption}\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}