bromcom-ui-next 0.1.5 → 0.1.7

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 (396) hide show
  1. package/dist/bromcom-ui/bromcom-ui.css +1 -1
  2. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  3. package/dist/bromcom-ui/bromcom-ui.esm.js.map +1 -1
  4. package/dist/bromcom-ui/p-056c9348.entry.js +2 -0
  5. package/dist/bromcom-ui/{p-5bee2e76.entry.js.map → p-056c9348.entry.js.map} +1 -1
  6. package/dist/bromcom-ui/p-0d0d6483.entry.js +2 -0
  7. package/dist/bromcom-ui/{p-e08b23ff.entry.js.map → p-0d0d6483.entry.js.map} +1 -1
  8. package/dist/bromcom-ui/p-13784cd7.entry.js +2 -0
  9. package/dist/bromcom-ui/p-13784cd7.entry.js.map +1 -0
  10. package/dist/bromcom-ui/p-13a245f6.js +2 -0
  11. package/dist/bromcom-ui/p-13a245f6.js.map +1 -0
  12. package/dist/bromcom-ui/p-15829c47.entry.js +2 -0
  13. package/dist/bromcom-ui/{p-53f21d16.entry.js.map → p-15829c47.entry.js.map} +1 -1
  14. package/dist/bromcom-ui/p-389f1976.entry.js +2 -0
  15. package/dist/bromcom-ui/p-389f1976.entry.js.map +1 -0
  16. package/dist/bromcom-ui/p-49b0e982.entry.js +2 -0
  17. package/dist/bromcom-ui/p-49b0e982.entry.js.map +1 -0
  18. package/dist/bromcom-ui/p-4b7294a3.entry.js +2 -0
  19. package/dist/bromcom-ui/{p-2bbd3c52.entry.js.map → p-4b7294a3.entry.js.map} +1 -1
  20. package/dist/bromcom-ui/p-55c4263c.entry.js +2 -0
  21. package/dist/bromcom-ui/p-55c4263c.entry.js.map +1 -0
  22. package/dist/bromcom-ui/{p-f9eeafa7.entry.js → p-58ee24a8.entry.js} +2 -2
  23. package/dist/bromcom-ui/p-625bbd86.entry.js +2 -0
  24. package/dist/bromcom-ui/p-625bbd86.entry.js.map +1 -0
  25. package/dist/bromcom-ui/p-729a870f.js.map +1 -1
  26. package/dist/bromcom-ui/p-7d8ad3dd.entry.js +2 -0
  27. package/dist/bromcom-ui/p-7d8ad3dd.entry.js.map +1 -0
  28. package/dist/bromcom-ui/p-9594cebb.js +2 -0
  29. package/dist/bromcom-ui/p-9594cebb.js.map +1 -0
  30. package/dist/bromcom-ui/p-9ab4d2be.entry.js +2 -0
  31. package/dist/bromcom-ui/p-9ab4d2be.entry.js.map +1 -0
  32. package/dist/bromcom-ui/p-a29e61a4.entry.js +2 -0
  33. package/dist/bromcom-ui/{p-7a1bf6a6.entry.js.map → p-a29e61a4.entry.js.map} +1 -1
  34. package/dist/bromcom-ui/p-ae16edd3.entry.js +2 -0
  35. package/dist/bromcom-ui/p-ae16edd3.entry.js.map +1 -0
  36. package/dist/bromcom-ui/p-ba2410ef.js +2 -0
  37. package/dist/bromcom-ui/p-ba2410ef.js.map +1 -0
  38. package/dist/bromcom-ui/p-bd0f7e78.entry.js +2 -0
  39. package/dist/bromcom-ui/p-bd0f7e78.entry.js.map +1 -0
  40. package/dist/bromcom-ui/p-bf69fc8a.entry.js +2 -0
  41. package/dist/bromcom-ui/p-bf69fc8a.entry.js.map +1 -0
  42. package/dist/bromcom-ui/p-c2b3945e.entry.js +2 -0
  43. package/dist/bromcom-ui/p-c2b3945e.entry.js.map +1 -0
  44. package/dist/bromcom-ui/p-c444235a.entry.js +2 -0
  45. package/dist/bromcom-ui/{p-63cb0933.entry.js.map → p-c444235a.entry.js.map} +1 -1
  46. package/dist/bromcom-ui/p-c995a48c.entry.js +2 -0
  47. package/dist/bromcom-ui/p-c995a48c.entry.js.map +1 -0
  48. package/dist/bromcom-ui/p-c9b736d9.js +3 -0
  49. package/dist/{cjs/index-4795c073.js.map → bromcom-ui/p-c9b736d9.js.map} +1 -1
  50. package/dist/bromcom-ui/p-cd271b49.entry.js +2 -0
  51. package/dist/bromcom-ui/p-cd271b49.entry.js.map +1 -0
  52. package/dist/bromcom-ui/{p-6abaf96f.entry.js → p-d57587e5.entry.js} +2 -2
  53. package/dist/bromcom-ui/p-e6025578.entry.js +2 -0
  54. package/dist/bromcom-ui/p-e6025578.entry.js.map +1 -0
  55. package/dist/bromcom-ui/p-e89ab4a7.entry.js +2 -0
  56. package/dist/bromcom-ui/p-e89ab4a7.entry.js.map +1 -0
  57. package/dist/bromcom-ui/{p-4f402148.entry.js → p-f2d8aa70.entry.js} +2 -2
  58. package/dist/bromcom-ui/p-f4e8a47d.entry.js +2 -0
  59. package/dist/bromcom-ui/p-f4e8a47d.entry.js.map +1 -0
  60. package/dist/bromcom-ui/p-f7890098.entry.js +2 -0
  61. package/dist/bromcom-ui/{p-f0ece968.entry.js.map → p-f7890098.entry.js.map} +1 -1
  62. package/dist/cjs/app-globals-29edfda4.js.map +1 -1
  63. package/dist/cjs/bcm-accordion-group.cjs.entry.js +1 -1
  64. package/dist/cjs/bcm-accordion.cjs.entry.js +2 -2
  65. package/dist/cjs/bcm-accordion.cjs.entry.js.map +1 -1
  66. package/dist/cjs/bcm-alert.cjs.entry.js +1 -1
  67. package/dist/cjs/bcm-avatar_4.cjs.entry.js +12 -6
  68. package/dist/cjs/bcm-avatar_4.cjs.entry.js.map +1 -1
  69. package/dist/cjs/bcm-button-group.cjs.entry.js +97 -0
  70. package/dist/cjs/bcm-button-group.cjs.entry.js.map +1 -0
  71. package/dist/cjs/bcm-checkbox.cjs.entry.js +226 -0
  72. package/dist/cjs/bcm-checkbox.cjs.entry.js.map +1 -0
  73. package/dist/cjs/bcm-chip.cjs.entry.js +3 -3
  74. package/dist/cjs/bcm-chip.cjs.entry.js.map +1 -1
  75. package/dist/cjs/bcm-divider.cjs.entry.js +2 -2
  76. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +4 -4
  77. package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +1 -1
  78. package/dist/cjs/bcm-dropdown.cjs.entry.js +3 -3
  79. package/dist/cjs/bcm-dropdown.cjs.entry.js.map +1 -1
  80. package/dist/cjs/bcm-input.cjs.entry.js +7 -6
  81. package/dist/cjs/bcm-input.cjs.entry.js.map +1 -1
  82. package/dist/cjs/bcm-linked.cjs.entry.js +9 -1899
  83. package/dist/cjs/bcm-linked.cjs.entry.js.map +1 -1
  84. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +252 -0
  85. package/dist/cjs/bcm-pop-confirm.cjs.entry.js.map +1 -0
  86. package/dist/cjs/bcm-popover.cjs.entry.js +191 -0
  87. package/dist/cjs/bcm-popover.cjs.entry.js.map +1 -0
  88. package/dist/cjs/bcm-radio-group.cjs.entry.js +171 -0
  89. package/dist/cjs/bcm-radio-group.cjs.entry.js.map +1 -0
  90. package/dist/cjs/bcm-radio.cjs.entry.js +173 -0
  91. package/dist/cjs/bcm-radio.cjs.entry.js.map +1 -0
  92. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +109 -0
  93. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js.map +1 -0
  94. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +146 -0
  95. package/dist/cjs/bcm-segmented-picker.cjs.entry.js.map +1 -0
  96. package/dist/cjs/bcm-switch.cjs.entry.js +188 -0
  97. package/dist/cjs/bcm-switch.cjs.entry.js.map +1 -0
  98. package/dist/cjs/bcm-tabs-content.cjs.entry.js +22 -0
  99. package/dist/cjs/bcm-tabs-content.cjs.entry.js.map +1 -0
  100. package/dist/cjs/bcm-tabs-list.cjs.entry.js +43 -0
  101. package/dist/cjs/bcm-tabs-list.cjs.entry.js.map +1 -0
  102. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +92 -0
  103. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +1 -0
  104. package/dist/cjs/bcm-tabs.cjs.entry.js +211 -0
  105. package/dist/cjs/bcm-tabs.cjs.entry.js.map +1 -0
  106. package/dist/cjs/bcm-text.cjs.entry.js +3 -3
  107. package/dist/cjs/bcm-text.cjs.entry.js.map +1 -1
  108. package/dist/cjs/bcm-textarea.cjs.entry.js +8 -7
  109. package/dist/cjs/bcm-textarea.cjs.entry.js.map +1 -1
  110. package/dist/cjs/bcm-tooltip.cjs.entry.js +187 -0
  111. package/dist/cjs/bcm-tooltip.cjs.entry.js.map +1 -0
  112. package/dist/cjs/bromcom-ui.cjs.js +2 -2
  113. package/dist/cjs/floating-ui.dom.esm-3ec8404c.js +2085 -0
  114. package/dist/cjs/floating-ui.dom.esm-3ec8404c.js.map +1 -0
  115. package/dist/{components/p-31354aaa.js → cjs/generate-id-f6982042.js} +4 -47
  116. package/dist/cjs/generate-id-f6982042.js.map +1 -0
  117. package/dist/cjs/{index-4795c073.js → index-9a2c5938.js} +36 -7
  118. package/dist/{bromcom-ui/p-15fe392b.js.map → cjs/index-9a2c5938.js.map} +1 -1
  119. package/dist/cjs/loader.cjs.js +2 -2
  120. package/dist/cjs/validation-messages-18389279.js +52 -0
  121. package/dist/cjs/validation-messages-18389279.js.map +1 -0
  122. package/dist/collection/collection-manifest.json +15 -1
  123. package/dist/collection/components/accordion/accordion.css +1 -1
  124. package/dist/collection/components/avatar/avatar.css +1 -1
  125. package/dist/collection/components/badge/badge.css +1 -1
  126. package/dist/collection/components/button/button.component.js +33 -2
  127. package/dist/collection/components/button/button.component.js.map +1 -1
  128. package/dist/collection/components/button/button.css +1 -1
  129. package/dist/collection/components/button/types.js.map +1 -1
  130. package/dist/collection/components/button-group/button-group.component.js +252 -0
  131. package/dist/collection/components/button-group/button-group.component.js.map +1 -0
  132. package/dist/collection/components/button-group/button-group.css +1 -0
  133. package/dist/collection/components/button-group/types.js +2 -0
  134. package/dist/collection/components/button-group/types.js.map +1 -0
  135. package/dist/collection/components/checkbox/checkbox.component.js +440 -0
  136. package/dist/collection/components/checkbox/checkbox.component.js.map +1 -0
  137. package/dist/collection/components/checkbox/checkbox.css +1 -0
  138. package/dist/collection/components/chip/chip.component.js +1 -1
  139. package/dist/collection/components/chip/chip.css +1 -1
  140. package/dist/collection/components/divider/divider.component.js +1 -1
  141. package/dist/collection/components/dropdown/dropdown.component.js +1 -1
  142. package/dist/collection/components/dropdown/dropdown.css +1 -1
  143. package/dist/collection/components/dropdown-item/dropdown-item.component.js +2 -2
  144. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
  145. package/dist/collection/components/input/input.component.js +2 -2
  146. package/dist/collection/components/input/input.css +1 -1
  147. package/dist/collection/components/linked/linked.component.js +2 -2
  148. package/dist/collection/components/linked/linked.css +1 -1
  149. package/dist/collection/components/pop-confirm/pop-confirm.component.js +629 -0
  150. package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -0
  151. package/dist/collection/components/pop-confirm/pop-confirm.css +1 -0
  152. package/dist/collection/components/popover/popover.component.js +477 -0
  153. package/dist/collection/components/popover/popover.component.js.map +1 -0
  154. package/dist/collection/components/popover/popover.css +1 -0
  155. package/dist/collection/components/radio/radio.component.js +502 -0
  156. package/dist/collection/components/radio/radio.component.js.map +1 -0
  157. package/dist/collection/components/radio/radio.css +1 -0
  158. package/dist/collection/components/radio-group/radio-group.component.js +523 -0
  159. package/dist/collection/components/radio-group/radio-group.component.js.map +1 -0
  160. package/dist/collection/components/radio-group/radio-group.css +1 -0
  161. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +253 -0
  162. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +1 -0
  163. package/dist/collection/components/segmented-picker/segmented-picker-option.css +1 -0
  164. package/dist/collection/components/segmented-picker/segmented-picker.component.js +269 -0
  165. package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -0
  166. package/dist/collection/components/segmented-picker/segmented-picker.css +1 -0
  167. package/dist/collection/components/segmented-picker/types.js +2 -0
  168. package/dist/collection/components/segmented-picker/types.js.map +1 -0
  169. package/dist/collection/components/switch/switch.component.js +452 -0
  170. package/dist/collection/components/switch/switch.component.js.map +1 -0
  171. package/dist/collection/components/switch/switch.css +1 -0
  172. package/dist/collection/components/tabs/bcm-tabs.css +1 -0
  173. package/dist/collection/components/tabs/tabs-content.component.js +46 -0
  174. package/dist/collection/components/tabs/tabs-content.component.js.map +1 -0
  175. package/dist/collection/components/tabs/tabs-content.css +1 -0
  176. package/dist/collection/components/tabs/tabs-list.component.js +46 -0
  177. package/dist/collection/components/tabs/tabs-list.component.js.map +1 -0
  178. package/dist/collection/components/tabs/tabs-list.css +1 -0
  179. package/dist/collection/components/tabs/tabs-trigger.component.js +195 -0
  180. package/dist/collection/components/tabs/tabs-trigger.component.js.map +1 -0
  181. package/dist/collection/components/tabs/tabs-trigger.css +1 -0
  182. package/dist/collection/components/tabs/tabs.component.js +422 -0
  183. package/dist/collection/components/tabs/tabs.component.js.map +1 -0
  184. package/dist/collection/components/text/text.component.js +1 -1
  185. package/dist/collection/components/text/text.css +1 -1
  186. package/dist/collection/components/textarea/textarea.component.js +3 -3
  187. package/dist/collection/components/textarea/textarea.css +1 -1
  188. package/dist/collection/components/tooltip/tooltip.component.js +385 -0
  189. package/dist/collection/components/tooltip/tooltip.component.js.map +1 -0
  190. package/dist/collection/components/tooltip/tooltip.css +1 -0
  191. package/dist/collection/styles/theme-variables.js +414 -18
  192. package/dist/collection/styles/theme-variables.js.map +1 -1
  193. package/dist/components/bcm-accordion-group.js +1 -1
  194. package/dist/components/bcm-accordion.js +2 -2
  195. package/dist/components/bcm-accordion.js.map +1 -1
  196. package/dist/components/bcm-alert.js +1 -1
  197. package/dist/components/bcm-avatar.js +3 -3
  198. package/dist/components/bcm-avatar.js.map +1 -1
  199. package/dist/components/bcm-badge.js +1 -1
  200. package/dist/components/bcm-basic-badge.js +1 -1
  201. package/dist/components/bcm-button-group.d.ts +11 -0
  202. package/dist/components/bcm-button-group.js +120 -0
  203. package/dist/components/bcm-button-group.js.map +1 -0
  204. package/dist/components/bcm-button.js +1 -1
  205. package/dist/components/bcm-checkbox.d.ts +11 -0
  206. package/dist/components/bcm-checkbox.js +256 -0
  207. package/dist/components/bcm-checkbox.js.map +1 -0
  208. package/dist/components/bcm-chip.js +3 -3
  209. package/dist/components/bcm-chip.js.map +1 -1
  210. package/dist/components/bcm-divider.js +2 -2
  211. package/dist/components/bcm-dropdown-item.js +4 -4
  212. package/dist/components/bcm-dropdown-item.js.map +1 -1
  213. package/dist/components/bcm-dropdown.js +5 -5
  214. package/dist/components/bcm-dropdown.js.map +1 -1
  215. package/dist/components/bcm-input.js +6 -5
  216. package/dist/components/bcm-input.js.map +1 -1
  217. package/dist/components/bcm-linked.js +1 -1
  218. package/dist/components/bcm-pop-confirm.d.ts +11 -0
  219. package/dist/components/bcm-pop-confirm.js +288 -0
  220. package/dist/components/bcm-pop-confirm.js.map +1 -0
  221. package/dist/components/bcm-popover.d.ts +11 -0
  222. package/dist/components/bcm-popover.js +216 -0
  223. package/dist/components/bcm-popover.js.map +1 -0
  224. package/dist/components/bcm-radio-group.d.ts +11 -0
  225. package/dist/components/bcm-radio-group.js +200 -0
  226. package/dist/components/bcm-radio-group.js.map +1 -0
  227. package/dist/components/bcm-radio.d.ts +11 -0
  228. package/dist/components/bcm-radio.js +198 -0
  229. package/dist/components/bcm-radio.js.map +1 -0
  230. package/dist/components/bcm-segmented-picker-option.d.ts +11 -0
  231. package/dist/components/bcm-segmented-picker-option.js +131 -0
  232. package/dist/components/bcm-segmented-picker-option.js.map +1 -0
  233. package/dist/components/bcm-segmented-picker.d.ts +11 -0
  234. package/dist/components/bcm-segmented-picker.js +170 -0
  235. package/dist/components/bcm-segmented-picker.js.map +1 -0
  236. package/dist/components/bcm-switch.d.ts +11 -0
  237. package/dist/components/bcm-switch.js +215 -0
  238. package/dist/components/bcm-switch.js.map +1 -0
  239. package/dist/components/bcm-tabs-content.d.ts +11 -0
  240. package/dist/components/bcm-tabs-content.js +39 -0
  241. package/dist/components/bcm-tabs-content.js.map +1 -0
  242. package/dist/components/bcm-tabs-list.d.ts +11 -0
  243. package/dist/components/bcm-tabs-list.js +58 -0
  244. package/dist/components/bcm-tabs-list.js.map +1 -0
  245. package/dist/components/bcm-tabs-trigger.d.ts +11 -0
  246. package/dist/components/bcm-tabs-trigger.js +112 -0
  247. package/dist/components/bcm-tabs-trigger.js.map +1 -0
  248. package/dist/components/bcm-tabs.d.ts +11 -0
  249. package/dist/components/bcm-tabs.js +239 -0
  250. package/dist/components/bcm-tabs.js.map +1 -0
  251. package/dist/components/bcm-text.js +3 -3
  252. package/dist/components/bcm-text.js.map +1 -1
  253. package/dist/components/bcm-textarea.js +7 -6
  254. package/dist/components/bcm-textarea.js.map +1 -1
  255. package/dist/components/bcm-tooltip.d.ts +11 -0
  256. package/dist/components/bcm-tooltip.js +211 -0
  257. package/dist/components/bcm-tooltip.js.map +1 -0
  258. package/dist/components/index.js +1 -1
  259. package/dist/components/p-13a245f6.js +48 -0
  260. package/dist/components/p-13a245f6.js.map +1 -0
  261. package/dist/components/{p-e918f815.js → p-49f20ff7.js} +3 -3
  262. package/dist/components/{p-e918f815.js.map → p-49f20ff7.js.map} +1 -1
  263. package/dist/components/{p-13582168.js → p-5377117d.js} +32 -6
  264. package/dist/components/p-5377117d.js.map +1 -0
  265. package/dist/components/p-5f7a0d0d.js +107 -0
  266. package/dist/components/p-5f7a0d0d.js.map +1 -0
  267. package/dist/components/{p-613ee92d.js → p-9594cebb.js} +201 -120
  268. package/dist/components/p-9594cebb.js.map +1 -0
  269. package/dist/{esm/validation-messages-a29d53be.js → components/p-ba2410ef.js} +2 -47
  270. package/dist/components/p-ba2410ef.js.map +1 -0
  271. package/dist/components/{p-0063a3d9.js → p-e6567774.js} +12 -5
  272. package/dist/components/p-e6567774.js.map +1 -0
  273. package/dist/esm/app-globals-bfa07b76.js.map +1 -1
  274. package/dist/esm/bcm-accordion-group.entry.js +1 -1
  275. package/dist/esm/bcm-accordion.entry.js +2 -2
  276. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  277. package/dist/esm/bcm-alert.entry.js +1 -1
  278. package/dist/esm/bcm-avatar_4.entry.js +12 -6
  279. package/dist/esm/bcm-avatar_4.entry.js.map +1 -1
  280. package/dist/esm/bcm-button-group.entry.js +93 -0
  281. package/dist/esm/bcm-button-group.entry.js.map +1 -0
  282. package/dist/esm/bcm-checkbox.entry.js +222 -0
  283. package/dist/esm/bcm-checkbox.entry.js.map +1 -0
  284. package/dist/esm/bcm-chip.entry.js +3 -3
  285. package/dist/esm/bcm-chip.entry.js.map +1 -1
  286. package/dist/esm/bcm-divider.entry.js +2 -2
  287. package/dist/esm/bcm-dropdown-item.entry.js +4 -4
  288. package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
  289. package/dist/esm/bcm-dropdown.entry.js +3 -3
  290. package/dist/esm/bcm-dropdown.entry.js.map +1 -1
  291. package/dist/esm/bcm-input.entry.js +6 -5
  292. package/dist/esm/bcm-input.entry.js.map +1 -1
  293. package/dist/esm/bcm-linked.entry.js +5 -1895
  294. package/dist/esm/bcm-linked.entry.js.map +1 -1
  295. package/dist/esm/bcm-pop-confirm.entry.js +248 -0
  296. package/dist/esm/bcm-pop-confirm.entry.js.map +1 -0
  297. package/dist/esm/bcm-popover.entry.js +187 -0
  298. package/dist/esm/bcm-popover.entry.js.map +1 -0
  299. package/dist/esm/bcm-radio-group.entry.js +167 -0
  300. package/dist/esm/bcm-radio-group.entry.js.map +1 -0
  301. package/dist/esm/bcm-radio.entry.js +169 -0
  302. package/dist/esm/bcm-radio.entry.js.map +1 -0
  303. package/dist/esm/bcm-segmented-picker-option.entry.js +105 -0
  304. package/dist/esm/bcm-segmented-picker-option.entry.js.map +1 -0
  305. package/dist/esm/bcm-segmented-picker.entry.js +142 -0
  306. package/dist/esm/bcm-segmented-picker.entry.js.map +1 -0
  307. package/dist/esm/bcm-switch.entry.js +184 -0
  308. package/dist/esm/bcm-switch.entry.js.map +1 -0
  309. package/dist/esm/bcm-tabs-content.entry.js +18 -0
  310. package/dist/esm/bcm-tabs-content.entry.js.map +1 -0
  311. package/dist/esm/bcm-tabs-list.entry.js +39 -0
  312. package/dist/esm/bcm-tabs-list.entry.js.map +1 -0
  313. package/dist/esm/bcm-tabs-trigger.entry.js +88 -0
  314. package/dist/esm/bcm-tabs-trigger.entry.js.map +1 -0
  315. package/dist/esm/bcm-tabs.entry.js +207 -0
  316. package/dist/esm/bcm-tabs.entry.js.map +1 -0
  317. package/dist/esm/bcm-text.entry.js +3 -3
  318. package/dist/esm/bcm-text.entry.js.map +1 -1
  319. package/dist/esm/bcm-textarea.entry.js +7 -6
  320. package/dist/esm/bcm-textarea.entry.js.map +1 -1
  321. package/dist/esm/bcm-tooltip.entry.js +183 -0
  322. package/dist/esm/bcm-tooltip.entry.js.map +1 -0
  323. package/dist/esm/bromcom-ui.js +3 -3
  324. package/dist/esm/floating-ui.dom.esm-480e0f15.js +2078 -0
  325. package/dist/esm/floating-ui.dom.esm-480e0f15.js.map +1 -0
  326. package/dist/{cjs/validation-messages-c36e5c31.js → esm/generate-id-3b2fcb93.js} +2 -52
  327. package/dist/esm/generate-id-3b2fcb93.js.map +1 -0
  328. package/dist/esm/{index-27cc1bac.js → index-8571fbf7.js} +36 -8
  329. package/dist/esm/index-8571fbf7.js.map +1 -0
  330. package/dist/esm/loader.js +3 -3
  331. package/dist/esm/validation-messages-af4512f0.js +48 -0
  332. package/dist/esm/validation-messages-af4512f0.js.map +1 -0
  333. package/dist/types/components/button/button.component.d.ts +3 -1
  334. package/dist/types/components/button/types.d.ts +4 -4
  335. package/dist/types/components/button-group/button-group.component.d.ts +25 -0
  336. package/dist/types/components/button-group/types.d.ts +2 -0
  337. package/dist/types/components/checkbox/checkbox.component.d.ts +99 -0
  338. package/dist/types/components/pop-confirm/pop-confirm.component.d.ts +195 -0
  339. package/dist/types/components/popover/popover.component.d.ts +118 -0
  340. package/dist/types/components/radio/radio.component.d.ts +105 -0
  341. package/dist/types/components/radio-group/radio-group.component.d.ts +124 -0
  342. package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +30 -0
  343. package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +35 -0
  344. package/dist/types/components/segmented-picker/types.d.ts +1 -0
  345. package/dist/types/components/switch/switch.component.d.ts +62 -0
  346. package/dist/types/components/tabs/tabs-content.component.d.ts +13 -0
  347. package/dist/types/components/tabs/tabs-list.component.d.ts +12 -0
  348. package/dist/types/components/tabs/tabs-trigger.component.d.ts +41 -0
  349. package/dist/types/components/tabs/tabs.component.d.ts +88 -0
  350. package/dist/types/components/tooltip/tooltip.component.d.ts +86 -0
  351. package/dist/types/components.d.ts +2576 -819
  352. package/dist/types/styles/theme-variables.d.ts +399 -3
  353. package/package.json +1 -1
  354. package/dist/bromcom-ui/p-15fe392b.js +0 -3
  355. package/dist/bromcom-ui/p-2bbd3c52.entry.js +0 -2
  356. package/dist/bromcom-ui/p-2f1d87a7.entry.js +0 -2
  357. package/dist/bromcom-ui/p-2f1d87a7.entry.js.map +0 -1
  358. package/dist/bromcom-ui/p-31354aaa.js +0 -2
  359. package/dist/bromcom-ui/p-31354aaa.js.map +0 -1
  360. package/dist/bromcom-ui/p-53f21d16.entry.js +0 -2
  361. package/dist/bromcom-ui/p-5737e7de.entry.js +0 -2
  362. package/dist/bromcom-ui/p-5737e7de.entry.js.map +0 -1
  363. package/dist/bromcom-ui/p-5bee2e76.entry.js +0 -2
  364. package/dist/bromcom-ui/p-63cb0933.entry.js +0 -2
  365. package/dist/bromcom-ui/p-7a1bf6a6.entry.js +0 -2
  366. package/dist/bromcom-ui/p-e08b23ff.entry.js +0 -2
  367. package/dist/bromcom-ui/p-f0ece968.entry.js +0 -2
  368. package/dist/bromcom-ui/styles/theme-variables.ts +0 -369
  369. package/dist/bromcom-ui/styles/themes/index.css +0 -1
  370. package/dist/bromcom-ui/styles/themes/library/default.css +0 -73
  371. package/dist/bromcom-ui/styles/variables/box-shadow.css +0 -15
  372. package/dist/bromcom-ui/styles/variables/colors-dark.css +0 -314
  373. package/dist/bromcom-ui/styles/variables/colors-light.css +0 -325
  374. package/dist/bromcom-ui/styles/variables/font-size-rem.css +0 -33
  375. package/dist/bromcom-ui/styles/variables/font-size.css +0 -33
  376. package/dist/bromcom-ui/styles/variables/index.css +0 -6
  377. package/dist/cjs/validation-messages-c36e5c31.js.map +0 -1
  378. package/dist/collection/styles/theme-variables.ts +0 -369
  379. package/dist/collection/styles/themes/index.css +0 -1
  380. package/dist/collection/styles/themes/library/default.css +0 -73
  381. package/dist/collection/styles/variables/box-shadow.css +0 -15
  382. package/dist/collection/styles/variables/colors-dark.css +0 -314
  383. package/dist/collection/styles/variables/colors-light.css +0 -325
  384. package/dist/collection/styles/variables/font-size-rem.css +0 -33
  385. package/dist/collection/styles/variables/font-size.css +0 -33
  386. package/dist/collection/styles/variables/index.css +0 -6
  387. package/dist/components/p-0063a3d9.js.map +0 -1
  388. package/dist/components/p-13582168.js.map +0 -1
  389. package/dist/components/p-31354aaa.js.map +0 -1
  390. package/dist/components/p-613ee92d.js.map +0 -1
  391. package/dist/esm/index-27cc1bac.js.map +0 -1
  392. package/dist/esm/validation-messages-a29d53be.js.map +0 -1
  393. package/dist/tailwind.config.js +0 -32
  394. /package/dist/bromcom-ui/{p-f9eeafa7.entry.js.map → p-58ee24a8.entry.js.map} +0 -0
  395. /package/dist/bromcom-ui/{p-6abaf96f.entry.js.map → p-d57587e5.entry.js.map} +0 -0
  396. /package/dist/bromcom-ui/{p-4f402148.entry.js.map → p-f2d8aa70.entry.js.map} +0 -0
@@ -0,0 +1,198 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h } from './p-5377117d.js';
2
+ import { c as ce } from './p-5fcf77f9.js';
3
+
4
+ const radioCss = ".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}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.static{position:static}.absolute{position:absolute}.relative{position:relative}.flex{display:flex}.inline-flex{display:inline-flex}.size-2{height:.5rem;width:.5rem}.size-2\\.5{height:.625rem;width:.625rem}.size-3{height:.75rem;width:.75rem}.size-3\\.5{height:.875rem;width:.875rem}.size-4{height:1rem;width:1rem}.size-\\[18px\\]{height:18px;width:18px}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.rounded-full{border-radius:var(--bcm-ui-border-radius-full,9999px)}.bg-\\[--bcm-radio-bg\\]{background-color:var(--bcm-radio-bg)}.bg-\\[--bcm-radio-checked\\]{background-color:var(--bcm-radio-checked)}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-\\[--bcm-radio-text-color\\]{color:var(--bcm-radio-text-color)}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default)}.shadow,.shadow-\\[inset_0_0_0_1px_var\\(--bcm-radio-border\\)\\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[inset_0_0_0_1px_var\\(--bcm-radio-border\\)\\]{--tw-shadow:inset 0 0 0 1px var(--bcm-radio-border);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.shadow-\\[inset_0_0_0_3px_var\\(--bcm-radio-border\\)\\]{--tw-shadow:inset 0 0 0 3px var(--bcm-radio-border);--tw-shadow-colored:inset 0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.focus-visible\\:ring:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.group:hover .group-hover\\:shadow-\\[inset_0_0_0_1px_var\\(--bcm-radio-border-hover\\)\\]{--tw-shadow:inset 0 0 0 1px var(--bcm-radio-border-hover);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}";
5
+ const BcmRadioStyle0 = radioCss;
6
+
7
+ const BcmRadio$1 = /*@__PURE__*/ proxyCustomElement(class BcmRadio extends H {
8
+ constructor() {
9
+ super();
10
+ this.__registerHost();
11
+ this.__attachShadow();
12
+ this.bcmRadioChange = createEvent(this, "bcmRadioChange", 1);
13
+ this.bcmBlur = createEvent(this, "bcmBlur", 1);
14
+ this.bcmFocus = createEvent(this, "bcmFocus", 1);
15
+ /**
16
+ * Whether the radio button is selected.
17
+ * @prop
18
+ * @defaultValue false
19
+ */
20
+ this.checked = false;
21
+ /**
22
+ * Defines the size of the radio button: 'small' | 'medium' | 'large'.
23
+ * @prop
24
+ * @defaultValue 'medium'
25
+ */
26
+ this.size = 'medium';
27
+ /**
28
+ * Whether the radio button is disabled.
29
+ * @prop
30
+ * @defaultValue false
31
+ */
32
+ this.disabled = false;
33
+ /**
34
+ * Whether the radio button is readonly.
35
+ * @prop
36
+ * @defaultValue false
37
+ */
38
+ this.readonly = false;
39
+ /**
40
+ * Position of the label relative to the radio button: 'right' | 'left'.
41
+ * @prop
42
+ * @defaultValue 'right'
43
+ */
44
+ this.labelPosition = 'right';
45
+ /**
46
+ * Whether the radio button is in an error state.
47
+ * @prop
48
+ * @defaultValue false
49
+ */
50
+ this.error = false;
51
+ this.getRadioClass = ce({
52
+ slots: {
53
+ container: 'bcm-ui-element bcm-radio group',
54
+ dot: 'absolute rounded-full transition bg-[--bcm-radio-checked]',
55
+ dotContainer: 'relative rounded-full flex items-center justify-center shadow-[inset_0_0_0_1px_var(--bcm-radio-border)] bg-[--bcm-radio-bg] transition group-hover:shadow-[inset_0_0_0_1px_var(--bcm-radio-border-hover)]',
56
+ labelClass: 'font-medium text-[--bcm-radio-text-color]',
57
+ },
58
+ variants: {
59
+ size: {
60
+ small: {
61
+ container: 'gap-2',
62
+ dotContainer: 'size-3.5',
63
+ dot: 'size-2',
64
+ labelClass: 'text-size-4',
65
+ },
66
+ medium: {
67
+ container: 'gap-2.5',
68
+ dotContainer: 'size-4',
69
+ dot: 'size-2.5',
70
+ labelClass: 'text-size-5',
71
+ },
72
+ large: {
73
+ container: 'gap-3',
74
+ dotContainer: 'size-[18px]',
75
+ dot: 'size-3',
76
+ labelClass: 'text-size-6',
77
+ },
78
+ },
79
+ checked: {
80
+ true: {
81
+ dot: 'opacity-100',
82
+ },
83
+ false: {
84
+ dot: 'opacity-0',
85
+ },
86
+ },
87
+ disabled: {
88
+ true: {
89
+ container: 'cursor-not-allowed',
90
+ },
91
+ false: {
92
+ container: 'cursor-pointer focus-visible:ring',
93
+ },
94
+ },
95
+ readonly: {
96
+ true: {
97
+ container: 'cursor-default pointer-events-none',
98
+ dot: 'opacity-100',
99
+ dotContainer: 'shadow-[inset_0_0_0_3px_var(--bcm-radio-border)]',
100
+ },
101
+ false: '',
102
+ },
103
+ labelPosition: {
104
+ left: {
105
+ container: 'inline-flex flex-row-reverse items-center',
106
+ },
107
+ right: {
108
+ container: 'inline-flex flex-row items-center',
109
+ },
110
+ },
111
+ },
112
+ }, {
113
+ twMerge: false,
114
+ });
115
+ }
116
+ handleClick() {
117
+ if (this.readonly || this.disabled)
118
+ return;
119
+ if (!this.checked) {
120
+ this.checked = true;
121
+ this.bcmRadioChange.emit();
122
+ }
123
+ }
124
+ getRadioStyle() {
125
+ const defaultStyle = {
126
+ '--bcm-radio-bg': 'var(--bcm-ui-color-background-default-default)',
127
+ '--bcm-radio-border': 'var(--bcm-ui-color-border-disabled)',
128
+ '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-primary)',
129
+ '--bcm-radio-checked': 'var(--bcm-ui-color-background-primary-default)',
130
+ '--bcm-radio-text-color': 'var(--bcm-ui-color-text-default)',
131
+ };
132
+ const errorStyle = {
133
+ '--bcm-radio-bg': 'var(--bcm-ui-color-background-palette-red-default)',
134
+ '--bcm-radio-border': 'var(--bcm-ui-color-border-error)',
135
+ '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-error)',
136
+ '--bcm-radio-checked': 'var(--bcm-ui-color-background-error-default)',
137
+ '--bcm-radio-text-color': 'var(--bcm-ui-color-text-default)',
138
+ };
139
+ const disabledStyle = {
140
+ '--bcm-radio-bg': 'var(--bcm-ui-color-background-disabled-default)',
141
+ '--bcm-radio-border': 'var(--bcm-ui-color-border-disabled)',
142
+ '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-disabled)',
143
+ '--bcm-radio-checked': 'var(--bcm-ui-color-background-disabled-default)',
144
+ '--bcm-radio-text-color': 'var(--bcm-ui-color-text-disabled)',
145
+ };
146
+ const readonlyStyle = {
147
+ '--bcm-radio-bg': 'transparent',
148
+ '--bcm-radio-border': 'var(--bcm-ui-color-border-disabled)',
149
+ '--bcm-radio-checked': 'var(--bcm-ui-color-background-default-default)',
150
+ '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-disabled)',
151
+ '--bcm-radio-text-color': 'var(--bcm-ui-color-text-default)',
152
+ };
153
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultStyle), (this.error && errorStyle)), (this.disabled && disabledStyle)), (this.readonly && readonlyStyle));
154
+ }
155
+ render() {
156
+ const { container, dot, dotContainer, labelClass } = this.getRadioClass({
157
+ size: this.size,
158
+ checked: this.checked,
159
+ disabled: this.disabled,
160
+ readonly: this.readonly,
161
+ labelPosition: this.labelPosition,
162
+ });
163
+ return (h("label", { key: '2a95bd2335f3ecc987bcdd378225967837e55df9', class: container(), style: this.getRadioStyle() }, h("input", { key: '782735ff733b1d373803c3a1c6f56c16b745a159', "aria-label": this.label, role: "radio", "aria-checked": this.checked.toString(), type: "radio", name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, checked: this.checked, class: "appearance-none sr-only", onClick: () => this.handleClick(), onFocus: e => this.bcmFocus.emit(e), onBlur: e => this.bcmBlur.emit(e) }), h("div", { key: '638f0fe8ffab984b459c0b5f11f0a929b105de2a', class: dotContainer() }, h("div", { key: '65f618afcd4c1d0101961b6c6642ba146a37d6ef', class: dot() })), h("span", { key: 'a4690721cbe1c99ba47c572a9b354bdebac20a5e', class: labelClass() }, h("slot", { key: '2af90a0ab77da5b63a25fef3edbd0e14fc87516d' }, this.label))));
164
+ }
165
+ get host() { return this; }
166
+ static get style() { return BcmRadioStyle0; }
167
+ }, [1, "bcm-radio", {
168
+ "label": [1],
169
+ "name": [1],
170
+ "value": [1],
171
+ "checked": [516],
172
+ "size": [1],
173
+ "disabled": [4],
174
+ "readonly": [4],
175
+ "labelPosition": [1, "label-position"],
176
+ "error": [4]
177
+ }]);
178
+ function defineCustomElement$1() {
179
+ if (typeof customElements === "undefined") {
180
+ return;
181
+ }
182
+ const components = ["bcm-radio"];
183
+ components.forEach(tagName => { switch (tagName) {
184
+ case "bcm-radio":
185
+ if (!customElements.get(tagName)) {
186
+ customElements.define(tagName, BcmRadio$1);
187
+ }
188
+ break;
189
+ } });
190
+ }
191
+ defineCustomElement$1();
192
+
193
+ const BcmRadio = BcmRadio$1;
194
+ const defineCustomElement = defineCustomElement$1;
195
+
196
+ export { BcmRadio, defineCustomElement };
197
+
198
+ //# sourceMappingURL=bcm-radio.js.map
@@ -0,0 +1 @@
1
+ {"file":"bcm-radio.js","mappings":"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","names":["BcmRadio","tv"],"sources":["src/components/radio/radio.css?tag=bcm-radio&encapsulation=shadow","src/components/radio/radio.component.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","/**\n * @component BcmRadio\n * @description A customizable radio button component for forms, supporting various sizes, states, and label positioning.\n * It can be used to select a single option from a group of choices, with support for error, disabled, and readonly states.\n *\n * @example\n * <bcm-radio label=\"Option 1\" name=\"group1\" value=\"1\" size=\"medium\" label-position=\"right\">\n * Option 1\n * </bcm-radio>\n *\n * @example Radio with error state\n * <bcm-radio label=\"Error Option\" name=\"group1\" value=\"2\" error={true}>\n * Error Option\n * </bcm-radio>\n *\n * @prop {string} label - The text label to display next to the radio button.\n * @prop {string} name - The name attribute for the radio input, used to group radio buttons.\n * @prop {string} value - The value of the radio button, submitted with the form.\n * @prop {boolean} checked - Whether the radio button is selected.\n * @defaultValue false\n * @prop {RadioSize} size - Defines the size of the radio button: 'small' | 'medium' | 'large'.\n * @defaultValue 'medium'\n * @prop {boolean} disabled - Whether the radio button is disabled.\n * @defaultValue false\n * @prop {boolean} readonly - Whether the radio button is readonly.\n * @defaultValue false\n * @prop {LabelPosition} labelPosition - Position of the label relative to the radio button: 'right' | 'left'.\n * @defaultValue 'right'\n * @prop {boolean} error - Whether the radio button is in an error state.\n * @defaultValue false\n *\n * @event {EventEmitter<void>} bcmRadioChange - Emitted when the radio button's checked state changes.\n * @event {EventEmitter<FocusEvent>} bcmFocus - Emitted when the radio button gains focus.\n * @event {EventEmitter<FocusEvent>} bcmBlur - Emitted when the radio button loses focus.\n *\n * @csspart container - The root label element wrapping the radio button and label.\n * @csspart dotContainer - The container for the radio button dot.\n * @csspart dot - The inner dot of the radio button.\n * @csspart label - The label text element.\n */\n\nimport { Component, ComponentInterface, Prop, h, Element, Event, EventEmitter } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n@Component({\n tag: 'bcm-radio',\n styleUrl: 'radio.css',\n shadow: true,\n})\nexport class BcmRadio implements ComponentInterface {\n @Element() host: HTMLBcmRadioElement;\n\n /**\n * The text label to display next to the radio button.\n * @prop\n * @defaultValue undefined\n */\n @Prop()\n label: string;\n\n /**\n * The name attribute for the radio input, used to group radio buttons.\n * @prop\n * @defaultValue undefined\n */\n @Prop()\n name: string;\n\n /**\n * The value of the radio button, submitted with the form.\n * @prop\n * @defaultValue undefined\n */\n @Prop()\n value: string;\n\n /**\n * Whether the radio button is selected.\n * @prop\n * @defaultValue false\n */\n @Prop({ reflect: true })\n checked: boolean = false;\n\n /**\n * Defines the size of the radio button: 'small' | 'medium' | 'large'.\n * @prop\n * @defaultValue 'medium'\n */\n @Prop()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the radio button is disabled.\n * @prop\n * @defaultValue false\n */\n @Prop()\n disabled = false;\n\n /**\n * Whether the radio button is readonly.\n * @prop\n * @defaultValue false\n */\n @Prop()\n readonly = false;\n\n /**\n * Position of the label relative to the radio button: 'right' | 'left'.\n * @prop\n * @defaultValue 'right'\n */\n @Prop()\n labelPosition: 'right' | 'left' = 'right';\n\n /**\n * Whether the radio button is in an error state.\n * @prop\n * @defaultValue false\n */\n @Prop()\n error: boolean = false;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmRadioChange',\n })\n bcmRadioChange: EventEmitter<void>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmBlur: EventEmitter<FocusEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmFocus: EventEmitter<FocusEvent>;\n\n private handleClick(): void {\n if (this.readonly || this.disabled) return;\n if (!this.checked) {\n this.checked = true;\n this.bcmRadioChange.emit();\n }\n }\n\n private getRadioStyle() {\n const defaultStyle = {\n '--bcm-radio-bg': 'var(--bcm-ui-color-background-default-default)',\n '--bcm-radio-border': 'var(--bcm-ui-color-border-disabled)',\n '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-primary)',\n '--bcm-radio-checked': 'var(--bcm-ui-color-background-primary-default)',\n '--bcm-radio-text-color': 'var(--bcm-ui-color-text-default)',\n };\n\n const errorStyle = {\n '--bcm-radio-bg': 'var(--bcm-ui-color-background-palette-red-default)',\n '--bcm-radio-border': 'var(--bcm-ui-color-border-error)',\n '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-error)',\n '--bcm-radio-checked': 'var(--bcm-ui-color-background-error-default)',\n '--bcm-radio-text-color': 'var(--bcm-ui-color-text-default)',\n };\n\n const disabledStyle = {\n '--bcm-radio-bg': 'var(--bcm-ui-color-background-disabled-default)',\n '--bcm-radio-border': 'var(--bcm-ui-color-border-disabled)',\n '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-disabled)',\n '--bcm-radio-checked': 'var(--bcm-ui-color-background-disabled-default)',\n '--bcm-radio-text-color': 'var(--bcm-ui-color-text-disabled)',\n };\n\n const readonlyStyle = {\n '--bcm-radio-bg': 'transparent',\n '--bcm-radio-border': 'var(--bcm-ui-color-border-disabled)',\n '--bcm-radio-checked': 'var(--bcm-ui-color-background-default-default)',\n '--bcm-radio-border-hover': 'var(--bcm-ui-color-border-disabled)',\n '--bcm-radio-text-color': 'var(--bcm-ui-color-text-default)',\n };\n\n return {\n ...defaultStyle,\n ...(this.error && errorStyle),\n ...(this.disabled && disabledStyle),\n ...(this.readonly && readonlyStyle),\n };\n }\n\n private getRadioClass = tv(\n {\n slots: {\n container: 'bcm-ui-element bcm-radio group',\n dot: 'absolute rounded-full transition bg-[--bcm-radio-checked]',\n dotContainer:\n 'relative rounded-full flex items-center justify-center shadow-[inset_0_0_0_1px_var(--bcm-radio-border)] bg-[--bcm-radio-bg] transition group-hover:shadow-[inset_0_0_0_1px_var(--bcm-radio-border-hover)]',\n labelClass: 'font-medium text-[--bcm-radio-text-color]',\n },\n variants: {\n size: {\n small: {\n container: 'gap-2',\n dotContainer: 'size-3.5',\n dot: 'size-2',\n labelClass: 'text-size-4',\n },\n medium: {\n container: 'gap-2.5',\n dotContainer: 'size-4',\n dot: 'size-2.5',\n labelClass: 'text-size-5',\n },\n large: {\n container: 'gap-3',\n dotContainer: 'size-[18px]',\n dot: 'size-3',\n labelClass: 'text-size-6',\n },\n },\n checked: {\n true: {\n dot: 'opacity-100',\n },\n false: {\n dot: 'opacity-0',\n },\n },\n disabled: {\n true: {\n container: 'cursor-not-allowed',\n },\n false: {\n container: 'cursor-pointer focus-visible:ring',\n },\n },\n readonly: {\n true: {\n container: 'cursor-default pointer-events-none',\n dot: 'opacity-100',\n dotContainer: 'shadow-[inset_0_0_0_3px_var(--bcm-radio-border)]',\n },\n false: '',\n },\n labelPosition: {\n left: {\n container: 'inline-flex flex-row-reverse items-center',\n },\n right: {\n container: 'inline-flex flex-row items-center',\n },\n },\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const { container, dot, dotContainer, labelClass } = this.getRadioClass({\n size: this.size,\n checked: this.checked,\n disabled: this.disabled,\n readonly: this.readonly,\n labelPosition: this.labelPosition,\n });\n\n return (\n <label class={container()} style={this.getRadioStyle()}>\n <input\n aria-label={this.label}\n role=\"radio\"\n aria-checked={this.checked.toString()}\n type=\"radio\"\n name={this.name}\n value={this.value}\n disabled={this.disabled}\n readOnly={this.readonly}\n checked={this.checked}\n class=\"appearance-none sr-only\"\n onClick={() => this.handleClick()}\n onFocus={e => this.bcmFocus.emit(e)}\n onBlur={e => this.bcmBlur.emit(e)}\n ></input>\n <div class={dotContainer()}>\n <div class={dot()}></div>\n </div>\n <span class={labelClass()}>\n <slot>{this.label}</slot>\n </span>\n </label>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface BcmSegmentedPickerOption extends Components.BcmSegmentedPickerOption, HTMLElement {}
4
+ export const BcmSegmentedPickerOption: {
5
+ prototype: BcmSegmentedPickerOption;
6
+ new (): BcmSegmentedPickerOption;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,131 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-5377117d.js';
2
+ import { c as ce } from './p-5fcf77f9.js';
3
+
4
+ const segmentedPickerOptionCss = ".relative{position:relative}.flex{display:flex}.outline{outline-style:solid}:host{display:inline-block;flex:1}.segmented-option{background:transparent;height:100%;outline:none;position:relative;width:100%;z-index:1}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.inline-flex{display:inline-flex}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{user-select:none}.items-center{align-items:center}.justify-center{justify-content:center}.border-0{border-width:0}.px-3{padding-left:.75rem;padding-right:.75rem}.py-\\[1px\\]{padding-bottom:1px;padding-top:1px}.py-\\[3px\\]{padding-bottom:3px;padding-top:3px}.py-\\[6px\\]{padding-bottom:6px;padding-top:6px}.text-center{text-align:center}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.text-\\[--bcm-ui-color-text-header\\]{color:var(--bcm-ui-color-text-header)}.text-\\[--bcm-ui-color-text-helper\\]{color:var(--bcm-ui-color-text-helper)}.opacity-50{opacity:.5}.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)}";
5
+ const BcmSegmentedPickerOptionStyle0 = segmentedPickerOptionCss;
6
+
7
+ const BcmSegmentedPickerOption$1 = /*@__PURE__*/ proxyCustomElement(class BcmSegmentedPickerOption extends H {
8
+ constructor() {
9
+ super();
10
+ this.__registerHost();
11
+ this.__attachShadow();
12
+ this.bcmOptionClick = createEvent(this, "bcmOptionClick", 5);
13
+ /** Whether this option is selected */
14
+ this.selected = false;
15
+ /** Whether this option is disabled */
16
+ this.disabled = false;
17
+ this.parentRef = null;
18
+ this.handleClick = () => {
19
+ if (this.isDisabled())
20
+ return;
21
+ this.bcmOptionClick.emit(this.value);
22
+ };
23
+ this.optionClass = ce({
24
+ base: 'segmented-option bcm-ui-element inline-flex items-center justify-center text-center border-0 cursor-pointer select-none',
25
+ variants: {
26
+ size: {
27
+ small: 'py-[1px] px-3 text-size-4',
28
+ medium: 'py-[3px] px-3 text-size-5',
29
+ large: 'py-[6px] px-3 text-size-6',
30
+ },
31
+ selected: {
32
+ true: 'text-[--bcm-ui-color-text-header]',
33
+ false: 'text-[--bcm-ui-color-text-helper]',
34
+ },
35
+ disabled: {
36
+ true: 'cursor-not-allowed opacity-50',
37
+ false: '',
38
+ },
39
+ },
40
+ defaultVariants: {
41
+ size: 'medium',
42
+ selected: false,
43
+ disabled: false,
44
+ },
45
+ }, {
46
+ twMerge: false,
47
+ });
48
+ }
49
+ componentWillLoad() {
50
+ // Parent referansını al
51
+ this.parentRef = this.host.closest('bcm-segmented-picker');
52
+ // İlk yüklemede selected durumu
53
+ if (this.parentRef) {
54
+ this.selected = this.parentRef.getAttribute('value') === this.value;
55
+ }
56
+ }
57
+ componentDidLoad() {
58
+ // DOM yüklendikten sonra sadece parent değer değişikliklerini gözlemeye başla
59
+ // Burada artık prop değişikliği yok
60
+ this.setupValueObserver();
61
+ }
62
+ disconnectedCallback() {
63
+ if (this.parentValueObserver) {
64
+ this.parentValueObserver.disconnect();
65
+ }
66
+ }
67
+ setupValueObserver() {
68
+ if (this.parentRef) {
69
+ this.parentValueObserver = new MutationObserver(() => {
70
+ this.selected = this.isValueSelected();
71
+ });
72
+ this.parentValueObserver.observe(this.parentRef, { attributes: true, attributeFilter: ['value'] });
73
+ }
74
+ }
75
+ isValueSelected() {
76
+ var _a;
77
+ return ((_a = this.parentRef) === null || _a === void 0 ? void 0 : _a.getAttribute('value')) === this.value;
78
+ }
79
+ getSizeFromParent() {
80
+ var _a;
81
+ return ((_a = this.parentRef) === null || _a === void 0 ? void 0 : _a.getAttribute('size')) || 'medium';
82
+ }
83
+ isDisabled() {
84
+ var _a;
85
+ return this.disabled || ((_a = this.parentRef) === null || _a === void 0 ? void 0 : _a.hasAttribute('disabled')) || false;
86
+ }
87
+ async getWidth() {
88
+ var _a;
89
+ const element = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.segmented-option');
90
+ return (element === null || element === void 0 ? void 0 : element.getBoundingClientRect().width) || 0;
91
+ }
92
+ render() {
93
+ const size = this.size || this.getSizeFromParent();
94
+ const disabled = this.isDisabled();
95
+ return (h(Host, { key: '753ba2aeeb51583c312798ef3bc7dfa00203548d' }, h("button", { key: '403c1a1c2fb28894ae9b9c93f2b50b958bfe4657', class: this.optionClass({
96
+ size,
97
+ selected: this.selected,
98
+ disabled,
99
+ }), onClick: this.handleClick, disabled: disabled, type: "button" }, h("slot", { key: 'effebfd8ea1a412483c1f6789eec1d2736dc5e97' }, this.label))));
100
+ }
101
+ get host() { return this; }
102
+ static get style() { return BcmSegmentedPickerOptionStyle0; }
103
+ }, [1, "bcm-segmented-picker-option", {
104
+ "value": [1],
105
+ "label": [1],
106
+ "size": [1],
107
+ "selected": [1028],
108
+ "disabled": [4],
109
+ "getWidth": [64]
110
+ }]);
111
+ function defineCustomElement$1() {
112
+ if (typeof customElements === "undefined") {
113
+ return;
114
+ }
115
+ const components = ["bcm-segmented-picker-option"];
116
+ components.forEach(tagName => { switch (tagName) {
117
+ case "bcm-segmented-picker-option":
118
+ if (!customElements.get(tagName)) {
119
+ customElements.define(tagName, BcmSegmentedPickerOption$1);
120
+ }
121
+ break;
122
+ } });
123
+ }
124
+ defineCustomElement$1();
125
+
126
+ const BcmSegmentedPickerOption = BcmSegmentedPickerOption$1;
127
+ const defineCustomElement = defineCustomElement$1;
128
+
129
+ export { BcmSegmentedPickerOption, defineCustomElement };
130
+
131
+ //# sourceMappingURL=bcm-segmented-picker-option.js.map
@@ -0,0 +1 @@
1
+ {"file":"bcm-segmented-picker-option.js","mappings":"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","names":["BcmSegmentedPickerOption","tv"],"sources":["src/components/segmented-picker/segmented-picker-option.css?tag=bcm-segmented-picker-option&encapsulation=shadow","src/components/segmented-picker/segmented-picker-option.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n flex: 1;\n}\n\n.segmented-option {\n width: 100%;\n height: 100%;\n background: transparent;\n position: relative;\n z-index: 1;\n outline: none;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, Method } from '@stencil/core';\nimport { SegmentedPickerSize } from './types';\nimport { tv } from 'tailwind-variants';\n\n@Component({\n tag: 'bcm-segmented-picker-option',\n styleUrl: 'segmented-picker-option.css',\n shadow: true,\n})\nexport class BcmSegmentedPickerOption {\n @Element() host: HTMLElement;\n\n /** Option value */\n @Prop()\n value!: string;\n\n /** Option display label */\n @Prop()\n label?: string;\n\n /** Controls the option size */\n @Prop()\n size?: SegmentedPickerSize;\n\n /** Whether this option is selected */\n @Prop({ mutable: true })\n selected = false;\n\n /** Whether this option is disabled */\n @Prop()\n disabled = false;\n\n /** Click event */\n @Event({\n composed: false,\n bubbles: true,\n cancelable: true,\n })\n bcmOptionClick: EventEmitter<string>;\n\n private parentValueObserver: MutationObserver;\n private parentRef: HTMLElement | null = null;\n\n componentWillLoad() {\n // Parent referansını al\n this.parentRef = this.host.closest('bcm-segmented-picker');\n\n // İlk yüklemede selected durumu\n if (this.parentRef) {\n this.selected = this.parentRef.getAttribute('value') === this.value;\n }\n }\n\n componentDidLoad() {\n // DOM yüklendikten sonra sadece parent değer değişikliklerini gözlemeye başla\n // Burada artık prop değişikliği yok\n this.setupValueObserver();\n }\n\n disconnectedCallback() {\n if (this.parentValueObserver) {\n this.parentValueObserver.disconnect();\n }\n }\n\n private setupValueObserver() {\n if (this.parentRef) {\n this.parentValueObserver = new MutationObserver(() => {\n this.selected = this.isValueSelected();\n });\n this.parentValueObserver.observe(this.parentRef, { attributes: true, attributeFilter: ['value'] });\n }\n }\n\n private isValueSelected(): boolean {\n return this.parentRef?.getAttribute('value') === this.value;\n }\n\n private getSizeFromParent(): SegmentedPickerSize {\n return (this.parentRef?.getAttribute('size') as SegmentedPickerSize) || 'medium';\n }\n\n private isDisabled(): boolean {\n return this.disabled || this.parentRef?.hasAttribute('disabled') || false;\n }\n\n private handleClick = () => {\n if (this.isDisabled()) return;\n this.bcmOptionClick.emit(this.value);\n };\n\n @Method()\n async getWidth(): Promise<number> {\n const element = this.host.shadowRoot?.querySelector('.segmented-option');\n return element?.getBoundingClientRect().width || 0;\n }\n\n private optionClass = tv(\n {\n base: 'segmented-option bcm-ui-element inline-flex items-center justify-center text-center border-0 cursor-pointer select-none',\n variants: {\n size: {\n small: 'py-[1px] px-3 text-size-4',\n medium: 'py-[3px] px-3 text-size-5',\n large: 'py-[6px] px-3 text-size-6',\n },\n selected: {\n true: 'text-[--bcm-ui-color-text-header]',\n false: 'text-[--bcm-ui-color-text-helper]',\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n selected: false,\n disabled: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const size = this.size || this.getSizeFromParent();\n const disabled = this.isDisabled();\n\n return (\n <Host>\n <button\n class={this.optionClass({\n size,\n selected: this.selected,\n disabled,\n })}\n onClick={this.handleClick}\n disabled={disabled}\n type=\"button\"\n >\n <slot>{this.label}</slot>\n </button>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface BcmSegmentedPicker extends Components.BcmSegmentedPicker, HTMLElement {}
4
+ export const BcmSegmentedPicker: {
5
+ prototype: BcmSegmentedPicker;
6
+ new (): BcmSegmentedPicker;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,170 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-5377117d.js';
2
+ import { c as ce } from './p-5fcf77f9.js';
3
+
4
+ const segmentedPickerCss = ".relative{position:relative}.flex{display:flex}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:host{display:inline-block;position:relative}:host([full-width]){width:100%}.segmented-container{border-radius:var(--bcm-ui-border-radius,4px)}.segmented-indicator{border-radius:var(--bcm-ui-border-radius-md,2px);height:100%;top:0;transition:left .2s ease-in-out,width .2s ease-in-out}.segmented-options{display:flex}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.absolute{position:absolute}.z-0{z-index:0}.z-10{z-index:10}.inline-flex{display:inline-flex}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.overflow-hidden{overflow:hidden}.rounded{border-radius:var(--bcm-ui-border-radius-default,6px)}.border{border-width:1px}.border-solid{border-style:solid}.border-\\[--bcm-ui-color-border-default\\]{border-color:var(--bcm-ui-color-border-default)}.bg-\\[--bcm-ui-color-background-base-default\\]{background-color:var(--bcm-ui-color-background-base-default)}.bg-\\[--bcm-ui-color-background-default-default\\]{background-color:var(--bcm-ui-color-background-default-default)}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.opacity-50{opacity:.5}.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)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}";
5
+ const BcmSegmentedPickerStyle0 = segmentedPickerCss;
6
+
7
+ const BcmSegmentedPicker$1 = /*@__PURE__*/ proxyCustomElement(class BcmSegmentedPicker extends H {
8
+ constructor() {
9
+ super();
10
+ this.__registerHost();
11
+ this.__attachShadow();
12
+ this.bcmChange = createEvent(this, "bcmChange", 1);
13
+ /** Controls the component size */
14
+ this.size = 'medium';
15
+ /** Disabled state */
16
+ this.disabled = false;
17
+ /** Full width component */
18
+ this.fullWidth = false;
19
+ this.options = [];
20
+ this.indicatorStyles = {
21
+ left: '0',
22
+ width: '0',
23
+ transition: 'none',
24
+ };
25
+ this.segmentedClass = ce({
26
+ base: 'segmented-container bcm-ui-element inline-flex relative bg-[--bcm-ui-color-background-default-default] border border-solid border-[--bcm-ui-color-border-default] rounded overflow-hidden',
27
+ variants: {
28
+ size: {
29
+ small: 'text-size-4',
30
+ medium: 'text-size-5',
31
+ large: 'text-size-6',
32
+ },
33
+ fullWidth: {
34
+ true: 'w-full',
35
+ },
36
+ disabled: {
37
+ true: 'opacity-50 cursor-not-allowed',
38
+ false: 'cursor-pointer',
39
+ },
40
+ },
41
+ defaultVariants: {
42
+ size: 'medium',
43
+ fullWidth: false,
44
+ disabled: false,
45
+ },
46
+ }, {
47
+ twMerge: false,
48
+ });
49
+ }
50
+ componentWillLoad() {
51
+ // İlk yüklemede options'ları belirle
52
+ this.parseOptions();
53
+ // Eğer value belirtilmemişse ve options varsa, ilk option'ı seç
54
+ if (!this.value && this.options.length > 0) {
55
+ this.value = this.options[0].value;
56
+ }
57
+ }
58
+ componentDidLoad() {
59
+ // DOM yüklendikten sonra sadece gösterge pozisyonunu güncelle
60
+ this.updateIndicatorPosition(false);
61
+ }
62
+ componentDidUpdate() {
63
+ this.updateIndicatorPosition();
64
+ }
65
+ valueChanged() {
66
+ this.updateIndicatorPosition();
67
+ }
68
+ handleOptionClick(event) {
69
+ if (this.disabled)
70
+ return;
71
+ const value = event.detail;
72
+ if (this.value !== value) {
73
+ this.value = value;
74
+ this.bcmChange.emit({ value });
75
+ }
76
+ }
77
+ parseOptions() {
78
+ const slotNodes = Array.from(this.host.children);
79
+ this.options = slotNodes
80
+ .filter(node => node.nodeName.toLowerCase() === 'bcm-segmented-picker-option')
81
+ .map(option => ({
82
+ value: option.getAttribute('value') || '',
83
+ label: option.getAttribute('label') || option.textContent || '',
84
+ }));
85
+ }
86
+ updateIndicatorPosition(animate = true) {
87
+ // Seçili option elemanını bul
88
+ const selectedOption = this.host.querySelector(`bcm-segmented-picker-option[value="${this.value}"]`);
89
+ if (!selectedOption)
90
+ return;
91
+ // Tüm option'ları seç
92
+ const allOptions = this.host.querySelectorAll('bcm-segmented-picker-option');
93
+ // Seçili option'ın indeksini bul
94
+ let selectedIndex = -1;
95
+ for (let i = 0; i < allOptions.length; i++) {
96
+ if (allOptions[i].getAttribute('value') === this.value) {
97
+ selectedIndex = i;
98
+ break;
99
+ }
100
+ }
101
+ if (selectedIndex === -1)
102
+ return;
103
+ // DOM manipülasyonu asenkron olarak yap
104
+ setTimeout(() => {
105
+ try {
106
+ // Seçili option'a kadar olan genişliği hesapla
107
+ let leftPosition = 0;
108
+ for (let i = 0; i < selectedIndex; i++) {
109
+ const optionElement = allOptions[i];
110
+ if (optionElement) {
111
+ leftPosition += optionElement.offsetWidth;
112
+ }
113
+ }
114
+ // Seçili option'ın genişliği
115
+ const selectedWidth = allOptions[selectedIndex].offsetWidth;
116
+ // İndikatör stillerini güncelle
117
+ this.indicatorStyles = {
118
+ left: `${leftPosition}px`,
119
+ width: `${selectedWidth}px`,
120
+ transition: animate ? 'all 0.2s ease-in-out' : 'none',
121
+ };
122
+ }
123
+ catch (error) {
124
+ console.error('Error updating indicator position:', error);
125
+ }
126
+ }, 10);
127
+ }
128
+ render() {
129
+ return (h(Host, { key: 'c82527ac7d8fb0d1d66005eb82431b0f951cad97' }, h("div", { key: 'c32f4c59d6c843eef0d20a72d21304f3eeaebab6', class: this.segmentedClass({
130
+ size: this.size,
131
+ fullWidth: this.fullWidth,
132
+ disabled: this.disabled,
133
+ }) }, h("div", { key: 'b5c38f756af549436dabaadfb49aac8f30afad41', class: "segmented-indicator absolute bg-[--bcm-ui-color-background-base-default] z-0 rounded", style: this.indicatorStyles }), h("div", { key: '6a0f9c7d6d2dbc6a8b5ea43e19e2c9b902613812', class: "segmented-options flex relative z-10 w-full" }, h("slot", { key: '2ae6718da8ddb236648e120ae769f21eb6434b31' })))));
134
+ }
135
+ get host() { return this; }
136
+ static get watchers() { return {
137
+ "value": ["valueChanged"]
138
+ }; }
139
+ static get style() { return BcmSegmentedPickerStyle0; }
140
+ }, [1, "bcm-segmented-picker", {
141
+ "size": [1],
142
+ "value": [1537],
143
+ "disabled": [4],
144
+ "fullWidth": [516, "full-width"],
145
+ "options": [32],
146
+ "indicatorStyles": [32]
147
+ }, [[0, "bcmOptionClick", "handleOptionClick"]], {
148
+ "value": ["valueChanged"]
149
+ }]);
150
+ function defineCustomElement$1() {
151
+ if (typeof customElements === "undefined") {
152
+ return;
153
+ }
154
+ const components = ["bcm-segmented-picker"];
155
+ components.forEach(tagName => { switch (tagName) {
156
+ case "bcm-segmented-picker":
157
+ if (!customElements.get(tagName)) {
158
+ customElements.define(tagName, BcmSegmentedPicker$1);
159
+ }
160
+ break;
161
+ } });
162
+ }
163
+ defineCustomElement$1();
164
+
165
+ const BcmSegmentedPicker = BcmSegmentedPicker$1;
166
+ const defineCustomElement = defineCustomElement$1;
167
+
168
+ export { BcmSegmentedPicker, defineCustomElement };
169
+
170
+ //# sourceMappingURL=bcm-segmented-picker.js.map
@@ -0,0 +1 @@
1
+ {"file":"bcm-segmented-picker.js","mappings":"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","names":["BcmSegmentedPicker","tv"],"sources":["src/components/segmented-picker/segmented-picker.css?tag=bcm-segmented-picker&encapsulation=shadow","src/components/segmented-picker/segmented-picker.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n:host([full-width]) {\n width: 100%;\n}\n\n.segmented-container {\n border-radius: var(--bcm-ui-border-radius, 4px);\n}\n\n.segmented-indicator {\n height: 100%;\n top: 0;\n border-radius: var(--bcm-ui-border-radius-md, 2px);\n transition: left 0.2s ease-in-out, width 0.2s ease-in-out;\n}\n\n.segmented-options {\n display: flex;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, Watch, State, Listen } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\nimport { SegmentedPickerSize } from './types';\n\n@Component({\n tag: 'bcm-segmented-picker',\n styleUrl: 'segmented-picker.css',\n shadow: true,\n})\nexport class BcmSegmentedPicker {\n @Element() host: HTMLElement;\n\n /** Controls the component size */\n @Prop()\n size: SegmentedPickerSize = 'medium';\n\n /** The selected option value */\n @Prop({ mutable: true, reflect: true })\n value?: string;\n\n /** Disabled state */\n @Prop()\n disabled = false;\n\n /** Full width component */\n @Prop({ attribute: 'full-width', reflect: true })\n fullWidth = false;\n\n /** Change event */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmChange: EventEmitter<{ value: string }>;\n\n @State() options: Array<{ value: string; label: string }> = [];\n @State() indicatorStyles: { left: string; width: string; transition: string } = {\n left: '0',\n width: '0',\n transition: 'none',\n };\n\n componentWillLoad() {\n // İlk yüklemede options'ları belirle\n this.parseOptions();\n\n // Eğer value belirtilmemişse ve options varsa, ilk option'ı seç\n if (!this.value && this.options.length > 0) {\n this.value = this.options[0].value;\n }\n }\n\n componentDidLoad() {\n // DOM yüklendikten sonra sadece gösterge pozisyonunu güncelle\n this.updateIndicatorPosition(false);\n }\n\n componentDidUpdate() {\n this.updateIndicatorPosition();\n }\n\n @Watch('value')\n valueChanged() {\n this.updateIndicatorPosition();\n }\n\n @Listen('bcmOptionClick')\n handleOptionClick(event: CustomEvent<string>) {\n if (this.disabled) return;\n\n const value = event.detail;\n if (this.value !== value) {\n this.value = value;\n this.bcmChange.emit({ value });\n }\n }\n\n private parseOptions() {\n const slotNodes = Array.from(this.host.children);\n this.options = slotNodes\n .filter(node => node.nodeName.toLowerCase() === 'bcm-segmented-picker-option')\n .map(option => ({\n value: option.getAttribute('value') || '',\n label: option.getAttribute('label') || option.textContent || '',\n }));\n }\n\n private updateIndicatorPosition(animate = true) {\n // Seçili option elemanını bul\n const selectedOption = this.host.querySelector(`bcm-segmented-picker-option[value=\"${this.value}\"]`) as HTMLElement;\n if (!selectedOption) return;\n\n // Tüm option'ları seç\n const allOptions = this.host.querySelectorAll('bcm-segmented-picker-option');\n\n // Seçili option'ın indeksini bul\n let selectedIndex = -1;\n for (let i = 0; i < allOptions.length; i++) {\n if (allOptions[i].getAttribute('value') === this.value) {\n selectedIndex = i;\n break;\n }\n }\n\n if (selectedIndex === -1) return;\n\n // DOM manipülasyonu asenkron olarak yap\n setTimeout(() => {\n try {\n // Seçili option'a kadar olan genişliği hesapla\n let leftPosition = 0;\n\n for (let i = 0; i < selectedIndex; i++) {\n const optionElement = allOptions[i] as HTMLElement;\n if (optionElement) {\n leftPosition += optionElement.offsetWidth;\n }\n }\n\n // Seçili option'ın genişliği\n const selectedWidth = (allOptions[selectedIndex] as HTMLElement).offsetWidth;\n\n // İndikatör stillerini güncelle\n this.indicatorStyles = {\n left: `${leftPosition}px`,\n width: `${selectedWidth}px`,\n transition: animate ? 'all 0.2s ease-in-out' : 'none',\n };\n } catch (error) {\n console.error('Error updating indicator position:', error);\n }\n }, 10);\n }\n\n private segmentedClass = tv(\n {\n base: 'segmented-container bcm-ui-element inline-flex relative bg-[--bcm-ui-color-background-default-default] border border-solid border-[--bcm-ui-color-border-default] rounded overflow-hidden',\n variants: {\n size: {\n small: 'text-size-4',\n medium: 'text-size-5',\n large: 'text-size-6',\n },\n fullWidth: {\n true: 'w-full',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: 'cursor-pointer',\n },\n },\n defaultVariants: {\n size: 'medium',\n fullWidth: false,\n disabled: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n return (\n <Host>\n <div\n class={this.segmentedClass({\n size: this.size,\n fullWidth: this.fullWidth,\n disabled: this.disabled,\n })}\n >\n <div class=\"segmented-indicator absolute bg-[--bcm-ui-color-background-base-default] z-0 rounded\" style={this.indicatorStyles}></div>\n <div class=\"segmented-options flex relative z-10 w-full\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface BcmSwitch extends Components.BcmSwitch, HTMLElement {}
4
+ export const BcmSwitch: {
5
+ prototype: BcmSwitch;
6
+ new (): BcmSwitch;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;