bromcom-ui-next 0.1.30 → 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 (546) 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 -0
  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 -0
  20. package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -0
  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 -0
  31. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  32. package/dist/bromcom-ui/global/global.js +33 -30
  33. package/dist/bromcom-ui/p-010219cf.entry.js +2 -0
  34. package/dist/bromcom-ui/p-010219cf.entry.js.map +1 -0
  35. package/dist/bromcom-ui/p-01a4e00b.entry.js +2 -0
  36. package/dist/bromcom-ui/p-01a4e00b.entry.js.map +1 -0
  37. package/dist/bromcom-ui/p-14c63d61.entry.js +2 -0
  38. package/dist/bromcom-ui/p-14c63d61.entry.js.map +1 -0
  39. package/dist/bromcom-ui/p-20a94dec.entry.js +2 -0
  40. package/dist/bromcom-ui/p-20a94dec.entry.js.map +1 -0
  41. package/dist/bromcom-ui/p-398620c2.entry.js +2 -0
  42. package/dist/bromcom-ui/p-398620c2.entry.js.map +1 -0
  43. package/dist/bromcom-ui/p-3b898f90.entry.js +2 -0
  44. package/dist/bromcom-ui/p-3b898f90.entry.js.map +1 -0
  45. package/dist/bromcom-ui/p-43c85c84.entry.js +2 -0
  46. package/dist/bromcom-ui/p-43c85c84.entry.js.map +1 -0
  47. package/dist/bromcom-ui/p-4e6661a5.entry.js +2 -0
  48. package/dist/bromcom-ui/p-4e6661a5.entry.js.map +1 -0
  49. package/dist/bromcom-ui/p-52bb0cdc.entry.js +2 -0
  50. package/dist/bromcom-ui/p-52bb0cdc.entry.js.map +1 -0
  51. package/dist/bromcom-ui/p-61c1c1c8.entry.js +2 -0
  52. package/dist/bromcom-ui/p-61c1c1c8.entry.js.map +1 -0
  53. package/dist/bromcom-ui/p-82e4c5f2.entry.js +2 -0
  54. package/dist/bromcom-ui/p-82e4c5f2.entry.js.map +1 -0
  55. package/dist/bromcom-ui/p-86f85963.entry.js +2 -0
  56. package/dist/bromcom-ui/p-86f85963.entry.js.map +1 -0
  57. package/dist/bromcom-ui/p-9249c1d1.entry.js +2 -0
  58. package/dist/bromcom-ui/p-9249c1d1.entry.js.map +1 -0
  59. package/dist/bromcom-ui/p-B6Ppbs5O.js +3 -0
  60. package/dist/bromcom-ui/p-B6Ppbs5O.js.map +1 -0
  61. package/dist/bromcom-ui/p-DBDSgIvP.js +2 -0
  62. package/dist/bromcom-ui/p-DBDSgIvP.js.map +1 -0
  63. package/dist/bromcom-ui/p-DaE0ZLar.js +2 -0
  64. package/dist/bromcom-ui/p-DaE0ZLar.js.map +1 -0
  65. package/dist/bromcom-ui/p-a25d1cef.entry.js +2 -0
  66. package/dist/bromcom-ui/p-a25d1cef.entry.js.map +1 -0
  67. package/dist/bromcom-ui/p-a4cb2e79.entry.js +2 -0
  68. package/dist/bromcom-ui/p-a4cb2e79.entry.js.map +1 -0
  69. package/dist/bromcom-ui/p-a68925b4.entry.js +2 -0
  70. package/dist/bromcom-ui/p-a68925b4.entry.js.map +1 -0
  71. package/dist/bromcom-ui/p-a750186c.entry.js +2 -0
  72. package/dist/bromcom-ui/p-a750186c.entry.js.map +1 -0
  73. package/dist/bromcom-ui/p-ac768b56.entry.js +2 -0
  74. package/dist/bromcom-ui/p-ac768b56.entry.js.map +1 -0
  75. package/dist/bromcom-ui/p-b0b193e6.entry.js +2 -0
  76. package/dist/bromcom-ui/p-b0b193e6.entry.js.map +1 -0
  77. package/dist/bromcom-ui/p-bf4409ca.entry.js +2 -0
  78. package/dist/bromcom-ui/p-bf4409ca.entry.js.map +1 -0
  79. package/dist/bromcom-ui/p-c57fb29b.entry.js +2 -0
  80. package/dist/bromcom-ui/p-c57fb29b.entry.js.map +1 -0
  81. package/dist/bromcom-ui/{p-1507908f.entry.js → p-ccc310aa.entry.js} +2 -2
  82. package/dist/bromcom-ui/p-ccc310aa.entry.js.map +1 -0
  83. package/dist/bromcom-ui/p-d4ee962d.entry.js +2 -0
  84. package/dist/bromcom-ui/p-d4ee962d.entry.js.map +1 -0
  85. package/dist/bromcom-ui/p-e25a2f7a.entry.js +2 -0
  86. package/dist/bromcom-ui/p-e25a2f7a.entry.js.map +1 -0
  87. package/dist/bromcom-ui/p-e5b0b2ad.entry.js +2 -0
  88. package/dist/bromcom-ui/p-e5b0b2ad.entry.js.map +1 -0
  89. package/dist/bromcom-ui/p-e70d784d.entry.js +2 -0
  90. package/dist/bromcom-ui/p-e70d784d.entry.js.map +1 -0
  91. package/dist/bromcom-ui/p-e9fa3a22.entry.js +2 -0
  92. package/dist/bromcom-ui/p-e9fa3a22.entry.js.map +1 -0
  93. package/dist/bromcom-ui/p-ef281184.entry.js +2 -0
  94. package/dist/bromcom-ui/p-ef281184.entry.js.map +1 -0
  95. package/dist/bromcom-ui/{p-496014ca.entry.js → p-fb6f616c.entry.js} +2 -2
  96. package/dist/bromcom-ui/p-fb6f616c.entry.js.map +1 -0
  97. package/dist/bromcom-ui/p-fd31c70c.entry.js +2 -0
  98. package/dist/bromcom-ui/p-fd31c70c.entry.js.map +1 -0
  99. package/dist/bromcom-ui/p-nf_HKsGq.js +2 -0
  100. package/dist/bromcom-ui/{p-CUvT12BL.js.map → p-nf_HKsGq.js.map} +1 -1
  101. package/dist/cjs/base-choice-control-EmA4JRjR.js +54 -0
  102. package/dist/cjs/base-choice-control-EmA4JRjR.js.map +1 -0
  103. package/dist/cjs/bcm-accordion-group.cjs.entry.js +20 -18
  104. package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
  105. package/dist/cjs/bcm-accordion.cjs.entry.js +73 -56
  106. package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
  107. package/dist/cjs/bcm-alert.cjs.entry.js +21 -21
  108. package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
  109. package/dist/cjs/bcm-avatar.cjs.entry.js +22 -12
  110. package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
  111. package/dist/cjs/bcm-badge.cjs.entry.js +114 -82
  112. package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
  113. package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -59
  114. package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
  115. package/dist/cjs/bcm-button-group.cjs.entry.js +36 -24
  116. package/dist/cjs/bcm-button-group.entry.cjs.js.map +1 -1
  117. package/dist/cjs/bcm-button.cjs.entry.js +338 -0
  118. package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
  119. package/dist/cjs/bcm-checkbox.cjs.entry.js +284 -174
  120. package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
  121. package/dist/cjs/bcm-chip.cjs.entry.js +38 -35
  122. package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
  123. package/dist/cjs/bcm-divider.cjs.entry.js +55 -55
  124. package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
  125. package/dist/cjs/bcm-drawer.cjs.entry.js +332 -0
  126. package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
  127. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +36 -33
  128. package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
  129. package/dist/cjs/bcm-dropdown.cjs.entry.js +18 -17
  130. package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
  131. package/dist/cjs/bcm-file-upload.cjs.entry.js +552 -0
  132. package/dist/cjs/bcm-file-upload.entry.cjs.js.map +1 -0
  133. package/dist/cjs/bcm-input.cjs.entry.js +250 -158
  134. package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
  135. package/dist/cjs/bcm-linked.cjs.entry.js +452 -0
  136. package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -0
  137. package/dist/cjs/bcm-modal.cjs.entry.js +360 -0
  138. package/dist/cjs/bcm-modal.entry.cjs.js.map +1 -0
  139. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +381 -0
  140. package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -0
  141. package/dist/cjs/bcm-popover.cjs.entry.js +451 -0
  142. package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -0
  143. package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -80
  144. package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
  145. package/dist/cjs/bcm-radio.cjs.entry.js +239 -106
  146. package/dist/cjs/bcm-radio.entry.cjs.js.map +1 -1
  147. package/dist/cjs/bcm-segment.bcm-segmented-picker.entry.cjs.js.map +1 -0
  148. package/dist/cjs/bcm-segment_2.cjs.entry.js +335 -0
  149. package/dist/cjs/bcm-shortcut.cjs.entry.js +5 -4
  150. package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
  151. package/dist/cjs/bcm-switch.cjs.entry.js +281 -148
  152. package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
  153. package/dist/cjs/bcm-tab.cjs.entry.js +44 -0
  154. package/dist/cjs/bcm-tab.entry.cjs.js.map +1 -0
  155. package/dist/cjs/bcm-tabs.cjs.entry.js +191 -237
  156. package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
  157. package/dist/cjs/bcm-text.cjs.entry.js +86 -85
  158. package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
  159. package/dist/cjs/bcm-textarea.cjs.entry.js +224 -154
  160. package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
  161. package/dist/cjs/bcm-tooltip.cjs.entry.js +414 -0
  162. package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -0
  163. package/dist/cjs/bromcom-ui.cjs.js +2 -2
  164. package/dist/cjs/floating-ui.dom-S9nP6zZt.js +1622 -0
  165. package/dist/{bromcom-ui/floating-ui.dom-ltNPqX34.js.map → cjs/floating-ui.dom-S9nP6zZt.js.map} +1 -1
  166. package/dist/cjs/{index-CmYzUr-k.js → index-1Qal-onT.js} +111 -33
  167. package/dist/cjs/index-1Qal-onT.js.map +1 -0
  168. package/dist/cjs/loader.cjs.js +2 -2
  169. package/dist/cjs/{validation-messages-BjfpSEWk.js → validation-messages-DieKlSG4.js} +6 -7
  170. package/dist/{esm/validation-messages-CUvT12BL.js.map → cjs/validation-messages-DieKlSG4.js.map} +1 -1
  171. package/dist/collection/collection-manifest.json +4 -5
  172. package/dist/collection/components/_shared/form/base-choice-control.js +90 -0
  173. package/dist/collection/components/_shared/form/base-choice-control.js.map +1 -0
  174. package/dist/collection/components/_shared/form/base-form-control.js +115 -0
  175. package/dist/collection/components/_shared/form/base-form-control.js.map +1 -0
  176. package/dist/collection/components/accordion/accordion.component.js +72 -55
  177. package/dist/collection/components/accordion/accordion.component.js.map +1 -1
  178. package/dist/collection/components/accordion/accordion.css +1 -1
  179. package/dist/collection/components/accordion-group/accordion-group.component.js +20 -18
  180. package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
  181. package/dist/collection/components/alert/alert.component.js +19 -21
  182. package/dist/collection/components/alert/alert.component.js.map +1 -1
  183. package/dist/collection/components/alert/alert.css +1 -1
  184. package/dist/collection/components/avatar/avatar.component.js +20 -12
  185. package/dist/collection/components/avatar/avatar.component.js.map +1 -1
  186. package/dist/collection/components/avatar/avatar.css +1 -1
  187. package/dist/collection/components/badge/badge.component.js +111 -81
  188. package/dist/collection/components/badge/badge.component.js.map +1 -1
  189. package/dist/collection/components/badge/badge.css +1 -1
  190. package/dist/collection/components/basic-badge/basic-badge.component.js +70 -58
  191. package/dist/collection/components/basic-badge/basic-badge.component.js.map +1 -1
  192. package/dist/collection/components/basic-badge/basic-badge.css +1 -1
  193. package/dist/collection/components/button/button.component.js +105 -84
  194. package/dist/collection/components/button/button.component.js.map +1 -1
  195. package/dist/collection/components/button/button.css +1 -1
  196. package/dist/collection/components/button-group/button-group.component.js +34 -23
  197. package/dist/collection/components/button-group/button-group.component.js.map +1 -1
  198. package/dist/collection/components/button-group/button-group.css +1 -1
  199. package/dist/collection/components/checkbox/checkbox.component.js +355 -236
  200. package/dist/collection/components/checkbox/checkbox.component.js.map +1 -1
  201. package/dist/collection/components/checkbox/checkbox.css +1 -1
  202. package/dist/collection/components/chip/chip.component.js +35 -34
  203. package/dist/collection/components/chip/chip.component.js.map +1 -1
  204. package/dist/collection/components/chip/chip.css +1 -1
  205. package/dist/collection/components/divider/divider.component.js +53 -55
  206. package/dist/collection/components/divider/divider.component.js.map +1 -1
  207. package/dist/collection/components/drawer/drawer.component.js +168 -144
  208. package/dist/collection/components/drawer/drawer.component.js.map +1 -1
  209. package/dist/collection/components/dropdown/dropdown.component.js +16 -16
  210. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
  211. package/dist/collection/components/dropdown/dropdown.css +1 -1
  212. package/dist/collection/components/dropdown-item/dropdown-item.component.js +34 -32
  213. package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
  214. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
  215. package/dist/collection/components/input/input.component.js +241 -155
  216. package/dist/collection/components/input/input.component.js.map +1 -1
  217. package/dist/collection/components/linked/linked.component.js +160 -138
  218. package/dist/collection/components/linked/linked.component.js.map +1 -1
  219. package/dist/collection/components/linked/linked.css +1 -1
  220. package/dist/collection/components/modal/modal.component.js +180 -156
  221. package/dist/collection/components/modal/modal.component.js.map +1 -1
  222. package/dist/collection/components/pop-confirm/pop-confirm.component.js +190 -159
  223. package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
  224. package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
  225. package/dist/collection/components/popover/popover.component.js +240 -212
  226. package/dist/collection/components/popover/popover.component.js.map +1 -1
  227. package/dist/collection/components/popover/popover.css +1 -1
  228. package/dist/collection/components/radio/radio.component.js +282 -106
  229. package/dist/collection/components/radio/radio.component.js.map +1 -1
  230. package/dist/collection/components/radio-group/radio-group.component.js +102 -80
  231. package/dist/collection/components/radio-group/radio-group.component.js.map +1 -1
  232. package/dist/collection/components/segmented-picker/segment.component.js +228 -0
  233. package/dist/collection/components/segmented-picker/segment.component.js.map +1 -0
  234. package/dist/collection/components/segmented-picker/segment.css +1 -0
  235. package/dist/collection/components/segmented-picker/segmented-picker.component.js +354 -139
  236. package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
  237. package/dist/collection/components/segmented-picker/segmented-picker.css +1 -1
  238. package/dist/collection/components/shortcut/shortcut.js +4 -5
  239. package/dist/collection/components/shortcut/shortcut.js.map +1 -1
  240. package/dist/collection/components/switch/switch.component.js +350 -280
  241. package/dist/collection/components/switch/switch.component.js.map +1 -1
  242. package/dist/collection/components/switch/switch.css +1 -1
  243. package/dist/collection/components/tabs/bcm-tab.css +1 -0
  244. package/dist/collection/components/tabs/bcm-tabs.css +1 -1
  245. package/dist/collection/components/tabs/tab.component.js +169 -0
  246. package/dist/collection/components/tabs/tab.component.js.map +1 -0
  247. package/dist/collection/components/tabs/tabs.component.js +221 -352
  248. package/dist/collection/components/tabs/tabs.component.js.map +1 -1
  249. package/dist/collection/components/text/text.component.js +84 -85
  250. package/dist/collection/components/text/text.component.js.map +1 -1
  251. package/dist/collection/components/text/text.css +1 -1
  252. package/dist/collection/components/textarea/textarea.component.js +216 -153
  253. package/dist/collection/components/textarea/textarea.component.js.map +1 -1
  254. package/dist/collection/components/tooltip/tooltip.component.js +164 -154
  255. package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
  256. package/dist/collection/components/upload/file-upload.component.js +905 -0
  257. package/dist/collection/components/upload/file-upload.component.js.map +1 -0
  258. package/dist/collection/components/upload/file-upload.css +1 -0
  259. package/dist/collection/global/global.js +33 -30
  260. package/dist/collection/utils/i18n.js +3 -4
  261. package/dist/collection/utils/i18n.js.map +1 -1
  262. package/dist/collection/utils/slot/check-slot-content.js +1 -2
  263. package/dist/collection/utils/slot/check-slot-content.js.map +1 -1
  264. package/dist/collection/utils/validation-messages.js +1 -1
  265. package/dist/collection/utils/validation-messages.js.map +1 -1
  266. package/dist/components/bcm-accordion-group.js +19 -17
  267. package/dist/components/bcm-accordion-group.js.map +1 -1
  268. package/dist/components/bcm-accordion.js +72 -55
  269. package/dist/components/bcm-accordion.js.map +1 -1
  270. package/dist/components/bcm-alert.js +1 -114
  271. package/dist/components/bcm-alert.js.map +1 -1
  272. package/dist/components/bcm-avatar.js +22 -12
  273. package/dist/components/bcm-avatar.js.map +1 -1
  274. package/dist/components/bcm-badge.js +1 -1
  275. package/dist/components/bcm-basic-badge.js +72 -58
  276. package/dist/components/bcm-basic-badge.js.map +1 -1
  277. package/dist/components/bcm-button-group.js +35 -23
  278. package/dist/components/bcm-button-group.js.map +1 -1
  279. package/dist/components/bcm-button.js +1 -1
  280. package/dist/components/bcm-checkbox.js +296 -184
  281. package/dist/components/bcm-checkbox.js.map +1 -1
  282. package/dist/components/bcm-chip.js +37 -34
  283. package/dist/components/bcm-chip.js.map +1 -1
  284. package/dist/components/bcm-divider.js +54 -54
  285. package/dist/components/bcm-divider.js.map +1 -1
  286. package/dist/components/bcm-drawer.js +169 -144
  287. package/dist/components/bcm-drawer.js.map +1 -1
  288. package/dist/components/bcm-dropdown-item.js +35 -32
  289. package/dist/components/bcm-dropdown-item.js.map +1 -1
  290. package/dist/components/bcm-dropdown.js +19 -18
  291. package/dist/components/bcm-dropdown.js.map +1 -1
  292. package/dist/components/{bcm-tabs-content.d.ts → bcm-file-upload.d.ts} +4 -4
  293. package/dist/components/bcm-file-upload.js +593 -0
  294. package/dist/components/bcm-file-upload.js.map +1 -0
  295. package/dist/components/bcm-input.js +244 -158
  296. package/dist/components/bcm-input.js.map +1 -1
  297. package/dist/components/bcm-linked.js +1 -1
  298. package/dist/components/bcm-modal.js +181 -156
  299. package/dist/components/bcm-modal.js.map +1 -1
  300. package/dist/components/bcm-pop-confirm.js +192 -160
  301. package/dist/components/bcm-pop-confirm.js.map +1 -1
  302. package/dist/components/bcm-popover.js +242 -213
  303. package/dist/components/bcm-popover.js.map +1 -1
  304. package/dist/components/bcm-radio-group.js +102 -79
  305. package/dist/components/bcm-radio-group.js.map +1 -1
  306. package/dist/components/bcm-radio.js +241 -108
  307. package/dist/components/bcm-radio.js.map +1 -1
  308. package/dist/components/{bcm-tabs-list.d.ts → bcm-segment.d.ts} +4 -4
  309. package/dist/components/bcm-segment.js +110 -0
  310. package/dist/components/bcm-segment.js.map +1 -0
  311. package/dist/components/bcm-segmented-picker.js +234 -115
  312. package/dist/components/bcm-segmented-picker.js.map +1 -1
  313. package/dist/components/bcm-shortcut.js +4 -3
  314. package/dist/components/bcm-shortcut.js.map +1 -1
  315. package/dist/components/bcm-switch.js +292 -156
  316. package/dist/components/bcm-switch.js.map +1 -1
  317. package/dist/components/{bcm-tabs-trigger.d.ts → bcm-tab.d.ts} +4 -4
  318. package/dist/components/bcm-tab.js +71 -0
  319. package/dist/components/bcm-tab.js.map +1 -0
  320. package/dist/components/bcm-tabs.js +196 -247
  321. package/dist/components/bcm-tabs.js.map +1 -1
  322. package/dist/components/bcm-text.js +85 -84
  323. package/dist/components/bcm-text.js.map +1 -1
  324. package/dist/components/bcm-textarea.js +218 -154
  325. package/dist/components/bcm-textarea.js.map +1 -1
  326. package/dist/components/bcm-tooltip.js +164 -153
  327. package/dist/components/bcm-tooltip.js.map +1 -1
  328. package/dist/components/index.js +105 -32
  329. package/dist/components/index.js.map +1 -1
  330. package/dist/components/p-5_TgtzQU.js +119 -0
  331. package/dist/components/p-5_TgtzQU.js.map +1 -0
  332. package/dist/components/p-RlBWOSgL.js +179 -0
  333. package/dist/components/p-RlBWOSgL.js.map +1 -0
  334. package/dist/components/p-SERXqWcS.js +51 -0
  335. package/dist/components/p-SERXqWcS.js.map +1 -0
  336. package/dist/components/{p-CUvT12BL.js → p-nf_HKsGq.js} +6 -7
  337. package/dist/components/p-nf_HKsGq.js.map +1 -0
  338. package/dist/components/{p-CsIBm0J5.js → p-xQIzBLsS.js} +108 -85
  339. package/dist/components/p-xQIzBLsS.js.map +1 -0
  340. package/dist/components/{p-6VLsKZvR.js → p-z9ESseGb.js} +163 -140
  341. package/dist/components/p-z9ESseGb.js.map +1 -0
  342. package/dist/esm/base-choice-control-CKR8UdZ6.js +52 -0
  343. package/dist/esm/base-choice-control-CKR8UdZ6.js.map +1 -0
  344. package/dist/esm/bcm-accordion-group.entry.js +20 -18
  345. package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
  346. package/dist/esm/bcm-accordion.entry.js +73 -56
  347. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  348. package/dist/esm/bcm-alert.entry.js +21 -21
  349. package/dist/esm/bcm-alert.entry.js.map +1 -1
  350. package/dist/esm/bcm-avatar.entry.js +22 -12
  351. package/dist/esm/bcm-avatar.entry.js.map +1 -1
  352. package/dist/esm/bcm-badge.entry.js +114 -82
  353. package/dist/esm/bcm-badge.entry.js.map +1 -1
  354. package/dist/esm/bcm-basic-badge.entry.js +73 -59
  355. package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
  356. package/dist/esm/bcm-button-group.entry.js +36 -24
  357. package/dist/esm/bcm-button-group.entry.js.map +1 -1
  358. package/dist/esm/bcm-button.entry.js +336 -0
  359. package/dist/esm/bcm-button.entry.js.map +1 -0
  360. package/dist/esm/bcm-checkbox.entry.js +284 -174
  361. package/dist/esm/bcm-checkbox.entry.js.map +1 -1
  362. package/dist/esm/bcm-chip.entry.js +38 -35
  363. package/dist/esm/bcm-chip.entry.js.map +1 -1
  364. package/dist/esm/bcm-divider.entry.js +55 -55
  365. package/dist/esm/bcm-divider.entry.js.map +1 -1
  366. package/dist/esm/bcm-drawer.entry.js +330 -0
  367. package/dist/esm/bcm-drawer.entry.js.map +1 -0
  368. package/dist/esm/bcm-dropdown-item.entry.js +36 -33
  369. package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
  370. package/dist/esm/bcm-dropdown.entry.js +18 -17
  371. package/dist/esm/bcm-dropdown.entry.js.map +1 -1
  372. package/dist/esm/bcm-file-upload.entry.js +550 -0
  373. package/dist/esm/bcm-file-upload.entry.js.map +1 -0
  374. package/dist/esm/bcm-input.entry.js +250 -158
  375. package/dist/esm/bcm-input.entry.js.map +1 -1
  376. package/dist/esm/bcm-linked.entry.js +450 -0
  377. package/dist/esm/bcm-linked.entry.js.map +1 -0
  378. package/dist/esm/bcm-modal.entry.js +358 -0
  379. package/dist/esm/bcm-modal.entry.js.map +1 -0
  380. package/dist/esm/bcm-pop-confirm.entry.js +379 -0
  381. package/dist/esm/bcm-pop-confirm.entry.js.map +1 -0
  382. package/dist/esm/bcm-popover.entry.js +449 -0
  383. package/dist/esm/bcm-popover.entry.js.map +1 -0
  384. package/dist/esm/bcm-radio-group.entry.js +103 -80
  385. package/dist/esm/bcm-radio-group.entry.js.map +1 -1
  386. package/dist/esm/bcm-radio.entry.js +239 -106
  387. package/dist/esm/bcm-radio.entry.js.map +1 -1
  388. package/dist/esm/bcm-segment.bcm-segmented-picker.entry.js.map +1 -0
  389. package/dist/esm/bcm-segment_2.entry.js +332 -0
  390. package/dist/esm/bcm-shortcut.entry.js +5 -4
  391. package/dist/esm/bcm-shortcut.entry.js.map +1 -1
  392. package/dist/esm/bcm-switch.entry.js +281 -148
  393. package/dist/esm/bcm-switch.entry.js.map +1 -1
  394. package/dist/esm/bcm-tab.entry.js +42 -0
  395. package/dist/esm/bcm-tab.entry.js.map +1 -0
  396. package/dist/esm/bcm-tabs.entry.js +191 -237
  397. package/dist/esm/bcm-tabs.entry.js.map +1 -1
  398. package/dist/esm/bcm-text.entry.js +86 -85
  399. package/dist/esm/bcm-text.entry.js.map +1 -1
  400. package/dist/esm/bcm-textarea.entry.js +224 -154
  401. package/dist/esm/bcm-textarea.entry.js.map +1 -1
  402. package/dist/esm/bcm-tooltip.entry.js +412 -0
  403. package/dist/esm/bcm-tooltip.entry.js.map +1 -0
  404. package/dist/esm/bromcom-ui.js +3 -3
  405. package/dist/esm/floating-ui.dom-DBDSgIvP.js +1615 -0
  406. package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
  407. package/dist/esm/{index-CRwAh9Np.js → index-B6Ppbs5O.js} +111 -34
  408. package/dist/esm/index-B6Ppbs5O.js.map +1 -0
  409. package/dist/esm/loader.js +3 -3
  410. package/dist/esm/{validation-messages-CUvT12BL.js → validation-messages-nf_HKsGq.js} +6 -7
  411. package/dist/{cjs/validation-messages-BjfpSEWk.js.map → esm/validation-messages-nf_HKsGq.js.map} +1 -1
  412. package/dist/types/components/_shared/form/base-choice-control.d.ts +15 -0
  413. package/dist/types/components/_shared/form/base-form-control.d.ts +11 -0
  414. package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
  415. package/dist/types/components/input/input.component.d.ts +5 -0
  416. package/dist/types/components/radio/radio.component.d.ts +21 -0
  417. package/dist/types/components/segmented-picker/segment.component.d.ts +42 -0
  418. package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +91 -24
  419. package/dist/types/components/switch/switch.component.d.ts +83 -43
  420. package/dist/types/components/tabs/tab.component.d.ts +33 -0
  421. package/dist/types/components/tabs/tabs.component.d.ts +51 -64
  422. package/dist/types/components/textarea/textarea.component.d.ts +5 -0
  423. package/dist/types/components/upload/file-upload.component.d.ts +107 -0
  424. package/dist/types/components.d.ts +830 -382
  425. package/package.json +2 -2
  426. package/dist/bromcom-ui/_commonjsHelpers-CvGrISen.js.map +0 -1
  427. package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.esm.js.map +0 -1
  428. package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +0 -1
  429. package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +0 -1
  430. package/dist/bromcom-ui/bcm-tabs-content.entry.esm.js.map +0 -1
  431. package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +0 -1
  432. package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +0 -1
  433. package/dist/bromcom-ui/generate-id-Crb5QsB-.js.map +0 -1
  434. package/dist/bromcom-ui/index-40rmUZjU.js.map +0 -1
  435. package/dist/bromcom-ui/index-BCaJmHBB.js.map +0 -1
  436. package/dist/bromcom-ui/p-0c7c6896.entry.js +0 -2
  437. package/dist/bromcom-ui/p-0c7c6896.entry.js.map +0 -1
  438. package/dist/bromcom-ui/p-11d0e649.entry.js +0 -2
  439. package/dist/bromcom-ui/p-11d0e649.entry.js.map +0 -1
  440. package/dist/bromcom-ui/p-12f38632.entry.js +0 -2
  441. package/dist/bromcom-ui/p-12f38632.entry.js.map +0 -1
  442. package/dist/bromcom-ui/p-13cbd1f5.entry.js +0 -2
  443. package/dist/bromcom-ui/p-13cbd1f5.entry.js.map +0 -1
  444. package/dist/bromcom-ui/p-1507908f.entry.js.map +0 -1
  445. package/dist/bromcom-ui/p-1ce9913f.entry.js +0 -2
  446. package/dist/bromcom-ui/p-1ce9913f.entry.js.map +0 -1
  447. package/dist/bromcom-ui/p-206d767e.entry.js +0 -2
  448. package/dist/bromcom-ui/p-206d767e.entry.js.map +0 -1
  449. package/dist/bromcom-ui/p-3cf7a7f4.entry.js +0 -2
  450. package/dist/bromcom-ui/p-3cf7a7f4.entry.js.map +0 -1
  451. package/dist/bromcom-ui/p-4505feba.entry.js +0 -2
  452. package/dist/bromcom-ui/p-4505feba.entry.js.map +0 -1
  453. package/dist/bromcom-ui/p-496014ca.entry.js.map +0 -1
  454. package/dist/bromcom-ui/p-4a932cd3.entry.js +0 -2
  455. package/dist/bromcom-ui/p-4a932cd3.entry.js.map +0 -1
  456. package/dist/bromcom-ui/p-4e554b8d.entry.js +0 -2
  457. package/dist/bromcom-ui/p-4e554b8d.entry.js.map +0 -1
  458. package/dist/bromcom-ui/p-57c4c4c4.entry.js +0 -2
  459. package/dist/bromcom-ui/p-57c4c4c4.entry.js.map +0 -1
  460. package/dist/bromcom-ui/p-61293ab2.entry.js +0 -2
  461. package/dist/bromcom-ui/p-61293ab2.entry.js.map +0 -1
  462. package/dist/bromcom-ui/p-61789456.entry.js +0 -2
  463. package/dist/bromcom-ui/p-61789456.entry.js.map +0 -1
  464. package/dist/bromcom-ui/p-65d0f188.entry.js +0 -2
  465. package/dist/bromcom-ui/p-65d0f188.entry.js.map +0 -1
  466. package/dist/bromcom-ui/p-83f707dc.entry.js +0 -2
  467. package/dist/bromcom-ui/p-83f707dc.entry.js.map +0 -1
  468. package/dist/bromcom-ui/p-8ba02e7e.entry.js +0 -2
  469. package/dist/bromcom-ui/p-8ba02e7e.entry.js.map +0 -1
  470. package/dist/bromcom-ui/p-9e9bf32e.entry.js +0 -2
  471. package/dist/bromcom-ui/p-9e9bf32e.entry.js.map +0 -1
  472. package/dist/bromcom-ui/p-CRwAh9Np.js +0 -3
  473. package/dist/bromcom-ui/p-CRwAh9Np.js.map +0 -1
  474. package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
  475. package/dist/bromcom-ui/p-c87a6acf.entry.js +0 -2
  476. package/dist/bromcom-ui/p-c87a6acf.entry.js.map +0 -1
  477. package/dist/bromcom-ui/p-e0e235a8.entry.js +0 -2
  478. package/dist/bromcom-ui/p-e0e235a8.entry.js.map +0 -1
  479. package/dist/bromcom-ui/p-e1ce8b55.entry.js +0 -2
  480. package/dist/bromcom-ui/p-e1ce8b55.entry.js.map +0 -1
  481. package/dist/bromcom-ui/p-e4dddb0b.entry.js +0 -2
  482. package/dist/bromcom-ui/p-e4dddb0b.entry.js.map +0 -1
  483. package/dist/bromcom-ui/p-f9426924.entry.js +0 -2
  484. package/dist/bromcom-ui/p-f9426924.entry.js.map +0 -1
  485. package/dist/bromcom-ui/p-faa0e62c.entry.js +0 -2
  486. package/dist/bromcom-ui/p-faa0e62c.entry.js.map +0 -1
  487. package/dist/bromcom-ui/p-fcb4399f.entry.js +0 -2
  488. package/dist/bromcom-ui/p-fcb4399f.entry.js.map +0 -1
  489. package/dist/bromcom-ui/tv-SlGJ5EfR.js.map +0 -1
  490. package/dist/bromcom-ui/validation-messages-CUvT12BL.js.map +0 -1
  491. package/dist/cjs/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.cjs.js.map +0 -1
  492. package/dist/cjs/bcm-button_7.cjs.entry.js +0 -4131
  493. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -105
  494. package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
  495. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -142
  496. package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
  497. package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -18
  498. package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
  499. package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -82
  500. package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
  501. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -120
  502. package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
  503. package/dist/cjs/index-CmYzUr-k.js.map +0 -1
  504. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +0 -253
  505. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +0 -1
  506. package/dist/collection/components/segmented-picker/segmented-picker-option.css +0 -1
  507. package/dist/collection/components/tabs/tabs-content.component.js +0 -46
  508. package/dist/collection/components/tabs/tabs-content.component.js.map +0 -1
  509. package/dist/collection/components/tabs/tabs-content.css +0 -1
  510. package/dist/collection/components/tabs/tabs-list.component.js +0 -133
  511. package/dist/collection/components/tabs/tabs-list.component.js.map +0 -1
  512. package/dist/collection/components/tabs/tabs-list.css +0 -1
  513. package/dist/collection/components/tabs/tabs-trigger.component.js +0 -267
  514. package/dist/collection/components/tabs/tabs-trigger.component.js.map +0 -1
  515. package/dist/collection/components/tabs/tabs-trigger.css +0 -1
  516. package/dist/components/bcm-segmented-picker-option.d.ts +0 -11
  517. package/dist/components/bcm-segmented-picker-option.js +0 -133
  518. package/dist/components/bcm-segmented-picker-option.js.map +0 -1
  519. package/dist/components/bcm-tabs-content.js +0 -41
  520. package/dist/components/bcm-tabs-content.js.map +0 -1
  521. package/dist/components/bcm-tabs-list.js +0 -106
  522. package/dist/components/bcm-tabs-list.js.map +0 -1
  523. package/dist/components/bcm-tabs-trigger.js +0 -148
  524. package/dist/components/bcm-tabs-trigger.js.map +0 -1
  525. package/dist/components/p-6VLsKZvR.js.map +0 -1
  526. package/dist/components/p-CUvT12BL.js.map +0 -1
  527. package/dist/components/p-CaemikSK.js +0 -147
  528. package/dist/components/p-CaemikSK.js.map +0 -1
  529. package/dist/components/p-CsIBm0J5.js.map +0 -1
  530. package/dist/esm/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.js.map +0 -1
  531. package/dist/esm/bcm-button_7.entry.js +0 -4123
  532. package/dist/esm/bcm-segmented-picker-option.entry.js +0 -103
  533. package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
  534. package/dist/esm/bcm-segmented-picker.entry.js +0 -140
  535. package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
  536. package/dist/esm/bcm-tabs-content.entry.js +0 -16
  537. package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
  538. package/dist/esm/bcm-tabs-list.entry.js +0 -80
  539. package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
  540. package/dist/esm/bcm-tabs-trigger.entry.js +0 -118
  541. package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
  542. package/dist/esm/index-CRwAh9Np.js.map +0 -1
  543. package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +0 -30
  544. package/dist/types/components/tabs/tabs-content.component.d.ts +0 -13
  545. package/dist/types/components/tabs/tabs-list.component.d.ts +0 -20
  546. package/dist/types/components/tabs/tabs-trigger.component.d.ts +0 -49
@@ -1,285 +1,238 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  import { tv } from "../../utils/tv";
3
3
  /**
4
- * @description Tab interface component
5
- * @slot - Default slot for content area
6
- * @slot tabs-list - Special slot for tab list
4
+ * Modern Tabs component with CSS-first approach
5
+ * @slot - Default slot for bcm-tab components
7
6
  */
8
7
  export class BcmTabs {
9
- constructor() {
10
- /**
11
- * Tab size
12
- */
13
- this.size = 'medium';
14
- /**
15
- * Tab variant - controls width behavior
16
- */
17
- this.variant = 'full-width';
18
- /**
19
- * Whether to enable smooth animations for inkbar and transitions
20
- */
21
- this.smooth = true;
22
- this.triggers = [];
23
- this.contents = [];
24
- /**
25
- * Tab container class
26
- */
27
- this.tabClass = tv({
28
- base: 'tabs-container bcm-ui-element flex flex-col',
29
- variants: {
30
- variant: {
31
- 'full-width': 'w-full',
32
- 'auto-width': 'w-auto',
33
- },
34
- },
35
- defaultVariants: {
36
- variant: 'full-width',
37
- },
38
- });
39
- }
8
+ el;
9
+ /**
10
+ * Active tab value
11
+ */
12
+ value;
13
+ /**
14
+ * Tab size variant
15
+ */
16
+ size = 'md';
17
+ /**
18
+ * Visual variant
19
+ */
20
+ variant = 'line';
21
+ /**
22
+ * Enable shadow on main container
23
+ */
24
+ shadow = false;
25
+ /**
26
+ * Emits when active tab changes
27
+ */
28
+ bcmTabChange;
29
+ tabs = [];
30
+ activeIndex = 0;
31
+ tabElements = [];
40
32
  componentWillLoad() {
41
- this.activeTab = this.defaultValue;
33
+ this.discoverTabs();
42
34
  }
43
35
  componentDidLoad() {
44
- this.refreshElementReferences();
45
- this.updateTriggerProperties();
46
- this.updateTabsListProperties();
47
- // Eğer defaultValue yoksa ilk tab'ı aktif yap
48
- if (!this.defaultValue && this.triggers.length > 0) {
49
- this.activeTab = this.triggers[0].value;
50
- }
51
- this.setupRelations(); // activeTab ayarlandıktan sonra relations'ı kur
52
- // auto-width variant'ında inkbar hesaplaması için ek gecikme
53
- if (this.variant === 'auto-width') {
54
- requestAnimationFrame(() => {
55
- this.updateInkbar();
56
- this.updateContentVisibility();
57
- });
58
- }
59
- else {
60
- this.updateInkbar();
61
- this.updateContentVisibility();
36
+ this.updateActiveIndex();
37
+ this.updateTabStates();
38
+ }
39
+ /**
40
+ * Discovers all bcm-tab children
41
+ */
42
+ discoverTabs() {
43
+ this.tabElements = Array.from(this.el.querySelectorAll('bcm-tab'));
44
+ this.tabs = this.tabElements.map((tab) => ({
45
+ value: tab.value,
46
+ label: tab.label || tab.value,
47
+ disabled: tab.disabled || false,
48
+ }));
49
+ // Set initial value if not provided
50
+ if (!this.value && this.tabs.length > 0) {
51
+ const firstEnabledTab = this.tabs.find(t => !t.disabled);
52
+ if (firstEnabledTab) {
53
+ this.value = firstEnabledTab.value;
54
+ }
62
55
  }
63
56
  }
64
57
  /**
65
- * Refreshes DOM element references
58
+ * Updates the active index based on current value
66
59
  */
67
- refreshElementReferences() {
68
- this.triggers = Array.from(this.el.querySelectorAll('bcm-tabs-trigger'));
69
- this.contents = Array.from(this.el.querySelectorAll('bcm-tabs-content'));
70
- this.tabsList = this.el.querySelector('bcm-tabs-list');
60
+ updateActiveIndex() {
61
+ const index = this.tabs.findIndex(t => t.value === this.value);
62
+ this.activeIndex = index >= 0 ? index : 0;
71
63
  }
72
64
  /**
73
- * Establishes relationships between tabs and content
65
+ * Updates active/inactive state of all tab elements
74
66
  */
75
- setupRelations() {
76
- this.triggers.forEach(trigger => {
77
- trigger.active = trigger.value === this.activeTab;
78
- const panel = this.contents.find(content => content.value === trigger.value);
79
- if (panel) {
80
- const panelId = `panel-${trigger.value}`;
81
- panel.id = panelId;
82
- trigger.setAttribute('aria-controls', panelId);
83
- panel.setAttribute('aria-labelledby', `trigger-${trigger.value}`);
84
- trigger.id = `trigger-${trigger.value}`;
85
- }
67
+ updateTabStates() {
68
+ this.tabElements.forEach((tab) => {
69
+ tab.active = tab.value === this.value;
86
70
  });
87
71
  }
88
- updateTriggerProperties() {
89
- var _a;
90
- if (((_a = this.triggers) === null || _a === void 0 ? void 0 : _a.length) > 0) {
91
- this.triggers.forEach(trigger => {
92
- trigger.size = this.size;
93
- trigger.variant = this.variant;
94
- trigger.smooth = this.smooth;
72
+ handleValueChange(newValue, oldValue) {
73
+ this.updateActiveIndex();
74
+ this.updateTabStates();
75
+ this.updateCSSVariables();
76
+ if (oldValue !== newValue) {
77
+ this.bcmTabChange.emit({
78
+ value: newValue,
79
+ previousValue: oldValue,
95
80
  });
96
81
  }
97
82
  }
98
- updateTabsListProperties() {
99
- if (this.tabsList) {
100
- this.tabsList.variant = this.variant;
101
- this.tabsList.smooth = this.smooth;
102
- }
103
- }
104
83
  handleSizeChange() {
105
- this.updateTriggerProperties();
106
- }
107
- handleVariantChange() {
108
- this.updateTriggerProperties();
109
- this.updateTabsListProperties();
110
- // auto-width variant'ında inkbar hesaplaması için ek gecikme
111
- if (this.variant === 'auto-width') {
112
- requestAnimationFrame(() => {
113
- this.updateInkbar();
114
- });
115
- }
116
- else {
117
- this.updateInkbar();
118
- }
119
- }
120
- handleSmoothChange() {
121
- this.updateTriggerProperties();
122
- this.updateTabsListProperties();
123
- }
124
- async disableTab(value) {
125
- const trigger = this.triggers.find(t => t.value === value);
126
- if (trigger) {
127
- trigger.disabled = true;
128
- }
129
- }
130
- async enableTab(value) {
131
- const trigger = this.triggers.find(t => t.value === value);
132
- if (trigger) {
133
- trigger.disabled = false;
134
- }
84
+ this.propagatePropsToTabs();
135
85
  }
136
86
  /**
137
- * Disables all tabs
87
+ * Propagates parent props to child tabs
138
88
  */
139
- async disableAllTabs() {
140
- this.triggers.forEach(trigger => {
141
- trigger.disabled = true;
89
+ propagatePropsToTabs() {
90
+ this.tabElements.forEach((tab) => {
91
+ tab.size = this.size;
142
92
  });
143
93
  }
144
94
  /**
145
- * Enables all tabs
95
+ * Updates CSS custom properties for inkbar positioning
146
96
  */
147
- async enableAllTabs() {
148
- this.triggers.forEach(trigger => {
149
- trigger.disabled = false;
150
- });
97
+ updateCSSVariables() {
98
+ const tabsContainer = this.el.shadowRoot?.querySelector('.tabs-container');
99
+ if (tabsContainer) {
100
+ tabsContainer.style.setProperty('--active-index', this.activeIndex.toString());
101
+ tabsContainer.style.setProperty('--tab-count', this.tabs.length.toString());
102
+ }
151
103
  }
152
104
  /**
153
- * Returns the active tab value
105
+ * Handles tab click events from children
154
106
  */
155
- async getActiveTab() {
156
- return this.activeTab;
107
+ handleTabClick(event) {
108
+ const clickedValue = event.detail;
109
+ const tab = this.tabs.find(t => t.value === clickedValue);
110
+ if (tab && !tab.disabled) {
111
+ this.value = clickedValue;
112
+ }
157
113
  }
158
114
  /**
159
- * Sets the active tab
115
+ * Keyboard navigation support
160
116
  */
161
- async setActiveTab(value) {
162
- const trigger = this.triggers.find(t => t.value === value);
163
- if (trigger && !trigger.disabled) {
164
- this.previousTab = this.activeTab;
165
- this.activeTab = value;
166
- this.updateInkbar();
167
- this.updateContentVisibility();
168
- this.updateTabStatus();
169
- this.bcmTabChange.emit({
170
- activeTab: this.activeTab,
171
- element: trigger,
172
- previousTab: this.previousTab,
173
- });
117
+ handleKeyDown(ev) {
118
+ const target = ev.target;
119
+ if (!target.classList.contains('tab-button'))
120
+ return;
121
+ let newIndex = this.activeIndex;
122
+ switch (ev.key) {
123
+ case 'ArrowRight':
124
+ case 'ArrowDown':
125
+ ev.preventDefault();
126
+ newIndex = this.getNextEnabledTabIndex(this.activeIndex);
127
+ break;
128
+ case 'ArrowLeft':
129
+ case 'ArrowUp':
130
+ ev.preventDefault();
131
+ newIndex = this.getPreviousEnabledTabIndex(this.activeIndex);
132
+ break;
133
+ case 'Home':
134
+ ev.preventDefault();
135
+ newIndex = this.getFirstEnabledTabIndex();
136
+ break;
137
+ case 'End':
138
+ ev.preventDefault();
139
+ newIndex = this.getLastEnabledTabIndex();
140
+ break;
141
+ default:
142
+ return;
143
+ }
144
+ if (newIndex !== this.activeIndex) {
145
+ this.value = this.tabs[newIndex].value;
146
+ this.focusTabAtIndex(newIndex);
174
147
  }
175
148
  }
176
- /**
177
- * Updates tab status
178
- */
179
- updateTabStatus() {
180
- this.triggers.forEach(trigger => {
181
- const isActive = trigger.value === this.activeTab;
182
- trigger.active = isActive;
183
- });
149
+ getNextEnabledTabIndex(currentIndex) {
150
+ for (let i = currentIndex + 1; i < this.tabs.length; i++) {
151
+ if (!this.tabs[i].disabled)
152
+ return i;
153
+ }
154
+ return currentIndex;
184
155
  }
185
- handleResize() {
186
- this.updateInkbar();
156
+ getPreviousEnabledTabIndex(currentIndex) {
157
+ for (let i = currentIndex - 1; i >= 0; i--) {
158
+ if (!this.tabs[i].disabled)
159
+ return i;
160
+ }
161
+ return currentIndex;
187
162
  }
188
- /**
189
- * Triggered when a tab is selected
190
- */
191
- handleTabSelected(event) {
192
- this.previousTab = this.activeTab;
193
- this.activeTab = event.detail;
194
- this.updateTabStatus();
195
- this.updateInkbar();
196
- this.updateContentVisibility();
197
- const activeElement = this.triggers.find(trigger => trigger.value === this.activeTab);
198
- if (activeElement) {
199
- this.bcmTabChange.emit({
200
- activeTab: this.activeTab,
201
- element: activeElement,
202
- previousTab: this.previousTab,
203
- });
163
+ getFirstEnabledTabIndex() {
164
+ const index = this.tabs.findIndex(t => !t.disabled);
165
+ return index >= 0 ? index : 0;
166
+ }
167
+ getLastEnabledTabIndex() {
168
+ for (let i = this.tabs.length - 1; i >= 0; i--) {
169
+ if (!this.tabs[i].disabled)
170
+ return i;
204
171
  }
172
+ return this.tabs.length - 1;
205
173
  }
206
- /**
207
- * Updates content visibility
208
- */
209
- updateContentVisibility() {
210
- this.contents.forEach(content => {
211
- const isVisible = content.value === this.activeTab;
212
- content.style.display = isVisible ? 'block' : 'none';
213
- content.setAttribute('aria-hidden', (!isVisible).toString());
214
- });
174
+ focusTabAtIndex(index) {
175
+ const buttons = this.el.shadowRoot?.querySelectorAll('.tab-button');
176
+ if (buttons && buttons[index]) {
177
+ buttons[index].focus();
178
+ }
215
179
  }
216
180
  /**
217
- * Updates inkbar position
181
+ * Public method to programmatically set active tab
218
182
  */
219
- updateInkbar() {
220
- var _a, _b;
221
- if (!this.tabsList) {
222
- console.warn('bcm-tabs-list not found');
223
- return;
224
- }
225
- const totalTriggers = this.triggers.length;
226
- if (totalTriggers === 0)
227
- return;
228
- const inkbar = (_b = (_a = this.tabsList) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.inkbar');
229
- const activeTrigger = this.triggers.find(trigger => trigger.value === this.activeTab);
230
- if (activeTrigger && inkbar) {
231
- // auto-width variant'ında container genişliği henüz hesaplanmamış olabilir
232
- // Bu durumda bir sonraki frame'de tekrar deneyelim
233
- if (this.variant === 'auto-width') {
234
- requestAnimationFrame(() => {
235
- this.updateInkbarPosition(inkbar, activeTrigger);
236
- });
237
- }
238
- else {
239
- this.updateInkbarPosition(inkbar, activeTrigger);
240
- }
241
- }
242
- else {
243
- if (inkbar)
244
- inkbar.style.opacity = '0';
183
+ async setActiveTab(value) {
184
+ const tab = this.tabs.find(t => t.value === value);
185
+ if (tab && !tab.disabled) {
186
+ this.value = value;
245
187
  }
246
188
  }
247
189
  /**
248
- * Updates inkbar position and size
190
+ * Public method to get active tab value
249
191
  */
250
- updateInkbarPosition(inkbar, activeTrigger) {
251
- var _a, _b, _c;
252
- const triggerRect = activeTrigger.getBoundingClientRect();
253
- const groupRect = (_c = (_b = (_a = this.tabsList) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.tabs-list')) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect();
254
- if (triggerRect && groupRect) {
255
- const left = triggerRect.left - groupRect.left;
256
- const width = triggerRect.width;
257
- // Her iki variant için de aynı davranış: sadece aktif tab altında göster
258
- inkbar.style.width = `${width}px`;
259
- inkbar.style.transform = `translateX(${left}px)`;
260
- inkbar.style.left = '0';
261
- inkbar.style.right = 'auto';
262
- // smooth prop'una göre opacity geçişi
263
- if (this.smooth) {
264
- inkbar.style.opacity = '1';
265
- }
266
- else {
267
- // Animasyon olmadan anında göster
268
- inkbar.style.transition = 'none';
269
- inkbar.style.opacity = '1';
270
- // Bir sonraki frame'de transition'ı geri yükle
271
- requestAnimationFrame(() => {
272
- inkbar.style.transition = '';
273
- });
274
- }
275
- }
276
- else {
277
- console.warn('Group or trigger rect calculation failed');
278
- inkbar.style.opacity = '0';
279
- }
192
+ async getActiveTab() {
193
+ return this.value;
280
194
  }
195
+ /**
196
+ * Tailwind class configuration
197
+ */
198
+ containerClass = tv({
199
+ base: 'tabs-container flex flex-col w-full',
200
+ variants: {
201
+ shadow: {
202
+ true: 'shadow-md rounded-lg',
203
+ false: '',
204
+ },
205
+ },
206
+ });
207
+ tabsListClass = tv({
208
+ base: 'tabs-list relative flex border-b border-color-default',
209
+ variants: {
210
+ variant: {
211
+ line: 'bg-transparent',
212
+ enclosed: 'bg-color-background-subtle border border-color-default rounded-t-lg',
213
+ },
214
+ },
215
+ });
216
+ inkbarClass = tv({
217
+ base: 'inkbar absolute bottom-0 left-0 h-0.5 bg-color-primary pointer-events-none',
218
+ variants: {
219
+ variant: {
220
+ line: 'transition-transform duration-200 ease-smooth',
221
+ enclosed: 'hidden',
222
+ },
223
+ },
224
+ });
281
225
  render() {
282
- return (h(Host, { key: '8d187c500759ab443717c0c8f8c965bf5b608a49' }, h("div", { key: '45de462ff12012abb2f3bad8a7c31976ee839ef9', class: this.tabClass({ variant: this.variant }) }, h("slot", { key: 'b4f945118e8606b1276aee568c029d20d05a40a2', name: "tabs-list" }), h("slot", { key: '23d055af5abd2ab9dde916d625795d448baf68a0' }))));
226
+ this.updateCSSVariables();
227
+ this.propagatePropsToTabs();
228
+ return (h(Host, { key: '43ca51341fed91a75222627b7050975ff00d774b' }, h("div", { key: '537add7dc0fc2905ee7e6d29570984b3edc6070c', class: this.containerClass({ shadow: this.shadow }) }, h("div", { key: 'f26fc4c052121b2cd7c94a07ed4fa3ca24d86f6e', class: this.tabsListClass({ variant: this.variant }), role: "tablist" }, this.tabs.map((tab, index) => (h("button", { key: tab.value, class: `tab-button flex-1 px-4 py-2 text-center font-medium transition-colors border-none ${tab.value === this.value
229
+ ? 'text-color-primary'
230
+ : tab.disabled
231
+ ? 'text-color-disabled cursor-not-allowed opacity-50'
232
+ : 'text-color-placeholder hover:text-color-primary cursor-pointer'} ${this.size === 'sm' ? 'text-sm py-1.5 px-3' : this.size === 'lg' ? 'text-lg py-3 px-5' : 'text-base py-2 px-4'} bg-transparent`, role: "tab", "aria-selected": (tab.value === this.value).toString(), "aria-controls": `panel-${tab.value}`, id: `tab-${tab.value}`, disabled: tab.disabled, onClick: () => !tab.disabled && (this.value = tab.value), tabindex: index === this.activeIndex ? 0 : -1 }, tab.label))), this.variant === 'line' && (h("div", { key: '74bc405d20efdb73858ddc52e9d7a1e40260de8d', class: this.inkbarClass({ variant: this.variant }), style: {
233
+ transform: `translateX(calc(${this.activeIndex} * 100% / ${this.tabs.length}))`,
234
+ width: `calc(100% / ${this.tabs.length})`,
235
+ } }))), h("div", { key: 'f0e47f8829616c48d66638368907f73f4f6359af', class: "tabs-content" }, h("slot", { key: 'feb9d8f749dbafea06c09eb8300b0edd783aeabc' })))));
283
236
  }
284
237
  static get is() { return "bcm-tabs"; }
285
238
  static get encapsulation() { return "shadow"; }
@@ -295,9 +248,9 @@ export class BcmTabs {
295
248
  }
296
249
  static get properties() {
297
250
  return {
298
- "defaultValue": {
251
+ "value": {
299
252
  "type": "string",
300
- "mutable": false,
253
+ "mutable": true,
301
254
  "complexType": {
302
255
  "original": "string",
303
256
  "resolved": "string",
@@ -307,54 +260,54 @@ export class BcmTabs {
307
260
  "optional": false,
308
261
  "docs": {
309
262
  "tags": [],
310
- "text": "Default active tab value"
263
+ "text": "Active tab value"
311
264
  },
312
265
  "getter": false,
313
266
  "setter": false,
314
267
  "reflect": true,
315
- "attribute": "default-value"
268
+ "attribute": "value"
316
269
  },
317
270
  "size": {
318
271
  "type": "string",
319
272
  "mutable": false,
320
273
  "complexType": {
321
- "original": "'small' | 'medium' | 'large'",
322
- "resolved": "\"large\" | \"medium\" | \"small\"",
274
+ "original": "'sm' | 'md' | 'lg'",
275
+ "resolved": "\"lg\" | \"md\" | \"sm\"",
323
276
  "references": {}
324
277
  },
325
278
  "required": false,
326
279
  "optional": false,
327
280
  "docs": {
328
281
  "tags": [],
329
- "text": "Tab size"
282
+ "text": "Tab size variant"
330
283
  },
331
284
  "getter": false,
332
285
  "setter": false,
333
286
  "reflect": true,
334
287
  "attribute": "size",
335
- "defaultValue": "'medium'"
288
+ "defaultValue": "'md'"
336
289
  },
337
290
  "variant": {
338
291
  "type": "string",
339
292
  "mutable": false,
340
293
  "complexType": {
341
- "original": "'full-width' | 'auto-width'",
342
- "resolved": "\"auto-width\" | \"full-width\"",
294
+ "original": "'line' | 'enclosed'",
295
+ "resolved": "\"enclosed\" | \"line\"",
343
296
  "references": {}
344
297
  },
345
298
  "required": false,
346
299
  "optional": false,
347
300
  "docs": {
348
301
  "tags": [],
349
- "text": "Tab variant - controls width behavior"
302
+ "text": "Visual variant"
350
303
  },
351
304
  "getter": false,
352
305
  "setter": false,
353
306
  "reflect": true,
354
307
  "attribute": "variant",
355
- "defaultValue": "'full-width'"
308
+ "defaultValue": "'line'"
356
309
  },
357
- "smooth": {
310
+ "shadow": {
358
311
  "type": "boolean",
359
312
  "mutable": false,
360
313
  "complexType": {
@@ -366,20 +319,20 @@ export class BcmTabs {
366
319
  "optional": false,
367
320
  "docs": {
368
321
  "tags": [],
369
- "text": "Whether to enable smooth animations for inkbar and transitions"
322
+ "text": "Enable shadow on main container"
370
323
  },
371
324
  "getter": false,
372
325
  "setter": false,
373
326
  "reflect": true,
374
- "attribute": "smooth",
375
- "defaultValue": "true"
327
+ "attribute": "shadow",
328
+ "defaultValue": "false"
376
329
  }
377
330
  };
378
331
  }
379
332
  static get states() {
380
333
  return {
381
- "activeTab": {},
382
- "previousTab": {}
334
+ "tabs": {},
335
+ "activeIndex": {}
383
336
  };
384
337
  }
385
338
  static get events() {
@@ -391,44 +344,18 @@ export class BcmTabs {
391
344
  "composed": false,
392
345
  "docs": {
393
346
  "tags": [],
394
- "text": "Triggers when tab changes"
347
+ "text": "Emits when active tab changes"
395
348
  },
396
349
  "complexType": {
397
- "original": "{\n activeTab: string;\n element: HTMLBcmTabsTriggerElement;\n previousTab?: string;\n }",
398
- "resolved": "{ activeTab: string; element: HTMLBcmTabsTriggerElement; previousTab?: string; }",
399
- "references": {
400
- "HTMLBcmTabsTriggerElement": {
401
- "location": "global",
402
- "id": "global::HTMLBcmTabsTriggerElement"
403
- }
404
- }
350
+ "original": "{\n value: string;\n previousValue: string;\n }",
351
+ "resolved": "{ value: string; previousValue: string; }",
352
+ "references": {}
405
353
  }
406
354
  }];
407
355
  }
408
356
  static get methods() {
409
357
  return {
410
- "disableTab": {
411
- "complexType": {
412
- "signature": "(value: string) => Promise<void>",
413
- "parameters": [{
414
- "name": "value",
415
- "type": "string",
416
- "docs": ""
417
- }],
418
- "references": {
419
- "Promise": {
420
- "location": "global",
421
- "id": "global::Promise"
422
- }
423
- },
424
- "return": "Promise<void>"
425
- },
426
- "docs": {
427
- "text": "",
428
- "tags": []
429
- }
430
- },
431
- "enableTab": {
358
+ "setActiveTab": {
432
359
  "complexType": {
433
360
  "signature": "(value: string) => Promise<void>",
434
361
  "parameters": [{
@@ -445,41 +372,7 @@ export class BcmTabs {
445
372
  "return": "Promise<void>"
446
373
  },
447
374
  "docs": {
448
- "text": "",
449
- "tags": []
450
- }
451
- },
452
- "disableAllTabs": {
453
- "complexType": {
454
- "signature": "() => Promise<void>",
455
- "parameters": [],
456
- "references": {
457
- "Promise": {
458
- "location": "global",
459
- "id": "global::Promise"
460
- }
461
- },
462
- "return": "Promise<void>"
463
- },
464
- "docs": {
465
- "text": "Disables all tabs",
466
- "tags": []
467
- }
468
- },
469
- "enableAllTabs": {
470
- "complexType": {
471
- "signature": "() => Promise<void>",
472
- "parameters": [],
473
- "references": {
474
- "Promise": {
475
- "location": "global",
476
- "id": "global::Promise"
477
- }
478
- },
479
- "return": "Promise<void>"
480
- },
481
- "docs": {
482
- "text": "Enables all tabs",
375
+ "text": "Public method to programmatically set active tab",
483
376
  "tags": []
484
377
  }
485
378
  },
@@ -496,28 +389,7 @@ export class BcmTabs {
496
389
  "return": "Promise<string>"
497
390
  },
498
391
  "docs": {
499
- "text": "Returns the active tab value",
500
- "tags": []
501
- }
502
- },
503
- "setActiveTab": {
504
- "complexType": {
505
- "signature": "(value: string) => Promise<void>",
506
- "parameters": [{
507
- "name": "value",
508
- "type": "string",
509
- "docs": ""
510
- }],
511
- "references": {
512
- "Promise": {
513
- "location": "global",
514
- "id": "global::Promise"
515
- }
516
- },
517
- "return": "Promise<void>"
518
- },
519
- "docs": {
520
- "text": "Sets the active tab",
392
+ "text": "Public method to get active tab value",
521
393
  "tags": []
522
394
  }
523
395
  }
@@ -526,28 +398,25 @@ export class BcmTabs {
526
398
  static get elementRef() { return "el"; }
527
399
  static get watchers() {
528
400
  return [{
401
+ "propName": "value",
402
+ "methodName": "handleValueChange"
403
+ }, {
529
404
  "propName": "size",
530
405
  "methodName": "handleSizeChange"
531
- }, {
532
- "propName": "variant",
533
- "methodName": "handleVariantChange"
534
- }, {
535
- "propName": "smooth",
536
- "methodName": "handleSmoothChange"
537
406
  }];
538
407
  }
539
408
  static get listeners() {
540
409
  return [{
541
- "name": "resize",
542
- "method": "handleResize",
543
- "target": "window",
410
+ "name": "bcmTabClick",
411
+ "method": "handleTabClick",
412
+ "target": undefined,
544
413
  "capture": false,
545
- "passive": true
414
+ "passive": false
546
415
  }, {
547
- "name": "bcmTabSelected",
548
- "method": "handleTabSelected",
416
+ "name": "keydown",
417
+ "method": "handleKeyDown",
549
418
  "target": undefined,
550
- "capture": true,
419
+ "capture": false,
551
420
  "passive": false
552
421
  }];
553
422
  }