@actabldesign/bellhop-core 0.0.8 → 0.0.12

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 (466) hide show
  1. package/README.md +132 -33
  2. package/components/bh-accordion-item.js +1 -1
  3. package/components/bh-avatar-add.js +1 -1
  4. package/components/bh-avatar-stacked.js +3 -3
  5. package/components/bh-avatar.js +1 -1
  6. package/components/bh-button.js +1 -1
  7. package/components/bh-card-header.js +1 -1
  8. package/components/bh-card.js +1 -1
  9. package/components/bh-checkbox-group-item.js +5 -5
  10. package/components/bh-checkbox.js +1 -1
  11. package/components/bh-data-grid.js +140 -67
  12. package/components/bh-data-grid.js.map +1 -1
  13. package/components/bh-date-picker-content.js +1 -1
  14. package/components/bh-date-picker.js +24 -19
  15. package/components/bh-date-picker.js.map +1 -1
  16. package/components/bh-date-range-picker-content.js +1 -1
  17. package/components/bh-date-range-picker.js +9 -9
  18. package/components/bh-dropdown-menu.js +1 -1
  19. package/components/bh-dropdown.js +1 -1
  20. package/components/bh-empty-state.js +1 -1
  21. package/components/bh-featured-icon.js +1 -1
  22. package/components/bh-illustrations.js +3 -3
  23. package/components/bh-input-autocomplete.js +7 -7
  24. package/components/bh-input-number.js +3 -3
  25. package/components/bh-input-password.js +3 -3
  26. package/components/bh-input-text.js +1 -1
  27. package/components/bh-input-verification.js +3 -3
  28. package/components/bh-label.js +1 -1
  29. package/components/bh-logo-box.js +1 -1
  30. package/components/bh-modal-actions.js +2 -2
  31. package/components/bh-modal-header.js +5 -5
  32. package/components/bh-month-picker-content.js +1 -1
  33. package/components/bh-month-picker.js +8 -8
  34. package/components/bh-month-picker.js.map +1 -1
  35. package/components/bh-nav-item.js +1 -1
  36. package/components/bh-notification.js +3 -3
  37. package/components/bh-page-navigation-child.js +1 -1
  38. package/components/bh-page-navigation-multi-level.js +1 -1
  39. package/components/bh-page-navigation-single-level.js +1 -1
  40. package/components/bh-page-navigation.js +5 -5
  41. package/components/bh-pagination.js +1 -1
  42. package/components/bh-picker-menu.js +1 -1
  43. package/components/bh-pie-chart.js +1 -1
  44. package/components/bh-popover.js +18 -85
  45. package/components/bh-popover.js.map +1 -1
  46. package/components/bh-property-switcher.js +1 -1
  47. package/components/bh-radio-button.js +1 -1
  48. package/components/bh-sidebar.js +7 -7
  49. package/components/bh-skeleton-loader.js +1 -1
  50. package/components/bh-tab-item.js +2 -2
  51. package/components/bh-tabs.js +1 -1
  52. package/components/bh-tag.js +1 -1
  53. package/components/bh-textarea.js +3 -3
  54. package/components/bh-toggle.js +1 -1
  55. package/components/bh-tooltip.js +1 -1
  56. package/components/bh-trend-chart.js +2 -2
  57. package/components/index.d.ts +0 -4
  58. package/components/index.js +0 -2
  59. package/components/index.js.map +1 -1
  60. package/components/{p-8bOZFmdg.js → p--S10V0sf.js} +5 -5
  61. package/components/p--S10V0sf.js.map +1 -0
  62. package/components/{p-BLCjD0ux.js → p-7nrZFsG8.js} +3 -3
  63. package/components/{p-BLCjD0ux.js.map → p-7nrZFsG8.js.map} +1 -1
  64. package/components/{p-C_wf2KGn.js → p-B0ADeWoj.js} +3 -3
  65. package/components/{p-C_wf2KGn.js.map → p-B0ADeWoj.js.map} +1 -1
  66. package/components/{p-D9aamyuM.js → p-BEm39SYP.js} +4 -4
  67. package/components/{p-D9aamyuM.js.map → p-BEm39SYP.js.map} +1 -1
  68. package/components/{p-BkK6rWZn.js → p-BYRvQ4u7.js} +4 -4
  69. package/components/{p-BkK6rWZn.js.map → p-BYRvQ4u7.js.map} +1 -1
  70. package/components/{p-D0Ba0gOA.js → p-BqYBdZ7I.js} +4 -4
  71. package/components/{p-D0Ba0gOA.js.map → p-BqYBdZ7I.js.map} +1 -1
  72. package/components/{p-Df8KgHhe.js → p-BrIid8rr.js} +3 -3
  73. package/components/{p-Df8KgHhe.js.map → p-BrIid8rr.js.map} +1 -1
  74. package/components/p-BsHlTsAN.js.map +1 -1
  75. package/components/{p-Npcwl1Z8.js → p-CDmCw7LX.js} +4 -4
  76. package/components/p-CDmCw7LX.js.map +1 -0
  77. package/components/{p-BQKx1tGq.js → p-CHYn9whC.js} +6 -6
  78. package/components/p-CHYn9whC.js.map +1 -0
  79. package/components/{p-CdwyUif-.js → p-CNwZh1xz.js} +5 -5
  80. package/components/p-CNwZh1xz.js.map +1 -0
  81. package/components/{p-B02xFf1P.js → p-CiEBtN9j.js} +3 -3
  82. package/components/{p-B02xFf1P.js.map → p-CiEBtN9j.js.map} +1 -1
  83. package/components/{p-Cmo_S3fO.js → p-CiZSLZTA.js} +4 -4
  84. package/components/{p-Cmo_S3fO.js.map → p-CiZSLZTA.js.map} +1 -1
  85. package/components/{p-DYC2IZEs.js → p-CmEb-mj5.js} +6 -6
  86. package/components/{p-DYC2IZEs.js.map → p-CmEb-mj5.js.map} +1 -1
  87. package/components/{p-Do29ZTL9.js → p-CppjlSaO.js} +3 -3
  88. package/components/{p-Do29ZTL9.js.map → p-CppjlSaO.js.map} +1 -1
  89. package/components/{p-D3FuyNC4.js → p-CyFUHAY1.js} +7 -7
  90. package/components/{p-D3FuyNC4.js.map → p-CyFUHAY1.js.map} +1 -1
  91. package/components/{p-B0vRPcr5.js → p-D8L5XpBP.js} +3 -3
  92. package/components/{p-B0vRPcr5.js.map → p-D8L5XpBP.js.map} +1 -1
  93. package/components/p-DH86TJ99.js +232 -0
  94. package/components/p-DH86TJ99.js.map +1 -0
  95. package/components/{p-BJLHKnwL.js → p-DVBd-54W.js} +5 -5
  96. package/components/{p-BJLHKnwL.js.map → p-DVBd-54W.js.map} +1 -1
  97. package/components/{p-CMoGgYqw.js → p-DmELCHDa.js} +3 -3
  98. package/components/p-DmELCHDa.js.map +1 -0
  99. package/components/{p-Bu0BcHwL.js → p-Du_cCBR7.js} +6 -6
  100. package/components/{p-Bu0BcHwL.js.map → p-Du_cCBR7.js.map} +1 -1
  101. package/components/{p-h6juyPoa.js → p-JJSN-gZI.js} +3 -3
  102. package/components/{p-h6juyPoa.js.map → p-JJSN-gZI.js.map} +1 -1
  103. package/components/{p-wPu4WTba.js → p-dsE158cF.js} +3 -3
  104. package/components/{p-wPu4WTba.js.map → p-dsE158cF.js.map} +1 -1
  105. package/components/{p-C0fcjlnS.js → p-eYcfeTFU.js} +3 -3
  106. package/components/{p-C0fcjlnS.js.map → p-eYcfeTFU.js.map} +1 -1
  107. package/components/{p-BSok41i-.js → p-oyeucMe6.js} +3 -3
  108. package/components/{p-BSok41i-.js.map → p-oyeucMe6.js.map} +1 -1
  109. package/dist/bellhop-core/bellhop-core.esm.js +1 -1
  110. package/dist/bellhop-core/bellhop-core.esm.js.map +1 -1
  111. package/dist/bellhop-core/bh-avatar.entry.esm.js.map +1 -1
  112. package/dist/bellhop-core/bh-button.bh-loader-spinner.entry.esm.js.map +1 -1
  113. package/dist/bellhop-core/bh-data-grid.entry.esm.js.map +1 -1
  114. package/dist/bellhop-core/bh-date-picker-content.entry.esm.js.map +1 -1
  115. package/dist/bellhop-core/bh-date-picker.entry.esm.js.map +1 -1
  116. package/dist/bellhop-core/bh-empty-state.bh-pagination.bh-skeleton-loader.entry.esm.js.map +1 -1
  117. package/dist/bellhop-core/bh-input-text.bh-picker-menu.entry.esm.js.map +1 -1
  118. package/dist/bellhop-core/bh-label.bh-tooltip.entry.esm.js.map +1 -1
  119. package/dist/bellhop-core/bh-month-picker-content.entry.esm.js.map +1 -1
  120. package/dist/bellhop-core/bh-month-picker.entry.esm.js.map +1 -1
  121. package/dist/bellhop-core/bh-popover.entry.esm.js.map +1 -1
  122. package/dist/bellhop-core/index.esm.js +1 -1
  123. package/dist/bellhop-core/index.esm.js.map +1 -1
  124. package/dist/bellhop-core/{p-Ck1gRAmI.js → p-04a00da6.entry.js} +2 -2
  125. package/dist/bellhop-core/p-04a00da6.entry.js.map +1 -0
  126. package/dist/bellhop-core/{p-bd00d5ad.entry.js → p-06b0ba5f.entry.js} +2 -2
  127. package/dist/bellhop-core/{p-4a8844ff.entry.js → p-0a232a85.entry.js} +2 -2
  128. package/dist/bellhop-core/p-0d5ce369.entry.js +13 -0
  129. package/dist/bellhop-core/p-0d5ce369.entry.js.map +1 -0
  130. package/dist/bellhop-core/{p-67956598.entry.js → p-0e773f4b.entry.js} +2 -2
  131. package/dist/bellhop-core/{p-df4498cd.entry.js → p-11e84742.entry.js} +2 -2
  132. package/dist/bellhop-core/{p-a41b3673.entry.js → p-20e65b2b.entry.js} +2 -2
  133. package/dist/bellhop-core/{p-a30e22f7.entry.js → p-2349cd39.entry.js} +2 -2
  134. package/dist/bellhop-core/{p-3a1c52a9.entry.js → p-2cc352e8.entry.js} +2 -2
  135. package/dist/bellhop-core/{p-defe9916.entry.js → p-31f60dac.entry.js} +2 -2
  136. package/dist/bellhop-core/{p-defe9916.entry.js.map → p-31f60dac.entry.js.map} +1 -1
  137. package/dist/bellhop-core/{p-f85a9eaa.entry.js → p-439f8477.entry.js} +2 -2
  138. package/dist/bellhop-core/{p-a42e8ddb.entry.js → p-4bc0e720.entry.js} +2 -2
  139. package/dist/bellhop-core/{p-a42e8ddb.entry.js.map → p-4bc0e720.entry.js.map} +1 -1
  140. package/dist/bellhop-core/{p-21bc4f77.entry.js → p-4cf74f24.entry.js} +2 -2
  141. package/dist/bellhop-core/p-53dbd8bd.entry.js +2 -0
  142. package/dist/bellhop-core/p-53dbd8bd.entry.js.map +1 -0
  143. package/dist/bellhop-core/p-59e4c008.entry.js +2 -0
  144. package/dist/bellhop-core/p-59e4c008.entry.js.map +1 -0
  145. package/dist/bellhop-core/{p-62235d6e.entry.js → p-5a0b2d81.entry.js} +2 -2
  146. package/dist/bellhop-core/{p-07c9b7fa.entry.js → p-6626f089.entry.js} +2 -2
  147. package/dist/bellhop-core/{p-36166900.entry.js → p-6b428841.entry.js} +2 -2
  148. package/dist/bellhop-core/{p-6bc81ebb.entry.js → p-6d4c6b6f.entry.js} +2 -2
  149. package/dist/bellhop-core/{p-c0e36166.entry.js → p-6dad737e.entry.js} +2 -2
  150. package/dist/bellhop-core/{p-5c4f74b8.entry.js → p-738f24c8.entry.js} +2 -2
  151. package/dist/bellhop-core/{p-49edd1bb.entry.js → p-7534a8d4.entry.js} +2 -2
  152. package/dist/bellhop-core/p-7b0a4c99.entry.js +2 -0
  153. package/dist/bellhop-core/{p-7a85db89.entry.js.map → p-7b0a4c99.entry.js.map} +1 -1
  154. package/dist/bellhop-core/{p-7b0cba50.entry.js → p-84ecaf3b.entry.js} +2 -2
  155. package/dist/bellhop-core/{p-DY76Ee-p.js → p-940af1e0.entry.js} +2 -2
  156. package/dist/bellhop-core/p-940af1e0.entry.js.map +1 -0
  157. package/dist/bellhop-core/p-c0dfca99.entry.js +2 -0
  158. package/dist/bellhop-core/{p-4e483d25.entry.js.map → p-c0dfca99.entry.js.map} +1 -1
  159. package/dist/bellhop-core/{p-d5bf49ab.entry.js → p-cad28e7e.entry.js} +2 -2
  160. package/dist/bellhop-core/{p-1540001e.entry.js → p-cb0e4e35.entry.js} +2 -2
  161. package/dist/bellhop-core/{p-091171da.entry.js → p-ce2aaf37.entry.js} +2 -2
  162. package/dist/bellhop-core/p-d64525f4.entry.js +2 -0
  163. package/dist/bellhop-core/p-d64525f4.entry.js.map +1 -0
  164. package/dist/bellhop-core/{p-a9c914ee.entry.js → p-e0f7b6d1.entry.js} +2 -2
  165. package/dist/bellhop-core/{p-b0dda4df.entry.js → p-e83a86d6.entry.js} +2 -2
  166. package/dist/bellhop-core/{p-2db7990e.entry.js → p-e96e5aa3.entry.js} +2 -2
  167. package/dist/bellhop-core/{p-c70d11a2.entry.js → p-ed780663.entry.js} +2 -2
  168. package/dist/bellhop-core/p-f30af956.entry.js +2 -0
  169. package/dist/bellhop-core/{p-ffb29d95.entry.js.map → p-f30af956.entry.js.map} +1 -1
  170. package/dist/bellhop-core/{p-0e34250c.entry.js → p-f4dd33af.entry.js} +2 -2
  171. package/dist/bellhop-core/{p-1be3e908.entry.js → p-fe7d5dcb.entry.js} +2 -2
  172. package/dist/bellhop-core/p-nAAobRRQ.js.map +1 -1
  173. package/dist/cjs/bellhop-core.cjs.js +1 -1
  174. package/dist/cjs/bellhop-core.cjs.js.map +1 -1
  175. package/dist/cjs/bh-accordion-item.cjs.entry.js +1 -1
  176. package/dist/cjs/bh-autocomplete-menu_2.cjs.entry.js +1 -1
  177. package/dist/cjs/bh-avatar.cjs.entry.js +1 -1
  178. package/dist/cjs/bh-avatar.entry.cjs.js.map +1 -1
  179. package/dist/cjs/bh-button.bh-loader-spinner.entry.cjs.js.map +1 -1
  180. package/dist/cjs/bh-button_2.cjs.entry.js +110 -2
  181. package/dist/cjs/bh-card.cjs.entry.js +1 -1
  182. package/dist/cjs/bh-data-grid.cjs.entry.js +132 -59
  183. package/dist/cjs/bh-data-grid.entry.cjs.js.map +1 -1
  184. package/dist/cjs/bh-date-picker-content.cjs.entry.js +2 -2
  185. package/dist/cjs/bh-date-picker-content.entry.cjs.js.map +1 -1
  186. package/dist/cjs/bh-date-picker.cjs.entry.js +15 -12
  187. package/dist/cjs/bh-date-picker.entry.cjs.js.map +1 -1
  188. package/dist/cjs/bh-date-range-picker-content.cjs.entry.js +1 -1
  189. package/dist/cjs/bh-date-range-picker.cjs.entry.js +1 -1
  190. package/dist/cjs/bh-dropdown_3.cjs.entry.js +4 -4
  191. package/dist/cjs/bh-empty-state.bh-pagination.bh-skeleton-loader.entry.cjs.js.map +1 -1
  192. package/dist/cjs/bh-empty-state_3.cjs.entry.js +199 -6
  193. package/dist/cjs/bh-featured-icon.cjs.entry.js +1 -1
  194. package/dist/cjs/bh-illustrations.cjs.entry.js +3 -3
  195. package/dist/cjs/bh-input-autocomplete.cjs.entry.js +2 -2
  196. package/dist/cjs/bh-input-number.cjs.entry.js +1 -1
  197. package/dist/cjs/bh-input-password.cjs.entry.js +1 -1
  198. package/dist/cjs/bh-input-text.bh-picker-menu.entry.cjs.js.map +1 -1
  199. package/dist/cjs/bh-input-text_2.cjs.entry.js +2 -2
  200. package/dist/cjs/bh-input-verification.cjs.entry.js +1 -1
  201. package/dist/cjs/bh-label.bh-tooltip.entry.cjs.js.map +1 -1
  202. package/dist/cjs/bh-label_2.cjs.entry.js +104 -3
  203. package/dist/cjs/bh-modal-actions.cjs.entry.js +1 -1
  204. package/dist/cjs/bh-modal-header.cjs.entry.js +4 -4
  205. package/dist/cjs/bh-month-picker-content.cjs.entry.js +2 -2
  206. package/dist/cjs/bh-month-picker-content.entry.cjs.js.map +1 -1
  207. package/dist/cjs/bh-month-picker.cjs.entry.js +2 -2
  208. package/dist/cjs/bh-month-picker.entry.cjs.js.map +1 -1
  209. package/dist/cjs/bh-notification.cjs.entry.js +1 -1
  210. package/dist/cjs/bh-page-navigation-child.cjs.entry.js +1 -1
  211. package/dist/cjs/bh-page-navigation-multi-level_2.cjs.entry.js +3 -3
  212. package/dist/cjs/bh-page-navigation.cjs.entry.js +1 -1
  213. package/dist/cjs/bh-pie-chart.cjs.entry.js +1 -1
  214. package/dist/cjs/bh-popover.cjs.entry.js +14 -76
  215. package/dist/cjs/bh-popover.entry.cjs.js.map +1 -1
  216. package/dist/cjs/bh-property-switcher.cjs.entry.js +1 -1
  217. package/dist/cjs/bh-sidebar.cjs.entry.js +1 -1
  218. package/dist/cjs/bh-tab-item.cjs.entry.js +2 -2
  219. package/dist/cjs/bh-tabs.cjs.entry.js +1 -1
  220. package/dist/cjs/bh-textarea.cjs.entry.js +1 -1
  221. package/dist/cjs/bh-toggle.cjs.entry.js +1 -1
  222. package/dist/cjs/bh-trend-chart.cjs.entry.js +2 -2
  223. package/dist/cjs/index-DQwSUT6k.js +42 -50
  224. package/dist/cjs/index-DQwSUT6k.js.map +1 -1
  225. package/dist/cjs/index.cjs.js +0 -31
  226. package/dist/cjs/index.cjs.js.map +1 -1
  227. package/dist/cjs/loader.cjs.js +1 -1
  228. package/dist/collection/collection-manifest.json +1 -3
  229. package/dist/collection/components/bh-accordion/bh-accordion.js +1 -1
  230. package/dist/collection/components/bh-accordion-item/bh-accordion-item.js +1 -1
  231. package/dist/collection/components/bh-appbar/bh-appbar.js +2 -2
  232. package/dist/collection/components/bh-autocomplete-menu/bh-autocomplete-menu.js +2 -2
  233. package/dist/collection/components/bh-avatar/bh-avatar.css +0 -1
  234. package/dist/collection/components/bh-avatar/bh-avatar.js +3 -3
  235. package/dist/collection/components/bh-avatar-add/bh-avatar-add.js +1 -1
  236. package/dist/collection/components/bh-avatar-stacked/bh-avatar-stacked.js +1 -1
  237. package/dist/collection/components/bh-badge/bh-badge.js +3 -3
  238. package/dist/collection/components/bh-badge-dot/bh-badge-dot.js +2 -2
  239. package/dist/collection/components/bh-bar-chart/bh-bar-chart.js +3 -3
  240. package/dist/collection/components/bh-breadcrumbs/bh-breadcrumbs.js +2 -2
  241. package/dist/collection/components/bh-button/bh-button.js +7 -7
  242. package/dist/collection/components/bh-button/bh-button.js.map +1 -1
  243. package/dist/collection/components/bh-button-icon/bh-button-icon.js +3 -3
  244. package/dist/collection/components/bh-card/bh-card.js +1 -1
  245. package/dist/collection/components/bh-card-footer/bh-card-footer.js +1 -1
  246. package/dist/collection/components/bh-card-header/bh-card-header.js +2 -2
  247. package/dist/collection/components/bh-chart-tooltip/bh-chart-tooltip.js +1 -1
  248. package/dist/collection/components/bh-checkbox/bh-checkbox.js +1 -1
  249. package/dist/collection/components/bh-checkbox-group/bh-checkbox-group.js +1 -1
  250. package/dist/collection/components/bh-checkbox-group-item/bh-checkbox-group-item.js +2 -2
  251. package/dist/collection/components/bh-data-grid/bh-data-grid.css +86 -68
  252. package/dist/collection/components/bh-data-grid/bh-data-grid.js +132 -59
  253. package/dist/collection/components/bh-data-grid/bh-data-grid.js.map +1 -1
  254. package/dist/collection/components/bh-date-picker/bh-date-picker.css +24 -214
  255. package/dist/collection/components/bh-date-picker/bh-date-picker.js +22 -12
  256. package/dist/collection/components/bh-date-picker/bh-date-picker.js.map +1 -1
  257. package/dist/collection/components/bh-date-picker-content/bh-date-picker-content.css +0 -206
  258. package/dist/collection/components/bh-date-picker-content/bh-date-picker-content.js +7 -7
  259. package/dist/collection/components/bh-date-range-picker/bh-date-range-picker.js +2 -2
  260. package/dist/collection/components/bh-date-range-picker-content/bh-date-range-picker-content.js +4 -4
  261. package/dist/collection/components/bh-dropdown/bh-dropdown.js +5 -5
  262. package/dist/collection/components/bh-dropdown-menu/bh-dropdown-menu.js +3 -3
  263. package/dist/collection/components/bh-empty-state/bh-empty-state.js +2 -2
  264. package/dist/collection/components/bh-featured-icon/bh-featured-icon.js +4 -4
  265. package/dist/collection/components/bh-illustrations/bh-illustrations.js +4 -4
  266. package/dist/collection/components/bh-input-autocomplete/bh-input-autocomplete.js +3 -3
  267. package/dist/collection/components/bh-input-number/bh-input-number.js +1 -1
  268. package/dist/collection/components/bh-input-password/bh-input-password.js +1 -1
  269. package/dist/collection/components/bh-input-text/bh-input-text.js +1 -1
  270. package/dist/collection/components/bh-input-verification/bh-input-verification.js +3 -3
  271. package/dist/collection/components/bh-label/bh-label.js +1 -1
  272. package/dist/collection/components/bh-loader-spinner/bh-loader-spinner.js +2 -2
  273. package/dist/collection/components/bh-logo-box/bh-logo-box.js +2 -2
  274. package/dist/collection/components/bh-modal/bh-modal.js +1 -1
  275. package/dist/collection/components/bh-modal-actions/bh-modal-actions.js +2 -2
  276. package/dist/collection/components/bh-modal-header/bh-modal-header.js +4 -4
  277. package/dist/collection/components/bh-month-picker/bh-month-picker.css +0 -206
  278. package/dist/collection/components/bh-month-picker/bh-month-picker.js +2 -2
  279. package/dist/collection/components/bh-month-picker-content/bh-month-picker-content.css +0 -206
  280. package/dist/collection/components/bh-month-picker-content/bh-month-picker-content.js +5 -5
  281. package/dist/collection/components/bh-notification/bh-notification.js +2 -2
  282. package/dist/collection/components/bh-page-navigation/bh-page-navigation.js +2 -2
  283. package/dist/collection/components/bh-page-navigation-child/bh-page-navigation-child.js +1 -1
  284. package/dist/collection/components/bh-page-navigation-multi-level/bh-page-navigation-multi-level.js +3 -3
  285. package/dist/collection/components/bh-page-navigation-single-level/bh-page-navigation-single-level.js +1 -1
  286. package/dist/collection/components/bh-pagination/bh-pagination.css +122 -58
  287. package/dist/collection/components/bh-pagination/bh-pagination.js +74 -30
  288. package/dist/collection/components/bh-pagination/bh-pagination.js.map +1 -1
  289. package/dist/collection/components/bh-picker-menu/bh-picker-menu.css +1 -3
  290. package/dist/collection/components/bh-pie-chart/bh-pie-chart.js +3 -3
  291. package/dist/collection/components/bh-popover/bh-popover.css +77 -260
  292. package/dist/collection/components/bh-popover/bh-popover.js +33 -238
  293. package/dist/collection/components/bh-popover/bh-popover.js.map +1 -1
  294. package/dist/collection/components/bh-product-switcher/bh-product-switcher.js +3 -3
  295. package/dist/collection/components/bh-property-switcher/bh-property-switcher.js +3 -3
  296. package/dist/collection/components/bh-radio-button/bh-radio-button.js +1 -1
  297. package/dist/collection/components/bh-sidebar/bh-nav-item.js +1 -1
  298. package/dist/collection/components/bh-sidebar/bh-sidebar.js +4 -4
  299. package/dist/collection/components/bh-skeleton-loader/bh-skeleton-loader.css +9 -22
  300. package/dist/collection/components/bh-skeleton-loader/bh-skeleton-loader.js +2 -2
  301. package/dist/collection/components/bh-skeleton-loader/bh-skeleton-loader.js.map +1 -1
  302. package/dist/collection/components/bh-tab-item/bh-tab-item.js +2 -2
  303. package/dist/collection/components/bh-tabs/bh-tabs.js +3 -3
  304. package/dist/collection/components/bh-tag/bh-tag.js +3 -3
  305. package/dist/collection/components/bh-textarea/bh-textarea.js +2 -2
  306. package/dist/collection/components/bh-toggle/bh-toggle.js +2 -2
  307. package/dist/collection/components/bh-tooltip/bh-tooltip.js +3 -3
  308. package/dist/collection/components/bh-trend-chart/bh-trend-chart.js +4 -4
  309. package/dist/collection/index.js +1 -23
  310. package/dist/collection/index.js.map +1 -1
  311. package/dist/esm/bellhop-core.js +1 -1
  312. package/dist/esm/bellhop-core.js.map +1 -1
  313. package/dist/esm/bh-accordion-item.entry.js +1 -1
  314. package/dist/esm/bh-autocomplete-menu_2.entry.js +1 -1
  315. package/dist/esm/bh-avatar.entry.js +1 -1
  316. package/dist/esm/bh-avatar.entry.js.map +1 -1
  317. package/dist/esm/bh-button.bh-loader-spinner.entry.js.map +1 -1
  318. package/dist/esm/bh-button_2.entry.js +111 -3
  319. package/dist/esm/bh-card.entry.js +1 -1
  320. package/dist/esm/bh-data-grid.entry.js +132 -59
  321. package/dist/esm/bh-data-grid.entry.js.map +1 -1
  322. package/dist/esm/bh-date-picker-content.entry.js +2 -2
  323. package/dist/esm/bh-date-picker-content.entry.js.map +1 -1
  324. package/dist/esm/bh-date-picker.entry.js +16 -13
  325. package/dist/esm/bh-date-picker.entry.js.map +1 -1
  326. package/dist/esm/bh-date-range-picker-content.entry.js +1 -1
  327. package/dist/esm/bh-date-range-picker.entry.js +1 -1
  328. package/dist/esm/bh-dropdown_3.entry.js +4 -4
  329. package/dist/esm/bh-empty-state.bh-pagination.bh-skeleton-loader.entry.js.map +1 -1
  330. package/dist/esm/bh-empty-state_3.entry.js +199 -6
  331. package/dist/esm/bh-featured-icon.entry.js +1 -1
  332. package/dist/esm/bh-illustrations.entry.js +3 -3
  333. package/dist/esm/bh-input-autocomplete.entry.js +2 -2
  334. package/dist/esm/bh-input-number.entry.js +1 -1
  335. package/dist/esm/bh-input-password.entry.js +1 -1
  336. package/dist/esm/bh-input-text.bh-picker-menu.entry.js.map +1 -1
  337. package/dist/esm/bh-input-text_2.entry.js +2 -2
  338. package/dist/esm/bh-input-verification.entry.js +1 -1
  339. package/dist/esm/bh-label.bh-tooltip.entry.js.map +1 -1
  340. package/dist/esm/bh-label_2.entry.js +105 -4
  341. package/dist/esm/bh-modal-actions.entry.js +1 -1
  342. package/dist/esm/bh-modal-header.entry.js +4 -4
  343. package/dist/esm/bh-month-picker-content.entry.js +2 -2
  344. package/dist/esm/bh-month-picker-content.entry.js.map +1 -1
  345. package/dist/esm/bh-month-picker.entry.js +2 -2
  346. package/dist/esm/bh-month-picker.entry.js.map +1 -1
  347. package/dist/esm/bh-notification.entry.js +1 -1
  348. package/dist/esm/bh-page-navigation-child.entry.js +1 -1
  349. package/dist/esm/bh-page-navigation-multi-level_2.entry.js +3 -3
  350. package/dist/esm/bh-page-navigation.entry.js +1 -1
  351. package/dist/esm/bh-pie-chart.entry.js +1 -1
  352. package/dist/esm/bh-popover.entry.js +15 -77
  353. package/dist/esm/bh-popover.entry.js.map +1 -1
  354. package/dist/esm/bh-property-switcher.entry.js +1 -1
  355. package/dist/esm/bh-sidebar.entry.js +1 -1
  356. package/dist/esm/bh-tab-item.entry.js +2 -2
  357. package/dist/esm/bh-tabs.entry.js +1 -1
  358. package/dist/esm/bh-textarea.entry.js +1 -1
  359. package/dist/esm/bh-toggle.entry.js +1 -1
  360. package/dist/esm/bh-trend-chart.entry.js +2 -2
  361. package/dist/esm/index-nAAobRRQ.js +42 -50
  362. package/dist/esm/index-nAAobRRQ.js.map +1 -1
  363. package/dist/esm/index.js +1 -15
  364. package/dist/esm/index.js.map +1 -1
  365. package/dist/esm/loader.js +1 -1
  366. package/dist/types/components/bh-date-picker/bh-date-picker.d.ts +11 -1
  367. package/dist/types/components/bh-pagination/bh-pagination.d.ts +7 -7
  368. package/dist/types/components/bh-popover/bh-popover.d.ts +9 -49
  369. package/dist/types/components.d.ts +43 -193
  370. package/dist/types/index.d.ts +13 -13
  371. package/hydrate/index.js +283 -297
  372. package/hydrate/index.mjs +283 -297
  373. package/llms.txt +22000 -1428
  374. package/package.json +1 -1
  375. package/components/bh-container-footer.d.ts +0 -11
  376. package/components/bh-container-footer.js +0 -73
  377. package/components/bh-container-footer.js.map +0 -1
  378. package/components/bh-container.d.ts +0 -11
  379. package/components/bh-container.js +0 -48
  380. package/components/bh-container.js.map +0 -1
  381. package/components/p-8bOZFmdg.js.map +0 -1
  382. package/components/p-BQKx1tGq.js.map +0 -1
  383. package/components/p-CMoGgYqw.js.map +0 -1
  384. package/components/p-CdwyUif-.js.map +0 -1
  385. package/components/p-Npcwl1Z8.js.map +0 -1
  386. package/components/p-WibqGBGu.js +0 -182
  387. package/components/p-WibqGBGu.js.map +0 -1
  388. package/dist/bellhop-core/bh-container-footer.entry.esm.js.map +0 -1
  389. package/dist/bellhop-core/bh-container.entry.esm.js.map +0 -1
  390. package/dist/bellhop-core/p-233540f9.entry.js +0 -13
  391. package/dist/bellhop-core/p-233540f9.entry.js.map +0 -1
  392. package/dist/bellhop-core/p-3194a87d.entry.js +0 -2
  393. package/dist/bellhop-core/p-3194a87d.entry.js.map +0 -1
  394. package/dist/bellhop-core/p-43c41dfb.entry.js +0 -2
  395. package/dist/bellhop-core/p-43c41dfb.entry.js.map +0 -1
  396. package/dist/bellhop-core/p-4e483d25.entry.js +0 -2
  397. package/dist/bellhop-core/p-5514d7fb.entry.js +0 -2
  398. package/dist/bellhop-core/p-5514d7fb.entry.js.map +0 -1
  399. package/dist/bellhop-core/p-7a85db89.entry.js +0 -2
  400. package/dist/bellhop-core/p-80e07b3d.entry.js +0 -2
  401. package/dist/bellhop-core/p-80e07b3d.entry.js.map +0 -1
  402. package/dist/bellhop-core/p-8962e1a6.entry.js +0 -2
  403. package/dist/bellhop-core/p-8962e1a6.entry.js.map +0 -1
  404. package/dist/bellhop-core/p-CSYwm_Ke.js +0 -2
  405. package/dist/bellhop-core/p-CSYwm_Ke.js.map +0 -1
  406. package/dist/bellhop-core/p-Ck1gRAmI.js.map +0 -1
  407. package/dist/bellhop-core/p-DY76Ee-p.js.map +0 -1
  408. package/dist/bellhop-core/p-b878539a.entry.js +0 -2
  409. package/dist/bellhop-core/p-b878539a.entry.js.map +0 -1
  410. package/dist/bellhop-core/p-c33f6e73.entry.js +0 -2
  411. package/dist/bellhop-core/p-c33f6e73.entry.js.map +0 -1
  412. package/dist/bellhop-core/p-ffb29d95.entry.js +0 -2
  413. package/dist/cjs/bh-button-DD0c0ODJ.js +0 -117
  414. package/dist/cjs/bh-button-DD0c0ODJ.js.map +0 -1
  415. package/dist/cjs/bh-container-footer.cjs.entry.js +0 -38
  416. package/dist/cjs/bh-container-footer.entry.cjs.js.map +0 -1
  417. package/dist/cjs/bh-container.cjs.entry.js +0 -26
  418. package/dist/cjs/bh-container.entry.cjs.js.map +0 -1
  419. package/dist/cjs/bh-label-MpXjm9k0.js +0 -110
  420. package/dist/cjs/bh-label-MpXjm9k0.js.map +0 -1
  421. package/dist/cjs/bh-pagination-CgER63yz.js +0 -152
  422. package/dist/cjs/bh-pagination-CgER63yz.js.map +0 -1
  423. package/dist/collection/components/bh-container/bh-container.css +0 -21
  424. package/dist/collection/components/bh-container/bh-container.js +0 -51
  425. package/dist/collection/components/bh-container/bh-container.js.map +0 -1
  426. package/dist/collection/components/bh-container-footer/bh-container-footer.css +0 -22
  427. package/dist/collection/components/bh-container-footer/bh-container-footer.js +0 -106
  428. package/dist/collection/components/bh-container-footer/bh-container-footer.js.map +0 -1
  429. package/dist/esm/bh-button-ImGVvXaj.js +0 -115
  430. package/dist/esm/bh-button-ImGVvXaj.js.map +0 -1
  431. package/dist/esm/bh-container-footer.entry.js +0 -36
  432. package/dist/esm/bh-container-footer.entry.js.map +0 -1
  433. package/dist/esm/bh-container.entry.js +0 -24
  434. package/dist/esm/bh-container.entry.js.map +0 -1
  435. package/dist/esm/bh-label-PLT7t4We.js +0 -108
  436. package/dist/esm/bh-label-PLT7t4We.js.map +0 -1
  437. package/dist/esm/bh-pagination-CUeRSYsV.js +0 -150
  438. package/dist/esm/bh-pagination-CUeRSYsV.js.map +0 -1
  439. package/dist/types/components/bh-container/bh-container.d.ts +0 -7
  440. package/dist/types/components/bh-container-footer/bh-container-footer.d.ts +0 -18
  441. /package/dist/bellhop-core/{p-bd00d5ad.entry.js.map → p-06b0ba5f.entry.js.map} +0 -0
  442. /package/dist/bellhop-core/{p-4a8844ff.entry.js.map → p-0a232a85.entry.js.map} +0 -0
  443. /package/dist/bellhop-core/{p-67956598.entry.js.map → p-0e773f4b.entry.js.map} +0 -0
  444. /package/dist/bellhop-core/{p-df4498cd.entry.js.map → p-11e84742.entry.js.map} +0 -0
  445. /package/dist/bellhop-core/{p-a41b3673.entry.js.map → p-20e65b2b.entry.js.map} +0 -0
  446. /package/dist/bellhop-core/{p-a30e22f7.entry.js.map → p-2349cd39.entry.js.map} +0 -0
  447. /package/dist/bellhop-core/{p-3a1c52a9.entry.js.map → p-2cc352e8.entry.js.map} +0 -0
  448. /package/dist/bellhop-core/{p-f85a9eaa.entry.js.map → p-439f8477.entry.js.map} +0 -0
  449. /package/dist/bellhop-core/{p-21bc4f77.entry.js.map → p-4cf74f24.entry.js.map} +0 -0
  450. /package/dist/bellhop-core/{p-62235d6e.entry.js.map → p-5a0b2d81.entry.js.map} +0 -0
  451. /package/dist/bellhop-core/{p-07c9b7fa.entry.js.map → p-6626f089.entry.js.map} +0 -0
  452. /package/dist/bellhop-core/{p-36166900.entry.js.map → p-6b428841.entry.js.map} +0 -0
  453. /package/dist/bellhop-core/{p-6bc81ebb.entry.js.map → p-6d4c6b6f.entry.js.map} +0 -0
  454. /package/dist/bellhop-core/{p-c0e36166.entry.js.map → p-6dad737e.entry.js.map} +0 -0
  455. /package/dist/bellhop-core/{p-5c4f74b8.entry.js.map → p-738f24c8.entry.js.map} +0 -0
  456. /package/dist/bellhop-core/{p-49edd1bb.entry.js.map → p-7534a8d4.entry.js.map} +0 -0
  457. /package/dist/bellhop-core/{p-7b0cba50.entry.js.map → p-84ecaf3b.entry.js.map} +0 -0
  458. /package/dist/bellhop-core/{p-d5bf49ab.entry.js.map → p-cad28e7e.entry.js.map} +0 -0
  459. /package/dist/bellhop-core/{p-1540001e.entry.js.map → p-cb0e4e35.entry.js.map} +0 -0
  460. /package/dist/bellhop-core/{p-091171da.entry.js.map → p-ce2aaf37.entry.js.map} +0 -0
  461. /package/dist/bellhop-core/{p-a9c914ee.entry.js.map → p-e0f7b6d1.entry.js.map} +0 -0
  462. /package/dist/bellhop-core/{p-b0dda4df.entry.js.map → p-e83a86d6.entry.js.map} +0 -0
  463. /package/dist/bellhop-core/{p-2db7990e.entry.js.map → p-e96e5aa3.entry.js.map} +0 -0
  464. /package/dist/bellhop-core/{p-c70d11a2.entry.js.map → p-ed780663.entry.js.map} +0 -0
  465. /package/dist/bellhop-core/{p-0e34250c.entry.js.map → p-f4dd33af.entry.js.map} +0 -0
  466. /package/dist/bellhop-core/{p-1be3e908.entry.js.map → p-fe7d5dcb.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bh-empty-state.bh-pagination.bh-skeleton-loader.entry.js","sources":["src/components/bh-empty-state/bh-empty-state.css?tag=bh-empty-state&encapsulation=shadow","src/components/bh-empty-state/bh-empty-state.tsx","src/components/bh-skeleton-loader/bh-skeleton-loader.css?tag=bh-skeleton-loader&encapsulation=shadow","src/components/bh-skeleton-loader/bh-skeleton-loader.tsx"],"sourcesContent":[":host {\n display: block;\n font-family: var(\n --font-inter,\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n sans-serif\n );\n}\n\n/* Container */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 32px;\n padding: 48px 24px;\n text-align: center;\n}\n\n/* Content */\n.empty-state-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n}\n\n/* Illustration */\n.empty-state-illustration {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.empty-state-illustration img {\n object-fit: contain;\n}\n\n/* Text */\n.empty-state-text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.empty-state-title {\n font-size: var(--text-lg-size, 18px);\n font-weight: 600;\n color: var(--color-neutral-900, #101828);\n margin: 0;\n line-height: 1.33;\n}\n\n.empty-state-description {\n font-size: var(--text-sm-size, 14px);\n font-weight: 400;\n color: var(--color-neutral-600, #475467);\n margin: 0;\n line-height: 1.43;\n max-width: 400px;\n}\n\n/* Actions */\n.empty-state-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n/* Material Symbols */\n.material-symbols-outlined {\n font-family: 'Material Symbols Outlined';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n}\n","import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\n\nexport type EmptyStateIllustrationSize = 'sm' | 'md' | 'lg';\n\n@Component({\n tag: 'bh-empty-state',\n styleUrl: 'bh-empty-state.css',\n shadow: true,\n})\nexport class BhEmptyState {\n /**\n * Title text\n */\n @Prop() emptyTitle: string = 'No items found';\n\n /**\n * Description text\n */\n @Prop() description: string = 'There are no items to display at the moment.';\n\n /**\n * Size of the illustration\n */\n @Prop() illustrationSize: EmptyStateIllustrationSize = 'md';\n\n /**\n * Path to the illustration SVG\n */\n @Prop() illustrationPath: string = '';\n\n /**\n * Primary action button text\n */\n @Prop() primaryActionText: string = '';\n\n /**\n * Primary action icon name\n */\n @Prop() primaryActionIcon: string = '';\n\n /**\n * Secondary action button text\n */\n @Prop() secondaryActionText: string = '';\n\n /**\n * Secondary action icon name\n */\n @Prop() secondaryActionIcon: string = '';\n\n /**\n * Max width of the component\n */\n @Prop() maxWidth: string = '512px';\n\n /**\n * Emitted when primary action is clicked\n */\n @Event() bhPrimaryAction!: EventEmitter<void>;\n\n /**\n * Emitted when secondary action is clicked\n */\n @Event() bhSecondaryAction!: EventEmitter<void>;\n\n private handlePrimaryAction = (): void => {\n this.bhPrimaryAction.emit();\n };\n\n private handleSecondaryAction = (): void => {\n this.bhSecondaryAction.emit();\n };\n\n private getIllustrationDimensions(): { width: string; height: string } {\n switch (this.illustrationSize) {\n case 'sm':\n return { width: '120px', height: '120px' };\n case 'md':\n return { width: '200px', height: '200px' };\n case 'lg':\n return { width: '280px', height: '280px' };\n default:\n return { width: '200px', height: '200px' };\n }\n }\n\n render() {\n const dimensions = this.getIllustrationDimensions();\n const hasActions = this.primaryActionText || this.secondaryActionText;\n\n return (\n <div\n class=\"empty-state\"\n style={{ maxWidth: this.maxWidth }}\n part=\"container\"\n >\n <div class=\"empty-state-content\">\n {/* Illustration */}\n {this.illustrationPath && (\n <div class=\"empty-state-illustration\">\n <img\n src={this.illustrationPath}\n alt=\"Empty state illustration\"\n style={{ width: dimensions.width, height: dimensions.height }}\n />\n </div>\n )}\n\n {/* Text Content */}\n <div class=\"empty-state-text\">\n <h3 class=\"empty-state-title\">{this.emptyTitle}</h3>\n <p class=\"empty-state-description\">{this.description}</p>\n </div>\n </div>\n\n {/* Actions */}\n {hasActions && (\n <div class=\"empty-state-actions\">\n {this.secondaryActionText && (\n <bh-button\n hierarchy=\"secondary\"\n size=\"md\"\n label={this.secondaryActionText}\n icon={this.secondaryActionIcon ? 'leading' : 'none'}\n iconName={this.secondaryActionIcon}\n onBhClick={this.handleSecondaryAction}\n />\n )}\n {this.primaryActionText && (\n <bh-button\n hierarchy=\"primary\"\n size=\"md\"\n label={this.primaryActionText}\n icon={this.primaryActionIcon ? 'leading' : 'none'}\n iconName={this.primaryActionIcon}\n onBhClick={this.handlePrimaryAction}\n />\n )}\n </div>\n )}\n </div>\n );\n }\n}\n","/* ==========================================================================\n BH-SKELETON-LOADER COMPONENT STYLES\n ========================================================================== */\n\n:host {\n display: inline-block;\n}\n\n.skeleton {\n display: inline-block;\n background: linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0.06) 25%,\n rgba(0, 0, 0, 0.03) 50%,\n rgba(0, 0, 0, 0.06) 75%\n );\n background-size: 400% 100%;\n animation: shimmer 1.5s ease-in-out infinite;\n border-radius: var(--radius-sm);\n line-height: 1;\n}\n\n.skeleton-circle {\n border-radius: 50%;\n}\n\n.skeleton::before {\n content: '\\00a0';\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0 50%;\n }\n}\n\n.visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'bh-skeleton-loader',\n styleUrl: 'bh-skeleton-loader.css',\n shadow: true,\n})\nexport class BhSkeletonLoader {\n /**\n * Width of the skeleton (CSS value)\n */\n @Prop() width: string = '100%';\n\n /**\n * Height of the skeleton (CSS value)\n */\n @Prop() height: string = '1em';\n\n /**\n * Whether the skeleton should be circular\n */\n @Prop() circle: boolean = false;\n\n render() {\n const skeletonClasses = {\n 'skeleton': true,\n 'skeleton-circle': this.circle,\n };\n\n return (\n <span\n class={skeletonClasses}\n style={{ width: this.width, height: this.height }}\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n part=\"skeleton\"\n >\n <span class=\"visually-hidden\">Loading...</span>\n </span>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bh-empty-state.bh-pagination.bh-skeleton-loader.entry.js","sources":["src/components/bh-empty-state/bh-empty-state.css?tag=bh-empty-state&encapsulation=shadow","src/components/bh-empty-state/bh-empty-state.tsx","src/components/bh-pagination/bh-pagination.css?tag=bh-pagination&encapsulation=shadow","src/components/bh-pagination/bh-pagination.tsx","src/components/bh-skeleton-loader/bh-skeleton-loader.css?tag=bh-skeleton-loader&encapsulation=shadow","src/components/bh-skeleton-loader/bh-skeleton-loader.tsx"],"sourcesContent":[":host {\n display: block;\n font-family: var(\n --font-inter,\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n sans-serif\n );\n}\n\n/* Container */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 32px;\n padding: 48px 24px;\n text-align: center;\n}\n\n/* Content */\n.empty-state-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n}\n\n/* Illustration */\n.empty-state-illustration {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.empty-state-illustration img {\n object-fit: contain;\n}\n\n/* Text */\n.empty-state-text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.empty-state-title {\n font-size: var(--text-lg-size, 18px);\n font-weight: 600;\n color: var(--color-neutral-900, #101828);\n margin: 0;\n line-height: 1.33;\n}\n\n.empty-state-description {\n font-size: var(--text-sm-size, 14px);\n font-weight: 400;\n color: var(--color-neutral-600, #475467);\n margin: 0;\n line-height: 1.43;\n max-width: 400px;\n}\n\n/* Actions */\n.empty-state-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n/* Material Symbols */\n.material-symbols-outlined {\n font-family: 'Material Symbols Outlined';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n}\n","import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\n\nexport type EmptyStateIllustrationSize = 'sm' | 'md' | 'lg';\n\n@Component({\n tag: 'bh-empty-state',\n styleUrl: 'bh-empty-state.css',\n shadow: true,\n})\nexport class BhEmptyState {\n /**\n * Title text\n */\n @Prop() emptyTitle: string = 'No items found';\n\n /**\n * Description text\n */\n @Prop() description: string = 'There are no items to display at the moment.';\n\n /**\n * Size of the illustration\n */\n @Prop() illustrationSize: EmptyStateIllustrationSize = 'md';\n\n /**\n * Path to the illustration SVG\n */\n @Prop() illustrationPath: string = '';\n\n /**\n * Primary action button text\n */\n @Prop() primaryActionText: string = '';\n\n /**\n * Primary action icon name\n */\n @Prop() primaryActionIcon: string = '';\n\n /**\n * Secondary action button text\n */\n @Prop() secondaryActionText: string = '';\n\n /**\n * Secondary action icon name\n */\n @Prop() secondaryActionIcon: string = '';\n\n /**\n * Max width of the component\n */\n @Prop() maxWidth: string = '512px';\n\n /**\n * Emitted when primary action is clicked\n */\n @Event() bhPrimaryAction!: EventEmitter<void>;\n\n /**\n * Emitted when secondary action is clicked\n */\n @Event() bhSecondaryAction!: EventEmitter<void>;\n\n private handlePrimaryAction = (): void => {\n this.bhPrimaryAction.emit();\n };\n\n private handleSecondaryAction = (): void => {\n this.bhSecondaryAction.emit();\n };\n\n private getIllustrationDimensions(): { width: string; height: string } {\n switch (this.illustrationSize) {\n case 'sm':\n return { width: '120px', height: '120px' };\n case 'md':\n return { width: '200px', height: '200px' };\n case 'lg':\n return { width: '280px', height: '280px' };\n default:\n return { width: '200px', height: '200px' };\n }\n }\n\n render() {\n const dimensions = this.getIllustrationDimensions();\n const hasActions = this.primaryActionText || this.secondaryActionText;\n\n return (\n <div\n class=\"empty-state\"\n style={{ maxWidth: this.maxWidth }}\n part=\"container\"\n >\n <div class=\"empty-state-content\">\n {/* Illustration */}\n {this.illustrationPath && (\n <div class=\"empty-state-illustration\">\n <img\n src={this.illustrationPath}\n alt=\"Empty state illustration\"\n style={{ width: dimensions.width, height: dimensions.height }}\n />\n </div>\n )}\n\n {/* Text Content */}\n <div class=\"empty-state-text\">\n <h3 class=\"empty-state-title\">{this.emptyTitle}</h3>\n <p class=\"empty-state-description\">{this.description}</p>\n </div>\n </div>\n\n {/* Actions */}\n {hasActions && (\n <div class=\"empty-state-actions\">\n {this.secondaryActionText && (\n <bh-button\n hierarchy=\"secondary\"\n size=\"md\"\n label={this.secondaryActionText}\n icon={this.secondaryActionIcon ? 'leading' : 'none'}\n iconName={this.secondaryActionIcon}\n onBhClick={this.handleSecondaryAction}\n />\n )}\n {this.primaryActionText && (\n <bh-button\n hierarchy=\"primary\"\n size=\"md\"\n label={this.primaryActionText}\n icon={this.primaryActionIcon ? 'leading' : 'none'}\n iconName={this.primaryActionIcon}\n onBhClick={this.handlePrimaryAction}\n />\n )}\n </div>\n )}\n </div>\n );\n }\n}\n","/* =============================================================================\n bh-pagination Component Styles\n ============================================================================= */\n\n:host {\n display: block;\n font-family: var(--font-family-body, 'Inter', sans-serif);\n}\n\n/* -----------------------------------------------------------------------------\n Base Pagination Container\n ----------------------------------------------------------------------------- */\n\n.pagination {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--sp-4, 1rem);\n padding: var(--sp-3, 0.75rem) var(--sp-4, 1rem);\n background-color: var(--color-white, #fff);\n border-top: 1px solid var(--color-neutral-200, #e2e4eb);\n}\n\n/* -----------------------------------------------------------------------------\n Disabled State\n ----------------------------------------------------------------------------- */\n\n.pagination-disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n/* -----------------------------------------------------------------------------\n Info Section\n ----------------------------------------------------------------------------- */\n\n.pagination-info {\n display: flex;\n align-items: center;\n}\n\n.pagination-info-text {\n font-size: 0.875rem;\n color: var(--color-neutral-600, #5c627a);\n white-space: nowrap;\n}\n\n/* -----------------------------------------------------------------------------\n Controls Section\n ----------------------------------------------------------------------------- */\n\n.pagination-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n gap: var(--sp-4, 1rem);\n}\n\n/* -----------------------------------------------------------------------------\n Page Size Selector\n ----------------------------------------------------------------------------- */\n\n.pagination-page-size {\n display: flex;\n align-items: center;\n gap: var(--sp-2, 0.5rem);\n}\n\n.pagination-page-size-label {\n font-size: 0.875rem;\n color: var(--color-neutral-600, #5c627a);\n white-space: nowrap;\n}\n\n.pagination-select {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: var(--color-white, #fff);\n border: 1px solid var(--color-neutral-300, #c0c4d4);\n border-radius: var(--radius-md, 6px);\n padding: 0 var(--sp-6, 1.5rem) 0 var(--sp-3, 0.75rem);\n height: 32px;\n font-size: 0.875rem;\n color: var(--color-neutral-900, #141624);\n cursor: pointer;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n /* Custom dropdown arrow */\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='%235c627a'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 4px center;\n background-size: 16px;\n}\n\n.pagination-select:hover:not(:disabled) {\n border-color: var(--color-neutral-400, #939ab4);\n}\n\n.pagination-select:focus {\n outline: none;\n border-color: var(--color-brand-600);\n box-shadow: 0 0 0 3px var(--color-brand-100, #e0e1fc);\n}\n\n.pagination-select:disabled {\n background-color: var(--color-neutral-100, #f0f1f5);\n cursor: not-allowed;\n}\n\n/* -----------------------------------------------------------------------------\n Navigation Buttons\n ----------------------------------------------------------------------------- */\n\n.pagination-nav {\n display: flex;\n align-items: center;\n gap: var(--sp-1, 0.25rem);\n}\n\n.pagination-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: var(--radius-md, 6px);\n background-color: transparent;\n color: var(--color-neutral-600, #5c627a);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.pagination-btn .material-symbols-outlined {\n font-size: 20px;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;\n}\n\n.pagination-btn:hover:not(:disabled) {\n background-color: var(--color-neutral-100, #f0f1f5);\n color: var(--color-neutral-900, #141624);\n}\n\n.pagination-btn:focus {\n outline: none;\n box-shadow: 0 0 0 2px var(--color-brand-100, #e0e1fc);\n}\n\n.pagination-btn:active:not(:disabled) {\n background-color: var(--color-neutral-200, #e2e4eb);\n}\n\n.pagination-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* -----------------------------------------------------------------------------\n Page Numbers Display\n ----------------------------------------------------------------------------- */\n\n.pagination-pages {\n display: flex;\n align-items: center;\n gap: var(--sp-1, 0.25rem);\n}\n\n.pagination-page-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 32px;\n height: 32px;\n padding: 0 var(--sp-2, 0.5rem);\n border: 1px solid transparent;\n border-radius: var(--radius-md, 6px);\n background-color: transparent;\n color: var(--color-neutral-700, #4d5266);\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.pagination-page-btn:hover:not(:disabled) {\n background-color: var(--color-neutral-100, #f0f1f5);\n color: var(--color-neutral-900, #141624);\n}\n\n.pagination-page-btn-active {\n background-color: var(--color-brand-600);\n color: var(--color-white, #fff);\n border-color: var(--color-brand-600);\n}\n\n.pagination-page-btn-active:hover:not(:disabled) {\n background-color: var(--color-brand-600);\n border-color: var(--color-brand-600);\n color: var(--color-white, #fff);\n}\n\n.pagination-page-btn:focus {\n outline: none;\n box-shadow: 0 0 0 2px var(--color-brand-400);\n}\n\n.pagination-page-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.pagination-ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n color: var(--color-neutral-400, #939ab4);\n font-size: 0.875rem;\n user-select: none;\n}\n\n/* -----------------------------------------------------------------------------\n Compact Mode - Page Input\n ----------------------------------------------------------------------------- */\n\n.pagination-page-display {\n display: flex;\n align-items: center;\n gap: var(--sp-2, 0.5rem);\n}\n\n.pagination-page-text {\n font-size: 0.875rem;\n color: var(--color-neutral-700, #4d5266);\n white-space: nowrap;\n}\n\n.pagination-page-input {\n width: 60px;\n height: 32px;\n padding: 0 var(--sp-2, 0.5rem);\n border: 1px solid var(--color-neutral-300, #c0c4d4);\n border-radius: var(--radius-md, 6px);\n font-size: 0.875rem;\n text-align: center;\n color: var(--color-neutral-900, #141624);\n background-color: var(--color-white, #fff);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.pagination-page-input:hover:not(:disabled) {\n border-color: var(--color-neutral-400, #939ab4);\n}\n\n.pagination-page-input:focus {\n outline: none;\n border-color: var(--color-brand-500, #6366f1);\n box-shadow: 0 0 0 3px var(--color-brand-100, #e0e1fc);\n}\n\n.pagination-page-input:disabled {\n background-color: var(--color-neutral-100, #f0f1f5);\n cursor: not-allowed;\n}\n\n/* Remove number input spinners */\n.pagination-page-input::-webkit-inner-spin-button,\n.pagination-page-input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.pagination-page-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n/* -----------------------------------------------------------------------------\n Responsive Adjustments\n ----------------------------------------------------------------------------- */\n\n@media (max-width: 640px) {\n .pagination {\n flex-direction: column;\n align-items: stretch;\n gap: var(--sp-3, 0.75rem);\n }\n\n .pagination-info {\n justify-content: center;\n }\n\n .pagination-controls {\n justify-content: center;\n flex-wrap: wrap;\n }\n\n .pagination-page-size {\n width: 100%;\n justify-content: center;\n }\n\n .pagination-nav {\n justify-content: center;\n }\n}\n","import { Component, Prop, Event, EventEmitter, h, State } from '@stencil/core';\n\nexport interface PaginationChangeEvent {\n page: number;\n pageSize: number;\n}\n\n@Component({\n tag: 'bh-pagination',\n styleUrl: 'bh-pagination.css',\n shadow: true,\n})\nexport class BhPagination {\n /**\n * Current page (1-indexed)\n */\n @Prop({ mutable: true }) page: number = 1;\n\n /**\n * Total number of items\n */\n @Prop() totalItems: number = 0;\n\n /**\n * Number of items per page\n */\n @Prop({ mutable: true }) pageSize: number = 10;\n\n /**\n * Available page size options\n */\n @Prop() pageSizeOptions: number[] = [10, 25, 50, 100];\n\n /**\n * Show page size selector\n */\n @Prop() showPageSizeSelector: boolean = true;\n\n /**\n * Show item count info (e.g., \"Showing 1 to 10 of 100 results\")\n */\n @Prop() showItemCount: boolean = true;\n\n /**\n * Compact mode - shows input field instead of page numbers\n */\n @Prop() compact: boolean = false;\n\n /**\n * Maximum number of page numbers to show (for non-compact mode)\n */\n @Prop() maxPageNumbers: number = 5;\n\n /**\n * Whether the pagination is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Label for \"Rows per page\" text (for i18n)\n */\n @Prop() rowsPerPageLabel: string = 'Rows per page:';\n\n /**\n * Label template for showing results (use {start}, {end}, {total} placeholders)\n */\n @Prop() showingResultsLabel: string =\n 'Showing {start} to {end} of {total} results';\n\n /**\n * Label template for page info when total items unknown (use {page}, {totalPages} placeholders)\n */\n @Prop() pageInfoLabel: string = 'Page {page} of {totalPages}';\n\n @State() internalPage: number = 1;\n @State() internalPageSize: number = 10;\n\n /**\n * Emitted when the page changes\n */\n @Event() bhPageChange!: EventEmitter<PaginationChangeEvent>;\n\n /**\n * Emitted when page size changes\n */\n @Event() bhPageSizeChange!: EventEmitter<PaginationChangeEvent>;\n\n componentWillLoad() {\n this.internalPage = this.page;\n this.internalPageSize = this.pageSize;\n }\n\n private get totalPages(): number {\n return Math.max(1, Math.ceil(this.totalItems / this.internalPageSize));\n }\n\n private get startItem(): number {\n if (this.totalItems === 0) return 0;\n return (this.internalPage - 1) * this.internalPageSize + 1;\n }\n\n private get endItem(): number {\n return Math.min(this.internalPage * this.internalPageSize, this.totalItems);\n }\n\n private get canGoPrevious(): boolean {\n return this.internalPage > 1 && !this.disabled;\n }\n\n private get canGoNext(): boolean {\n return this.internalPage < this.totalPages && !this.disabled;\n }\n\n private goToPage(newPage: number) {\n if (this.disabled) return;\n\n const page = Math.max(1, Math.min(newPage, this.totalPages));\n if (page !== this.internalPage) {\n this.internalPage = page;\n this.page = page;\n this.bhPageChange.emit({ page, pageSize: this.internalPageSize });\n }\n }\n\n private handlePageSizeChange(event: Event) {\n if (this.disabled) return;\n\n const select = event.target as HTMLSelectElement;\n const newPageSize = parseInt(select.value, 10);\n\n if (newPageSize !== this.internalPageSize) {\n this.internalPageSize = newPageSize;\n this.pageSize = newPageSize;\n\n // Reset to page 1 when page size changes, or adjust if current page is now out of bounds\n const newTotalPages = Math.max(\n 1,\n Math.ceil(this.totalItems / newPageSize)\n );\n const newPage = Math.min(this.internalPage, newTotalPages);\n\n if (newPage !== this.internalPage) {\n this.internalPage = newPage;\n this.page = newPage;\n }\n\n this.bhPageSizeChange.emit({\n page: this.internalPage,\n pageSize: newPageSize,\n });\n }\n }\n\n private goToPrevious = () => this.goToPage(this.internalPage - 1);\n private goToNext = () => this.goToPage(this.internalPage + 1);\n\n private handlePageInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const pageNumber = parseInt(input.value, 10);\n\n if (!isNaN(pageNumber)) {\n this.goToPage(pageNumber);\n }\n }\n\n private getPageNumbers(): number[] {\n const totalPages = this.totalPages;\n const currentPage = this.internalPage;\n const maxPages = this.maxPageNumbers;\n\n if (totalPages <= maxPages) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: number[] = [];\n const half = Math.floor(maxPages / 2);\n\n let start = Math.max(1, currentPage - half);\n let end = Math.min(totalPages, start + maxPages - 1);\n\n // Adjust start if we're near the end\n if (end - start < maxPages - 1) {\n start = Math.max(1, end - maxPages + 1);\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n return pages;\n }\n\n private getInfoText(): string {\n if (this.totalItems === 0) {\n return 'No results';\n }\n\n if (this.showItemCount && this.totalItems > 0) {\n return this.showingResultsLabel\n .replace('{start}', String(this.startItem))\n .replace('{end}', String(this.endItem))\n .replace('{total}', String(this.totalItems));\n }\n\n return this.pageInfoLabel\n .replace('{page}', String(this.internalPage))\n .replace('{totalPages}', String(this.totalPages));\n }\n\n private renderPageNumbers() {\n if (this.compact) {\n // Compact mode: Page X of Y\n return (\n <div class=\"pagination-page-display\">\n <span class=\"pagination-page-text\">Page</span>\n <input\n type=\"number\"\n class=\"pagination-page-input\"\n value={String(this.internalPage)}\n min=\"1\"\n max={String(this.totalPages)}\n disabled={this.disabled}\n onChange={(e) => this.handlePageInputChange(e)}\n aria-label=\"Page number\"\n />\n <span class=\"pagination-page-text\">of {this.totalPages}</span>\n </div>\n );\n }\n\n // Non-compact mode: numbered buttons\n const pageNumbers = this.getPageNumbers();\n const showStartEllipsis = pageNumbers[0] > 1;\n const showEndEllipsis =\n pageNumbers[pageNumbers.length - 1] < this.totalPages;\n\n return (\n <div class=\"pagination-pages\">\n {showStartEllipsis &&\n pageNumbers[0] > 2 && [\n <button\n type=\"button\"\n class=\"pagination-page-btn\"\n onClick={() => this.goToPage(1)}\n disabled={this.disabled}\n aria-label=\"Go to page 1\"\n key=\"page-1\"\n >\n 1\n </button>,\n <span class=\"pagination-ellipsis\" key=\"ellipsis-start\">\n ...\n </span>,\n ]}\n\n {pageNumbers.map((pageNum) => (\n <button\n type=\"button\"\n class={{\n 'pagination-page-btn': true,\n 'pagination-page-btn-active': pageNum === this.internalPage,\n }}\n onClick={() => this.goToPage(pageNum)}\n disabled={this.disabled}\n aria-label={`Go to page ${pageNum}`}\n aria-current={pageNum === this.internalPage ? 'page' : undefined}\n key={`page-${pageNum}`}\n >\n {pageNum}\n </button>\n ))}\n\n {showEndEllipsis &&\n pageNumbers[pageNumbers.length - 1] < this.totalPages - 1 && [\n <span class=\"pagination-ellipsis\" key=\"ellipsis-end\">\n ...\n </span>,\n <button\n type=\"button\"\n class=\"pagination-page-btn\"\n onClick={() => this.goToPage(this.totalPages)}\n disabled={this.disabled}\n aria-label={`Go to page ${this.totalPages}`}\n key={`page-${this.totalPages}`}\n >\n {this.totalPages}\n </button>,\n ]}\n </div>\n );\n }\n\n render() {\n const paginationClasses = {\n pagination: true,\n 'pagination-disabled': this.disabled,\n 'pagination-compact': this.compact,\n };\n\n return (\n <div class={paginationClasses} role=\"navigation\" aria-label=\"Pagination\">\n {/* Controls section - reordered */}\n <div class=\"pagination-controls\">\n {/* Page size selector - now first */}\n {this.showPageSizeSelector && (\n <div class=\"pagination-page-size\">\n <span class=\"pagination-page-size-label\">\n {this.rowsPerPageLabel}\n </span>\n <select\n class=\"pagination-select\"\n onChange={(e) => this.handlePageSizeChange(e)}\n disabled={this.disabled}\n aria-label=\"Select page size\"\n >\n {this.pageSizeOptions.map((size) => (\n <option\n key={size}\n value={String(size)}\n selected={size === this.internalPageSize}\n >\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n\n {/* Navigation with page numbers/input in middle */}\n <div class=\"pagination-nav\">\n <button\n type=\"button\"\n class=\"pagination-btn\"\n onClick={this.goToPrevious}\n disabled={!this.canGoPrevious}\n aria-label=\"Go to previous page\"\n >\n <span class=\"material-symbols-outlined\">chevron_left</span>\n </button>\n\n {/* Page numbers or input */}\n {this.renderPageNumbers()}\n\n <button\n type=\"button\"\n class=\"pagination-btn\"\n onClick={this.goToNext}\n disabled={!this.canGoNext}\n aria-label=\"Go to next page\"\n >\n <span class=\"material-symbols-outlined\">chevron_right</span>\n </button>\n </div>\n </div>\n\n {/* Info section - now on right */}\n {this.showItemCount && (\n <div class=\"pagination-info\">\n <span class=\"pagination-info-text\">{this.getInfoText()}</span>\n </div>\n )}\n </div>\n );\n }\n}\n","/* ==========================================================================\n BH-SKELETON-LOADER COMPONENT STYLES\n ========================================================================== */\n\n:host {\n display: inline-block;\n vertical-align: middle;\n}\n\n.skeleton {\n display: block;\n min-width: 20px;\n min-height: 8px;\n background: linear-gradient(\n 90deg,\n var(--color-neutral-200, #e2e4eb) 25%,\n var(--color-neutral-100, #f0f1f5) 50%,\n var(--color-neutral-200, #e2e4eb) 75%\n );\n background-size: 400% 100%;\n animation: shimmer 1.5s ease-in-out infinite;\n border-radius: var(--radius-sm, 4px);\n}\n\n.skeleton-circle {\n border-radius: 50%;\n aspect-ratio: 1;\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0 50%;\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'bh-skeleton-loader',\n styleUrl: 'bh-skeleton-loader.css',\n shadow: true,\n})\nexport class BhSkeletonLoader {\n /**\n * Width of the skeleton (CSS value)\n */\n @Prop() width: string = '100%';\n\n /**\n * Height of the skeleton (CSS value)\n */\n @Prop() height: string = '1em';\n\n /**\n * Whether the skeleton should be circular\n */\n @Prop() circle: boolean = false;\n\n render() {\n const skeletonClasses = {\n skeleton: true,\n 'skeleton-circle': this.circle,\n };\n\n return (\n <span\n class={skeletonClasses}\n style={{ width: this.width, height: this.height }}\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n part=\"skeleton\"\n />\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { r as registerInstance, c as createEvent, h } from './index-nAAobRRQ.js';
2
- export { B as bh_pagination } from './bh-pagination-CUeRSYsV.js';
3
2
 
4
3
  const bhEmptyStateCss = ":host{display:block;font-family:var(\n --font-inter,\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n sans-serif\n )}.empty-state{display:flex;flex-direction:column;align-items:center;gap:32px;padding:48px 24px;text-align:center}.empty-state-content{display:flex;flex-direction:column;align-items:center;gap:24px}.empty-state-illustration{display:flex;align-items:center;justify-content:center}.empty-state-illustration img{object-fit:contain}.empty-state-text{display:flex;flex-direction:column;align-items:center;gap:8px}.empty-state-title{font-size:var(--text-lg-size, 18px);font-weight:600;color:var(--color-neutral-900, #101828);margin:0;line-height:1.33}.empty-state-description{font-size:var(--text-sm-size, 14px);font-weight:400;color:var(--color-neutral-600, #475467);margin:0;line-height:1.43;max-width:400px}.empty-state-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.material-symbols-outlined{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:'liga';-webkit-font-smoothing:antialiased;font-variation-settings:'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24}";
5
4
 
@@ -74,12 +73,206 @@ const BhEmptyState = class {
74
73
  render() {
75
74
  const dimensions = this.getIllustrationDimensions();
76
75
  const hasActions = this.primaryActionText || this.secondaryActionText;
77
- return (h("div", { key: '726baf337a04c6f733957320b6efeb4a62cff3e8', class: "empty-state", style: { maxWidth: this.maxWidth }, part: "container" }, h("div", { key: '353101a9835cc3d88f5a97cca24585603f6b541f', class: "empty-state-content" }, this.illustrationPath && (h("div", { key: '2a1c5d14866012705df5f25d6096ba8c72cedf45', class: "empty-state-illustration" }, h("img", { key: 'aff2cf53fe902ab41a1708f7d56a8b2de75fd9dd', src: this.illustrationPath, alt: "Empty state illustration", style: { width: dimensions.width, height: dimensions.height } }))), h("div", { key: 'a9ffc2cf98530396089a3f97e74a936c454dca2d', class: "empty-state-text" }, h("h3", { key: 'dc547b53a660a139bd37c730b540ae199e64d17d', class: "empty-state-title" }, this.emptyTitle), h("p", { key: '55cdffdb165ac37592d479f13e2f31fe6bf41e1e', class: "empty-state-description" }, this.description))), hasActions && (h("div", { key: '57b26d57995e7f3c0f9086989f29b0fee4045d6a', class: "empty-state-actions" }, this.secondaryActionText && (h("bh-button", { key: 'f4bf465a1b45dfbf3fd0e86eb2adc44840891df7', hierarchy: "secondary", size: "md", label: this.secondaryActionText, icon: this.secondaryActionIcon ? 'leading' : 'none', iconName: this.secondaryActionIcon, onBhClick: this.handleSecondaryAction })), this.primaryActionText && (h("bh-button", { key: '3b2e7ec45aad23a60efe35c5fbe3fd572616e577', hierarchy: "primary", size: "md", label: this.primaryActionText, icon: this.primaryActionIcon ? 'leading' : 'none', iconName: this.primaryActionIcon, onBhClick: this.handlePrimaryAction }))))));
76
+ return (h("div", { key: '27627b41b22454be798780c7861b328c534cd17f', class: "empty-state", style: { maxWidth: this.maxWidth }, part: "container" }, h("div", { key: '0809e434d3fe2b9d4403bc8b763dae2b7ad0d6aa', class: "empty-state-content" }, this.illustrationPath && (h("div", { key: 'ca254dfb52ba2d70fef3dc667635f4c585637a82', class: "empty-state-illustration" }, h("img", { key: '3247842b749cc543acbb047ff69e4095f89279fd', src: this.illustrationPath, alt: "Empty state illustration", style: { width: dimensions.width, height: dimensions.height } }))), h("div", { key: 'e77d2dc3af030f599f9700bef3bf54010d3eaf0a', class: "empty-state-text" }, h("h3", { key: '872c3d40a27b1b167e3fdb3f7847f4fbab27088c', class: "empty-state-title" }, this.emptyTitle), h("p", { key: '600c02cbbd40936f3cb0db8f141f95682d0feda6', class: "empty-state-description" }, this.description))), hasActions && (h("div", { key: 'b1adf10c9051c7286cef8a594f63ff6fe1cdf3a6', class: "empty-state-actions" }, this.secondaryActionText && (h("bh-button", { key: '0cc391d958032db8e2269ab0d1119d26a107960d', hierarchy: "secondary", size: "md", label: this.secondaryActionText, icon: this.secondaryActionIcon ? 'leading' : 'none', iconName: this.secondaryActionIcon, onBhClick: this.handleSecondaryAction })), this.primaryActionText && (h("bh-button", { key: '84a07abfba06f1740c62fb75eff8a3f0d6f5f45d', hierarchy: "primary", size: "md", label: this.primaryActionText, icon: this.primaryActionIcon ? 'leading' : 'none', iconName: this.primaryActionIcon, onBhClick: this.handlePrimaryAction }))))));
78
77
  }
79
78
  };
80
79
  BhEmptyState.style = bhEmptyStateCss;
81
80
 
82
- const bhSkeletonLoaderCss = ":host{display:inline-block}.skeleton{display:inline-block;background:linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0.06) 25%,\n rgba(0, 0, 0, 0.03) 50%,\n rgba(0, 0, 0, 0.06) 75%\n );background-size:400% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-sm);line-height:1}.skeleton-circle{border-radius:50%}.skeleton::before{content:'\\00a0'}@keyframes shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}";
81
+ const bhPaginationCss = ":host{display:block;font-family:var(--font-family-body, 'Inter', sans-serif)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4, 1rem);padding:var(--sp-3, 0.75rem) var(--sp-4, 1rem);background-color:var(--color-white, #fff);border-top:1px solid var(--color-neutral-200, #e2e4eb)}.pagination-disabled{opacity:0.5;pointer-events:none}.pagination-info{display:flex;align-items:center}.pagination-info-text{font-size:0.875rem;color:var(--color-neutral-600, #5c627a);white-space:nowrap}.pagination-controls{display:flex;justify-content:space-between;align-items:center;width:100%;gap:var(--sp-4, 1rem)}.pagination-page-size{display:flex;align-items:center;gap:var(--sp-2, 0.5rem)}.pagination-page-size-label{font-size:0.875rem;color:var(--color-neutral-600, #5c627a);white-space:nowrap}.pagination-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--color-white, #fff);border:1px solid var(--color-neutral-300, #c0c4d4);border-radius:var(--radius-md, 6px);padding:0 var(--sp-6, 1.5rem) 0 var(--sp-3, 0.75rem);height:32px;font-size:0.875rem;color:var(--color-neutral-900, #141624);cursor:pointer;transition:border-color 0.15s ease, box-shadow 0.15s ease;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='%235c627a'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 4px center;background-size:16px}.pagination-select:hover:not(:disabled){border-color:var(--color-neutral-400, #939ab4)}.pagination-select:focus{outline:none;border-color:var(--color-brand-600);box-shadow:0 0 0 3px var(--color-brand-100, #e0e1fc)}.pagination-select:disabled{background-color:var(--color-neutral-100, #f0f1f5);cursor:not-allowed}.pagination-nav{display:flex;align-items:center;gap:var(--sp-1, 0.25rem)}.pagination-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--radius-md, 6px);background-color:transparent;color:var(--color-neutral-600, #5c627a);cursor:pointer;transition:background-color 0.15s ease, color 0.15s ease}.pagination-btn .material-symbols-outlined{font-size:20px;font-variation-settings:'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20}.pagination-btn:hover:not(:disabled){background-color:var(--color-neutral-100, #f0f1f5);color:var(--color-neutral-900, #141624)}.pagination-btn:focus{outline:none;box-shadow:0 0 0 2px var(--color-brand-100, #e0e1fc)}.pagination-btn:active:not(:disabled){background-color:var(--color-neutral-200, #e2e4eb)}.pagination-btn:disabled{opacity:0.4;cursor:not-allowed}.pagination-pages{display:flex;align-items:center;gap:var(--sp-1, 0.25rem)}.pagination-page-btn{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--sp-2, 0.5rem);border:1px solid transparent;border-radius:var(--radius-md, 6px);background-color:transparent;color:var(--color-neutral-700, #4d5266);font-size:0.875rem;font-weight:500;cursor:pointer;transition:all 0.15s ease}.pagination-page-btn:hover:not(:disabled){background-color:var(--color-neutral-100, #f0f1f5);color:var(--color-neutral-900, #141624)}.pagination-page-btn-active{background-color:var(--color-brand-600);color:var(--color-white, #fff);border-color:var(--color-brand-600)}.pagination-page-btn-active:hover:not(:disabled){background-color:var(--color-brand-600);border-color:var(--color-brand-600);color:var(--color-white, #fff)}.pagination-page-btn:focus{outline:none;box-shadow:0 0 0 2px var(--color-brand-400)}.pagination-page-btn:disabled{opacity:0.4;cursor:not-allowed}.pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:24px;color:var(--color-neutral-400, #939ab4);font-size:0.875rem;user-select:none}.pagination-page-display{display:flex;align-items:center;gap:var(--sp-2, 0.5rem)}.pagination-page-text{font-size:0.875rem;color:var(--color-neutral-700, #4d5266);white-space:nowrap}.pagination-page-input{width:60px;height:32px;padding:0 var(--sp-2, 0.5rem);border:1px solid var(--color-neutral-300, #c0c4d4);border-radius:var(--radius-md, 6px);font-size:0.875rem;text-align:center;color:var(--color-neutral-900, #141624);background-color:var(--color-white, #fff);transition:border-color 0.15s ease, box-shadow 0.15s ease}.pagination-page-input:hover:not(:disabled){border-color:var(--color-neutral-400, #939ab4)}.pagination-page-input:focus{outline:none;border-color:var(--color-brand-500, #6366f1);box-shadow:0 0 0 3px var(--color-brand-100, #e0e1fc)}.pagination-page-input:disabled{background-color:var(--color-neutral-100, #f0f1f5);cursor:not-allowed}.pagination-page-input::-webkit-inner-spin-button,.pagination-page-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pagination-page-input[type='number']{-moz-appearance:textfield}@media (max-width: 640px){.pagination{flex-direction:column;align-items:stretch;gap:var(--sp-3, 0.75rem)}.pagination-info{justify-content:center}.pagination-controls{justify-content:center;flex-wrap:wrap}.pagination-page-size{width:100%;justify-content:center}.pagination-nav{justify-content:center}}";
82
+
83
+ const BhPagination = class {
84
+ constructor(hostRef) {
85
+ registerInstance(this, hostRef);
86
+ this.bhPageChange = createEvent(this, "bhPageChange");
87
+ this.bhPageSizeChange = createEvent(this, "bhPageSizeChange");
88
+ }
89
+ /**
90
+ * Current page (1-indexed)
91
+ */
92
+ page = 1;
93
+ /**
94
+ * Total number of items
95
+ */
96
+ totalItems = 0;
97
+ /**
98
+ * Number of items per page
99
+ */
100
+ pageSize = 10;
101
+ /**
102
+ * Available page size options
103
+ */
104
+ pageSizeOptions = [10, 25, 50, 100];
105
+ /**
106
+ * Show page size selector
107
+ */
108
+ showPageSizeSelector = true;
109
+ /**
110
+ * Show item count info (e.g., "Showing 1 to 10 of 100 results")
111
+ */
112
+ showItemCount = true;
113
+ /**
114
+ * Compact mode - shows input field instead of page numbers
115
+ */
116
+ compact = false;
117
+ /**
118
+ * Maximum number of page numbers to show (for non-compact mode)
119
+ */
120
+ maxPageNumbers = 5;
121
+ /**
122
+ * Whether the pagination is disabled
123
+ */
124
+ disabled = false;
125
+ /**
126
+ * Label for "Rows per page" text (for i18n)
127
+ */
128
+ rowsPerPageLabel = 'Rows per page:';
129
+ /**
130
+ * Label template for showing results (use {start}, {end}, {total} placeholders)
131
+ */
132
+ showingResultsLabel = 'Showing {start} to {end} of {total} results';
133
+ /**
134
+ * Label template for page info when total items unknown (use {page}, {totalPages} placeholders)
135
+ */
136
+ pageInfoLabel = 'Page {page} of {totalPages}';
137
+ internalPage = 1;
138
+ internalPageSize = 10;
139
+ /**
140
+ * Emitted when the page changes
141
+ */
142
+ bhPageChange;
143
+ /**
144
+ * Emitted when page size changes
145
+ */
146
+ bhPageSizeChange;
147
+ componentWillLoad() {
148
+ this.internalPage = this.page;
149
+ this.internalPageSize = this.pageSize;
150
+ }
151
+ get totalPages() {
152
+ return Math.max(1, Math.ceil(this.totalItems / this.internalPageSize));
153
+ }
154
+ get startItem() {
155
+ if (this.totalItems === 0)
156
+ return 0;
157
+ return (this.internalPage - 1) * this.internalPageSize + 1;
158
+ }
159
+ get endItem() {
160
+ return Math.min(this.internalPage * this.internalPageSize, this.totalItems);
161
+ }
162
+ get canGoPrevious() {
163
+ return this.internalPage > 1 && !this.disabled;
164
+ }
165
+ get canGoNext() {
166
+ return this.internalPage < this.totalPages && !this.disabled;
167
+ }
168
+ goToPage(newPage) {
169
+ if (this.disabled)
170
+ return;
171
+ const page = Math.max(1, Math.min(newPage, this.totalPages));
172
+ if (page !== this.internalPage) {
173
+ this.internalPage = page;
174
+ this.page = page;
175
+ this.bhPageChange.emit({ page, pageSize: this.internalPageSize });
176
+ }
177
+ }
178
+ handlePageSizeChange(event) {
179
+ if (this.disabled)
180
+ return;
181
+ const select = event.target;
182
+ const newPageSize = parseInt(select.value, 10);
183
+ if (newPageSize !== this.internalPageSize) {
184
+ this.internalPageSize = newPageSize;
185
+ this.pageSize = newPageSize;
186
+ // Reset to page 1 when page size changes, or adjust if current page is now out of bounds
187
+ const newTotalPages = Math.max(1, Math.ceil(this.totalItems / newPageSize));
188
+ const newPage = Math.min(this.internalPage, newTotalPages);
189
+ if (newPage !== this.internalPage) {
190
+ this.internalPage = newPage;
191
+ this.page = newPage;
192
+ }
193
+ this.bhPageSizeChange.emit({
194
+ page: this.internalPage,
195
+ pageSize: newPageSize,
196
+ });
197
+ }
198
+ }
199
+ goToPrevious = () => this.goToPage(this.internalPage - 1);
200
+ goToNext = () => this.goToPage(this.internalPage + 1);
201
+ handlePageInputChange(event) {
202
+ const input = event.target;
203
+ const pageNumber = parseInt(input.value, 10);
204
+ if (!isNaN(pageNumber)) {
205
+ this.goToPage(pageNumber);
206
+ }
207
+ }
208
+ getPageNumbers() {
209
+ const totalPages = this.totalPages;
210
+ const currentPage = this.internalPage;
211
+ const maxPages = this.maxPageNumbers;
212
+ if (totalPages <= maxPages) {
213
+ return Array.from({ length: totalPages }, (_, i) => i + 1);
214
+ }
215
+ const pages = [];
216
+ const half = Math.floor(maxPages / 2);
217
+ let start = Math.max(1, currentPage - half);
218
+ let end = Math.min(totalPages, start + maxPages - 1);
219
+ // Adjust start if we're near the end
220
+ if (end - start < maxPages - 1) {
221
+ start = Math.max(1, end - maxPages + 1);
222
+ }
223
+ for (let i = start; i <= end; i++) {
224
+ pages.push(i);
225
+ }
226
+ return pages;
227
+ }
228
+ getInfoText() {
229
+ if (this.totalItems === 0) {
230
+ return 'No results';
231
+ }
232
+ if (this.showItemCount && this.totalItems > 0) {
233
+ return this.showingResultsLabel
234
+ .replace('{start}', String(this.startItem))
235
+ .replace('{end}', String(this.endItem))
236
+ .replace('{total}', String(this.totalItems));
237
+ }
238
+ return this.pageInfoLabel
239
+ .replace('{page}', String(this.internalPage))
240
+ .replace('{totalPages}', String(this.totalPages));
241
+ }
242
+ renderPageNumbers() {
243
+ if (this.compact) {
244
+ // Compact mode: Page X of Y
245
+ return (h("div", { class: "pagination-page-display" }, h("span", { class: "pagination-page-text" }, "Page"), h("input", { type: "number", class: "pagination-page-input", value: String(this.internalPage), min: "1", max: String(this.totalPages), disabled: this.disabled, onChange: (e) => this.handlePageInputChange(e), "aria-label": "Page number" }), h("span", { class: "pagination-page-text" }, "of ", this.totalPages)));
246
+ }
247
+ // Non-compact mode: numbered buttons
248
+ const pageNumbers = this.getPageNumbers();
249
+ const showStartEllipsis = pageNumbers[0] > 1;
250
+ const showEndEllipsis = pageNumbers[pageNumbers.length - 1] < this.totalPages;
251
+ return (h("div", { class: "pagination-pages" }, showStartEllipsis &&
252
+ pageNumbers[0] > 2 && [
253
+ h("button", { type: "button", class: "pagination-page-btn", onClick: () => this.goToPage(1), disabled: this.disabled, "aria-label": "Go to page 1", key: "page-1" }, "1"),
254
+ h("span", { class: "pagination-ellipsis", key: "ellipsis-start" }, "..."),
255
+ ], pageNumbers.map((pageNum) => (h("button", { type: "button", class: {
256
+ 'pagination-page-btn': true,
257
+ 'pagination-page-btn-active': pageNum === this.internalPage,
258
+ }, onClick: () => this.goToPage(pageNum), disabled: this.disabled, "aria-label": `Go to page ${pageNum}`, "aria-current": pageNum === this.internalPage ? 'page' : undefined, key: `page-${pageNum}` }, pageNum))), showEndEllipsis &&
259
+ pageNumbers[pageNumbers.length - 1] < this.totalPages - 1 && [
260
+ h("span", { class: "pagination-ellipsis", key: "ellipsis-end" }, "..."),
261
+ h("button", { type: "button", class: "pagination-page-btn", onClick: () => this.goToPage(this.totalPages), disabled: this.disabled, "aria-label": `Go to page ${this.totalPages}`, key: `page-${this.totalPages}` }, this.totalPages),
262
+ ]));
263
+ }
264
+ render() {
265
+ const paginationClasses = {
266
+ pagination: true,
267
+ 'pagination-disabled': this.disabled,
268
+ 'pagination-compact': this.compact,
269
+ };
270
+ return (h("div", { key: '6d6af19e9b034f162c8aa0cb68d6e9ecdb8b4379', class: paginationClasses, role: "navigation", "aria-label": "Pagination" }, h("div", { key: 'db25c2a72f58170e01c056e3bebb7ecdb2c542d4', class: "pagination-controls" }, this.showPageSizeSelector && (h("div", { key: '70c08c54eb6466cecf11e847a260fc2fc7cfc5d7', class: "pagination-page-size" }, h("span", { key: 'f4440ea7825c078475859f3ea4c61dcffa1c5377', class: "pagination-page-size-label" }, this.rowsPerPageLabel), h("select", { key: '00afde5da29dcb405be13ae72e1964a9b35d8b37', class: "pagination-select", onChange: (e) => this.handlePageSizeChange(e), disabled: this.disabled, "aria-label": "Select page size" }, this.pageSizeOptions.map((size) => (h("option", { key: size, value: String(size), selected: size === this.internalPageSize }, size)))))), h("div", { key: '9a67b12e3f99ac14d78c258d152a5520f93d4578', class: "pagination-nav" }, h("button", { key: '7df0dcc92fe17ee8be2dd01c1b09b7781a5b4909', type: "button", class: "pagination-btn", onClick: this.goToPrevious, disabled: !this.canGoPrevious, "aria-label": "Go to previous page" }, h("span", { key: '28a2db05556dd973ec0418e116f5773e669a2066', class: "material-symbols-outlined" }, "chevron_left")), this.renderPageNumbers(), h("button", { key: 'ebf00789de88ee1e40d658dd8a874f0fb36eec70', type: "button", class: "pagination-btn", onClick: this.goToNext, disabled: !this.canGoNext, "aria-label": "Go to next page" }, h("span", { key: '9f8865e63ec0f68fecaa7475b76118857d263f67', class: "material-symbols-outlined" }, "chevron_right")))), this.showItemCount && (h("div", { key: 'ec5b745d761b38953654a7127d8f714c40e9de9d', class: "pagination-info" }, h("span", { key: 'abf649c0642981cdd0e7dfba0065735a0ed2cdf2', class: "pagination-info-text" }, this.getInfoText())))));
271
+ }
272
+ };
273
+ BhPagination.style = bhPaginationCss;
274
+
275
+ const bhSkeletonLoaderCss = ":host{display:inline-block;vertical-align:middle}.skeleton{display:block;min-width:20px;min-height:8px;background:linear-gradient(\n 90deg,\n var(--color-neutral-200, #e2e4eb) 25%,\n var(--color-neutral-100, #f0f1f5) 50%,\n var(--color-neutral-200, #e2e4eb) 75%\n );background-size:400% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-sm, 4px)}.skeleton-circle{border-radius:50%;aspect-ratio:1}@keyframes shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}";
83
276
 
84
277
  const BhSkeletonLoader = class {
85
278
  constructor(hostRef) {
@@ -99,13 +292,13 @@ const BhSkeletonLoader = class {
99
292
  circle = false;
100
293
  render() {
101
294
  const skeletonClasses = {
102
- 'skeleton': true,
295
+ skeleton: true,
103
296
  'skeleton-circle': this.circle,
104
297
  };
105
- return (h("span", { key: 'db0a5cf09470b6bd54d8e8aa8f9a19e35bc0f949', class: skeletonClasses, style: { width: this.width, height: this.height }, role: "status", "aria-live": "polite", "aria-busy": "true", part: "skeleton" }, h("span", { key: '2e21ff7d34283aaef05044985e05a565df7f06d7', class: "visually-hidden" }, "Loading...")));
298
+ return (h("span", { key: 'bcac717791cecbef8060b19c17f470b7e35c99a0', class: skeletonClasses, style: { width: this.width, height: this.height }, role: "status", "aria-live": "polite", "aria-busy": "true", "aria-label": "Loading", part: "skeleton" }));
106
299
  }
107
300
  };
108
301
  BhSkeletonLoader.style = bhSkeletonLoaderCss;
109
302
 
110
- export { BhEmptyState as bh_empty_state, BhSkeletonLoader as bh_skeleton_loader };
303
+ export { BhEmptyState as bh_empty_state, BhPagination as bh_pagination, BhSkeletonLoader as bh_skeleton_loader };
111
304
  //# sourceMappingURL=bh-empty-state.bh-pagination.bh-skeleton-loader.entry.js.map
@@ -30,7 +30,7 @@ const BhFeaturedIcon = class {
30
30
  [`featured-icon-${this.iconStyle}`]: true,
31
31
  };
32
32
  const iconClasses = `material-symbols-outlined icon-${this.size}`;
33
- return (h("div", { key: '93ed57fa603fa36d0eb2ddcfa83895f3b5969083', class: containerClasses, part: "container" }, h("span", { key: '5dd3699dba085ab2e9b8a2d76318edae8e1b8cba', class: iconClasses }, this.icon)));
33
+ return (h("div", { key: 'ee3492ab0b0ce3b0b877a36e1b7eb57ce6a3c62a', class: containerClasses, part: "container" }, h("span", { key: '3708b8926e679cb8cb4d3ab77d7dcaa32ab45606', class: iconClasses }, this.icon)));
34
34
  }
35
35
  };
36
36
  BhFeaturedIcon.style = bhFeaturedIconCss;
@@ -48,13 +48,13 @@ const BhIllustrations = class {
48
48
  }
49
49
  render() {
50
50
  const dimensions = this.getSvgDimensions();
51
- return (h(Host, { key: '3de29d491a6ca150687d9ee0aaaac249d60cc966' }, h("div", { key: '03fe38b304e4f6f33018e29e3049ba32adc0dc5d', class: `illustration illustration-${this.size}` }, h("div", { key: '49ccf2fd59aee6ed12ae6a341732b98dbc39f60e', class: "illustration-wrapper" }, h("div", { key: '0f16a287aa62f2c0f44b08b92434c4495d140c56', class: "illustration-svg-container", style: {
51
+ return (h(Host, { key: 'a65f72ad086e4aba6f45d9d4761c5e8495a59116' }, h("div", { key: 'c9d598b91411a2ab81e39575626b241c9bdaac1c', class: `illustration illustration-${this.size}` }, h("div", { key: '8e079efbba6bdbb17d7aeac8f1ea7fd7dbfd140f', class: "illustration-wrapper" }, h("div", { key: 'fb169e6536938a5e1677fd2c5ba71c88bf016fb5', class: "illustration-svg-container", style: {
52
52
  width: `${dimensions.width}px`,
53
53
  height: `${dimensions.height}px`,
54
- } }, h("img", { key: '1452a2a5215e1392bea453a1e06590e66c070370', src: this.svgPath, alt: this.alt, style: {
54
+ } }, h("img", { key: '33cd687f5c55e1d16b520ef32e7ff736bf016ec2', src: this.svgPath, alt: this.alt, style: {
55
55
  width: `${dimensions.width}px`,
56
56
  height: `${dimensions.height}px`,
57
- }, class: "illustration-image" })), (this.illustrationTitle || this.description) && (h("div", { key: '5d57a72b5fa2537061212a20182a4b8802435ca9', class: "illustration-content" }, this.illustrationTitle && (h("h3", { key: '32e360bc3e5f033004a02e72f588066324a50781', class: "illustration-title" }, this.illustrationTitle)), this.description && (h("p", { key: '32b2d8ea6272362145e5de4ea6077f5ca6fb2373', class: "illustration-description" }, this.description))))))));
57
+ }, class: "illustration-image" })), (this.illustrationTitle || this.description) && (h("div", { key: 'd9e18081075c91a3f5f89e2369c9f1d3ac66b1a8', class: "illustration-content" }, this.illustrationTitle && (h("h3", { key: '95ce4ff7a15a732ef24622619dbcb5ee3f26ab79', class: "illustration-title" }, this.illustrationTitle)), this.description && (h("p", { key: 'c5afd2f4409c3f27decbc6303cc91e54dc72a33f', class: "illustration-description" }, this.description))))))));
58
58
  }
59
59
  };
60
60
  BhIllustrations.style = bhIllustrationsCss;
@@ -307,7 +307,7 @@ const BhInputAutocomplete = class {
307
307
  };
308
308
  render() {
309
309
  const { tags, remaining } = this.visibleTags;
310
- return (h(Host, { key: '05045fca42459813e1d147d76378d9a5ab1a12a9' }, h("div", { key: '88d4f3afbececb7ddb3b53f122bd4e650405f377', class: "input-autocomplete-wrapper", style: { width: this.width }, onKeyDown: this.handleKeyDown }, this.multiSelect ? (
310
+ return (h(Host, { key: 'e81afafc3d2d63b506f5ec011cf79576f7fb2eb4' }, h("div", { key: '88dbe305509a53562b58b227393a21df41a57b0b', class: "input-autocomplete-wrapper", style: { width: this.width }, onKeyDown: this.handleKeyDown }, this.multiSelect ? (
311
311
  // Multi-select input with flowing tags
312
312
  h("div", { class: "input-wrapper" }, h("bh-label", { label: this.showLabel ? this.label : '', required: this.required, showHelpIcon: this.showHelpIcon, helpIconTooltip: this.helpIconTooltip, disabled: this.disabled, onBhHelpClick: () => this.bhHelpClick.emit() }, h("div", { class: {
313
313
  'input-field': true,
@@ -328,7 +328,7 @@ const BhInputAutocomplete = class {
328
328
  else {
329
329
  this.showDropdown = false;
330
330
  }
331
- }, onBhFocus: this.handleInputFocus, onBhBlur: this.handleInputBlur, onBhHelpClick: () => this.bhHelpClick.emit() })), h("bh-autocomplete-menu", { key: 'a172ea13dcff3f03895384d83270333a1325870b', visible: this.showDropdown, menuItems: this.filteredOptions, selectedIndex: this.focusedOptionIndex, multiSelect: this.multiSelect, searchQuery: this.value, onBhItemClick: this.handleOptionSelect, onBhItemHover: this.handleItemHover }))));
331
+ }, onBhFocus: this.handleInputFocus, onBhBlur: this.handleInputBlur, onBhHelpClick: () => this.bhHelpClick.emit() })), h("bh-autocomplete-menu", { key: '751e691d384b9db87a91c1f92b85def4ec4191bf', visible: this.showDropdown, menuItems: this.filteredOptions, selectedIndex: this.focusedOptionIndex, multiSelect: this.multiSelect, searchQuery: this.value, onBhItemClick: this.handleOptionSelect, onBhItemHover: this.handleItemHover }))));
332
332
  }
333
333
  static get watchers() { return {
334
334
  "value": ["handleValueChange"]
@@ -292,7 +292,7 @@ const BhInputNumber = class {
292
292
  const wrapperStyle = this.width ? { width: this.width } : {};
293
293
  const isDecrementDisabled = this.disabled || (this.min !== null && this.currentValue !== null && this.currentValue <= this.min);
294
294
  const isIncrementDisabled = this.disabled || (this.max !== null && this.currentValue !== null && this.currentValue >= this.max);
295
- return (h("div", { key: '5a62ac405a4dab08e3d7ec641db1336d957bd63c', class: "input-wrapper", style: wrapperStyle }, h("bh-label", { key: '1f6fd79e83ced0e705dca9ef25caa27b9a20e79c', label: this.showLabel ? this.label : '', required: this.required, showHelpIcon: this.showHelpIcon, helpIconTooltip: this.helpIconTooltip, disabled: this.disabled, onBhHelpClick: this.handleHelpIconClick }, h("div", { key: 'f918424c4e8775ba557532e1cda647037df5466a', class: inputFieldClasses, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: '61d930d8c8c54bf378f2194fdb104a2eeb314342', class: "input-content" }, this.showLeadingIcon && (h("span", { key: 'aa7ef4bda300371390b62f08d29d92b891853ccc', class: "leading-icon material-symbols-outlined" }, this.leadingIcon)), this.prefixText && h("span", { key: 'e64fa876433e2640d333270950f282e49920910c', class: "prefix-text" }, this.prefixText), h("input", { key: '8839a9db6d5bb05315465bdc1e2c3b073ca8e029', ref: (el) => (this.inputEl = el), type: "number", name: this.name, value: this.currentValue ?? '', placeholder: this.placeholder, disabled: this.disabled, required: this.required, class: `input-element ${textColorClass}`, onInput: this.handleInputChange, onFocus: this.handleInputFocus, onBlur: this.handleInputBlur, min: this.min ?? undefined, max: this.max ?? undefined, step: this.step }), this.suffixText && h("span", { key: '156a5a3928c46f7c35d12aa94ca7de9b4217f662', class: "suffix-text" }, this.suffixText), h("bh-button-icon", { key: '679c52af8ca9aa0033d165d5ded338a5656e00d2', hierarchy: "tertiary", size: "xs", iconName: "remove", disabled: isDecrementDisabled, onClick: this.decrement, "aria-label": "Decrease value" }), h("bh-button-icon", { key: 'f65a5a9dfb1909d77f2106a8920bb5979699e371', hierarchy: "tertiary", size: "xs", iconName: "add", disabled: isIncrementDisabled, onClick: this.increment, "aria-label": "Increase value" })))), this.showHintText && displayHintText && (h("div", { key: '14492378c9e97845b2a4b66834657fac2ccdcd9d', class: { 'hint-text': true, 'hint-error': showError } }, displayHintText))));
295
+ return (h("div", { key: '278d53e1c40a25389d360fc0c75c74894ba755d7', class: "input-wrapper", style: wrapperStyle }, h("bh-label", { key: '733638c957fc4aa55556712746f905085d8786c3', label: this.showLabel ? this.label : '', required: this.required, showHelpIcon: this.showHelpIcon, helpIconTooltip: this.helpIconTooltip, disabled: this.disabled, onBhHelpClick: this.handleHelpIconClick }, h("div", { key: 'b39692fa4e9224fec7812cb15ad23e445315c580', class: inputFieldClasses, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: '886710563725178f4c2aea9d7b1cb0304b86afc6', class: "input-content" }, this.showLeadingIcon && (h("span", { key: 'a7c607795176d55e607bb45cf590765106041997', class: "leading-icon material-symbols-outlined" }, this.leadingIcon)), this.prefixText && h("span", { key: 'be1bdaa9e1d540cbf8c4c6c8345eded50faa761b', class: "prefix-text" }, this.prefixText), h("input", { key: '4b33e8c0f28ec9eb9099848037d06578c75a287b', ref: (el) => (this.inputEl = el), type: "number", name: this.name, value: this.currentValue ?? '', placeholder: this.placeholder, disabled: this.disabled, required: this.required, class: `input-element ${textColorClass}`, onInput: this.handleInputChange, onFocus: this.handleInputFocus, onBlur: this.handleInputBlur, min: this.min ?? undefined, max: this.max ?? undefined, step: this.step }), this.suffixText && h("span", { key: '39bb772ac5601880f6cfbe66cfd9ecb121ee75fa', class: "suffix-text" }, this.suffixText), h("bh-button-icon", { key: '13a6c1d77202da25ff3e344e2128fc0115141d71', hierarchy: "tertiary", size: "xs", iconName: "remove", disabled: isDecrementDisabled, onClick: this.decrement, "aria-label": "Decrease value" }), h("bh-button-icon", { key: '89e9b8ba1ea59ae10a6444e9da1a6531110b28a7', hierarchy: "tertiary", size: "xs", iconName: "add", disabled: isIncrementDisabled, onClick: this.increment, "aria-label": "Increase value" })))), this.showHintText && displayHintText && (h("div", { key: 'd700dd86aab27b1987865252d47054c3002f3ac5', class: { 'hint-text': true, 'hint-error': showError } }, displayHintText))));
296
296
  }
297
297
  static get formAssociated() { return true; }
298
298
  static get watchers() { return {
@@ -170,7 +170,7 @@ const BhInputPassword = class {
170
170
  'input-container-disabled': this.disabled,
171
171
  'input-container-with-leading': this.showLeadingIcon,
172
172
  };
173
- return (h("div", { key: 'd51c7f8940ebc898eca8c23b81da07e82f1d03ca', class: "input-wrapper", part: "wrapper" }, h("bh-label", { key: 'ff33a1389aee608c4dff434f0725c7e2daefee22', label: this.showLabel ? this.label : '', required: this.required, showHelpIcon: this.showHelpIcon, helpIconTooltip: this.helpIconTooltip, disabled: this.disabled, onBhHelpClick: this.handleHelpClick }, h("div", { key: '87cdc44632f27ed2d20254a5243383a1bb6e95b0', class: containerClasses, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: '3632843a862f49e17bbbfd56488436cb412c5551', class: "input-content" }, this.showLeadingIcon && (h("span", { key: 'd06f51f0e59874803a54e500c81edddd27c3277c', class: "material-symbols-outlined leading-icon" }, this.leadingIcon)), h("input", { key: '64fece5c291e21d4f03834918d527a4da83ac95b', ref: (el) => (this.inputEl = el), type: this.showPassword ? 'text' : 'password', class: "input-element", name: this.name, value: this.value, placeholder: this.placeholder, disabled: this.disabled, required: this.required, "aria-label": this.label, "aria-describedby": this.showHintText && this.hintText ? 'hint-text' : undefined, "aria-invalid": String(this.error), onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, part: "input" })), h("span", { key: '1777e0f5bdcfb92e67f9540cf81b1d2179f8de09', class: "material-symbols-outlined visibility-toggle", onClick: this.togglePasswordVisibility, title: this.showPassword ? 'Hide password' : 'Show password' }, this.showPassword ? 'visibility_off' : 'visibility'))), this.showHintText && this.hintText && (h("div", { key: '2fe43741a8441ea24d971ddd2eb0545e355ac228', class: { 'hint-text': true, 'hint-error': this.error }, id: "hint-text" }, this.hintText))));
173
+ return (h("div", { key: 'b0f1849104b9b3c267b96c9c427e786198433a27', class: "input-wrapper", part: "wrapper" }, h("bh-label", { key: '3d97d6de33b22773bf8ff33b56f8ed1270a41e25', label: this.showLabel ? this.label : '', required: this.required, showHelpIcon: this.showHelpIcon, helpIconTooltip: this.helpIconTooltip, disabled: this.disabled, onBhHelpClick: this.handleHelpClick }, h("div", { key: '80094721d20951e535b5902123e3cf7a87882f87', class: containerClasses, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: '2e1690d931ad132a0ed287788b7b88d918acb860', class: "input-content" }, this.showLeadingIcon && (h("span", { key: '644e17275dbe35d64ef4763f3fb7e3642bddfd9f', class: "material-symbols-outlined leading-icon" }, this.leadingIcon)), h("input", { key: '43380adf6440a4d4165fdfff41b7fde568c5b8db', ref: (el) => (this.inputEl = el), type: this.showPassword ? 'text' : 'password', class: "input-element", name: this.name, value: this.value, placeholder: this.placeholder, disabled: this.disabled, required: this.required, "aria-label": this.label, "aria-describedby": this.showHintText && this.hintText ? 'hint-text' : undefined, "aria-invalid": String(this.error), onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, part: "input" })), h("span", { key: 'f37e871f12c2f86ce83aaa67b3c430628cc497a4', class: "material-symbols-outlined visibility-toggle", onClick: this.togglePasswordVisibility, title: this.showPassword ? 'Hide password' : 'Show password' }, this.showPassword ? 'visibility_off' : 'visibility'))), this.showHintText && this.hintText && (h("div", { key: 'f0f0afa574cfabc38716c5546fcc55b3168a06a2', class: { 'hint-text': true, 'hint-error': this.error }, id: "hint-text" }, this.hintText))));
174
174
  }
175
175
  static get formAssociated() { return true; }
176
176
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bh-input-text.bh-picker-menu.entry.js","sources":["src/components/bh-input-text/bh-input-text.css?tag=bh-input-text&encapsulation=shadow","src/components/bh-input-text/bh-input-text.tsx","src/components/bh-picker-menu/bh-picker-menu.css?tag=bh-picker-menu&encapsulation=shadow","src/components/bh-picker-menu/bh-picker-menu.tsx"],"sourcesContent":[":host {\n display: block;\n font-family: var(\n --font-inter,\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n sans-serif\n );\n}\n\n/* Input Wrapper */\n.input-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm, 8px);\n width: 100%;\n}\n\n/* Input Container */\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--spacing-md, 12px);\n padding: var(--spacing-md, 12px);\n height: 36px;\n width: 100%;\n background: var(--color-white, #ffffff);\n border: 1px solid var(--color-neutral-300, #d0d5dd);\n border-radius: var(--spacing-md, 8px);\n transition: all 0.2s ease-in-out;\n cursor: text;\n box-sizing: border-box;\n}\n\n.input-container.input-container-with-leading {\n padding: var(--spacing-md, 12px) var(--spacing-lg, 16px);\n}\n\n/* Input States */\n.input-container.input-container-hover {\n border-color: var(--color-brand-500, #7f56d9);\n}\n\n.input-container.input-container-focused {\n border-color: var(--color-brand-500, #7f56d9);\n box-shadow: 0 0 0 1px var(--color-brand-500, #7f56d9);\n}\n\n.input-container.input-container-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: var(--color-neutral-50, #f9fafb);\n}\n\n.input-container.input-container-error {\n border-color: var(--color-error-300, #fda29b);\n}\n\n.input-container.input-container-error.input-container-hover {\n border-color: var(--color-error-500, #f05250);\n}\n\n.input-container.input-container-error.input-container-focused {\n border-color: var(--color-brand-600, #6941c6);\n}\n\n/* Input Content */\n.input-content {\n display: flex;\n align-items: center;\n gap: var(--spacing-md, 12px);\n flex: 1;\n height: 100%;\n min-width: 0;\n}\n\n/* Input Element */\n.input-element {\n flex: 1;\n height: 100%;\n border: none;\n outline: none;\n background: transparent;\n font-family: inherit;\n font-weight: 400;\n font-size: var(--text-sm-size, 14px);\n line-height: 1.43;\n color: var(--color-neutral-800, #1d2939);\n min-width: 60px;\n padding: 0;\n}\n\n.input-element:focus {\n outline: none;\n border: none;\n box-shadow: none;\n}\n\n.input-element::placeholder {\n color: var(--color-neutral-500, #667085);\n}\n\n.input-element:disabled {\n cursor: not-allowed;\n}\n\n/* Icons */\n.leading-icon,\n.trailing-icon {\n font-size: var(--text-xl-size, 20px);\n color: var(--color-neutral-500, #667085);\n user-select: none;\n flex-shrink: 0;\n cursor: default;\n transition: color 0.2s ease-in-out;\n}\n\n.input-container-focused .leading-icon,\n.input-container-focused .trailing-icon {\n color: var(--color-brand-600, #6941c6);\n}\n\n/* Hint Text */\n.hint-text {\n font-family: inherit;\n font-weight: 400;\n font-size: var(--text-sm-size, 14px);\n line-height: 1.43;\n color: var(--color-neutral-600, #475467);\n}\n\n.hint-text.hint-error {\n color: var(--color-error-600, #dc2626);\n}\n\n/* Material Symbols */\n.material-symbols-outlined {\n font-family: 'Material Symbols Outlined';\n font-weight: normal;\n font-style: normal;\n font-size: 20px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n}\n","import { Component, Prop, State, Event, EventEmitter, h, AttachInternals } from '@stencil/core';\nimport { syncFormValue, updateValidity } from '../../utils/form';\n\n@Component({\n tag: 'bh-input-text',\n styleUrl: 'bh-input-text.css',\n shadow: true,\n formAssociated: true,\n})\nexport class BhInputText {\n @AttachInternals() internals!: ElementInternals;\n\n private inputEl?: HTMLInputElement;\n /**\n * The label for the input\n */\n @Prop() label: string = 'Email';\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string = 'fujiwara@act-hq.com';\n\n /**\n * Hint text shown below the input\n */\n @Prop() hintText: string = '';\n\n /**\n * Whether to show the label\n */\n @Prop() showLabel: boolean = true;\n\n /**\n * Whether to show hint text\n */\n @Prop() showHintText: boolean = true;\n\n /**\n * Whether to show the help icon\n */\n @Prop() showHelpIcon: boolean = false;\n\n /**\n * Whether to show a leading icon\n */\n @Prop() showLeadingIcon: boolean = false;\n\n /**\n * Whether to show a trailing icon\n */\n @Prop() showTrailingIcon: boolean = false;\n\n /**\n * Whether the field has an error\n */\n @Prop() error: boolean = false;\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the field is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Tooltip text for the help icon\n */\n @Prop() helpIconTooltip: string = 'Help';\n\n /**\n * Leading icon name (Material Symbols)\n */\n @Prop() leadingIcon: string = 'mail';\n\n /**\n * Trailing icon name (Material Symbols)\n */\n @Prop() trailingIcon: string = 'search';\n\n /**\n * The input value\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Name attribute for form submission\n */\n @Prop() name: string = '';\n\n /**\n * Default value for form reset\n */\n @Prop() defaultValue: string = '';\n\n /**\n * Custom validation message\n */\n @Prop() validationMessage: string = '';\n\n /**\n * Input type (text, email, tel, url, etc.)\n */\n @Prop() type: string = 'text';\n\n /**\n * Width of the input (e.g., '100%', '200px')\n */\n @Prop() width: string = '';\n\n /**\n * Whether the input is read-only\n */\n @Prop() readOnly: boolean = false;\n\n /**\n * Visual state of the input (for programmatic control)\n */\n @Prop() state: 'default' | 'error' | 'disabled' | 'focus' | 'filled' | 'hover' = 'default';\n\n /**\n * Track focus state\n */\n @State() isFocused: boolean = false;\n\n /**\n * Track hover state\n */\n @State() isHovered: boolean = false;\n\n /**\n * Emitted when the value changes\n */\n @Event() bhInput!: EventEmitter<string>;\n\n /**\n * Emitted when the input gains focus\n */\n @Event() bhFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the input loses focus\n */\n @Event() bhBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the help icon is clicked\n */\n @Event() bhHelpClick!: EventEmitter<void>;\n\n private handleInput = (event: Event): void => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.bhInput.emit(this.value);\n syncFormValue(this);\n updateValidity(this.internals, this.inputEl, this.validationMessage);\n };\n\n componentDidLoad() {\n syncFormValue(this);\n updateValidity(this.internals, this.inputEl, this.validationMessage);\n }\n\n formResetCallback() {\n this.value = this.defaultValue;\n if (this.inputEl) {\n this.inputEl.value = this.defaultValue;\n }\n syncFormValue(this);\n updateValidity(this.internals, this.inputEl);\n }\n\n private handleFocus = (): void => {\n this.isFocused = true;\n this.bhFocus.emit();\n };\n\n private handleBlur = (): void => {\n this.isFocused = false;\n this.bhBlur.emit();\n };\n\n private handleMouseEnter = (): void => {\n if (!this.isFocused) {\n this.isHovered = true;\n }\n };\n\n private handleMouseLeave = (): void => {\n this.isHovered = false;\n };\n\n private handleHelpClick = (): void => {\n this.bhHelpClick.emit();\n };\n\n render() {\n const containerClasses = {\n 'input-container': true,\n 'input-container-focused': this.isFocused,\n 'input-container-hover': this.isHovered && !this.isFocused,\n 'input-container-error': this.error,\n 'input-container-disabled': this.disabled,\n 'input-container-with-leading': this.showLeadingIcon,\n };\n\n const wrapperStyle = this.width ? { width: this.width } : {};\n\n return (\n <div class=\"input-wrapper\" part=\"wrapper\" style={wrapperStyle}>\n <bh-label\n label={this.showLabel ? this.label : ''}\n required={this.required}\n showHelpIcon={this.showHelpIcon}\n helpIconTooltip={this.helpIconTooltip}\n disabled={this.disabled}\n onBhHelpClick={this.handleHelpClick}\n >\n <div\n class={containerClasses}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <div class=\"input-content\">\n {this.showLeadingIcon && (\n <span class=\"material-symbols-outlined leading-icon\">\n {this.leadingIcon}\n </span>\n )}\n <input\n ref={(el) => (this.inputEl = el)}\n type={this.type}\n class=\"input-element\"\n name={this.name}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readOnly={this.readOnly}\n required={this.required}\n aria-label={this.label}\n aria-describedby={\n this.showHintText && this.hintText ? 'hint-text' : undefined\n }\n aria-invalid={String(this.error)}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n part=\"input\"\n />\n {this.showTrailingIcon && (\n <span class=\"material-symbols-outlined trailing-icon\">\n {this.trailingIcon}\n </span>\n )}\n </div>\n </div>\n </bh-label>\n\n {this.showHintText && this.hintText && (\n <div\n class={{ 'hint-text': true, 'hint-error': this.error }}\n id=\"hint-text\"\n >\n {this.hintText}\n </div>\n )}\n </div>\n );\n }\n}\n","@import '../../global/global.css';\n\n:host {\n display: block;\n}\n\n/* Base picker menu styles - matching dropdown menu */\n.picker-menu {\n width: fit-content;\n min-width: 320px;\n background: var(--color-white);\n border-radius: var(--radius-md);\n box-shadow: 0px 32px 64px -12px rgba(64, 73, 104, 0.14),\n 0px 0px 1px 1px rgba(64, 73, 104, 0.1);\n border: 1px solid var(--color-neutral-200);\n overflow: hidden;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n}\n\n/* Animation classes */\n.picker-menu.animate-dropdown-enter {\n animation: dropdownEnter 0.15s ease-out forwards;\n}\n\n.picker-menu.animate-dropdown-exit {\n animation: dropdownExit 0.15s ease-out forwards;\n}\n\n@keyframes dropdownEnter {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes dropdownExit {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-8px);\n }\n}\n\n/* No footer variant */\n.picker-menu.no-footer {\n padding-bottom: var(--spacing-md);\n}\n\n/* Footer - following dropdown menu pattern */\n.picker-menu-footer {\n border-top: 1px solid var(--color-neutral-200);\n padding: var(--spacing-xl) var(--spacing-xl);\n background: var(--color-white);\n}\n\n.picker-menu-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-lg);\n}\n\n/* When today button is present, use space-between layout */\n.picker-menu-actions.has-today-button {\n justify-content: space-between;\n}\n\n.picker-menu-main-actions {\n display: flex;\n gap: var(--spacing-lg);\n}\n","import { Component, Prop, State, Event, EventEmitter, Watch, h, Host } from '@stencil/core';\nimport { MonthYear, DisabledMonth } from '../bh-month-picker-content/bh-month-picker-content';\n\n@Component({\n tag: 'bh-picker-menu',\n styleUrl: 'bh-picker-menu.css',\n shadow: true,\n})\nexport class BhPickerMenu {\n /**\n * Minimum year in the picker\n */\n @Prop() minYear: number = 1998;\n\n /**\n * Maximum year in the picker\n */\n @Prop() maxYear: number = 2060;\n\n /**\n * Whether the picker is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Array of disabled months\n */\n @Prop() disabledMonths: DisabledMonth[] = [];\n\n /**\n * Animation class for the menu\n */\n @Prop() animationClass: string = 'animate-dropdown-enter';\n\n /**\n * Whether the menu is visible\n */\n @Prop() visible: boolean = true;\n\n /**\n * Whether to show the footer with action buttons\n */\n @Prop() showFooter: boolean = true;\n\n /**\n * Whether to show the today button\n */\n @Prop() showTodayButton: boolean = false;\n\n /**\n * Whether the apply button is disabled\n */\n @Prop() disableApply: boolean = false;\n\n /**\n * Current value\n */\n @Prop() value?: MonthYear;\n\n @State() isClosing: boolean = false;\n @State() shouldRender: boolean = true;\n @State() selectedMonth: number | null = null;\n @State() selectedYear: number | null = null;\n\n /**\n * Event emitted when value changes\n */\n @Event() bhChange!: EventEmitter<MonthYear | null>;\n\n /**\n * Event emitted when a month/year is selected\n */\n @Event() bhMonthYearSelect!: EventEmitter<MonthYear>;\n\n /**\n * Event emitted when cancel is clicked\n */\n @Event() bhCancel!: EventEmitter<void>;\n\n /**\n * Event emitted when apply is clicked\n */\n @Event() bhApply!: EventEmitter<void>;\n\n /**\n * Event emitted when today button is clicked\n */\n @Event() bhToday!: EventEmitter<void>;\n\n @Watch('visible')\n handleVisibleChange(newValue: boolean) {\n if (newValue) {\n this.shouldRender = true;\n this.isClosing = false;\n } else {\n this.isClosing = true;\n setTimeout(() => {\n this.shouldRender = false;\n this.isClosing = false;\n }, 150);\n }\n }\n\n @Watch('value')\n handleValueChange(newValue: MonthYear | undefined) {\n if (newValue) {\n this.selectedMonth = newValue.month;\n this.selectedYear = newValue.year;\n }\n }\n\n componentWillLoad() {\n this.shouldRender = this.visible;\n\n if (this.value) {\n this.selectedMonth = this.value.month;\n this.selectedYear = this.value.year;\n } else {\n // Initialize with current date\n const now = new Date();\n const currentMonth = now.getMonth();\n const currentYear = now.getFullYear();\n\n if (currentYear >= this.minYear && currentYear <= this.maxYear) {\n this.selectedMonth = currentMonth;\n this.selectedYear = currentYear;\n } else if (currentYear < this.minYear) {\n this.selectedYear = this.minYear;\n this.selectedMonth = currentMonth;\n } else {\n this.selectedYear = this.maxYear;\n this.selectedMonth = currentMonth;\n }\n }\n }\n\n private handleMonthYearSelect = (event: CustomEvent<MonthYear>) => {\n const selection = event.detail;\n this.selectedMonth = selection.month;\n this.selectedYear = selection.year;\n this.bhChange.emit(selection);\n this.bhMonthYearSelect.emit(selection);\n };\n\n private handleCancel = () => {\n this.bhCancel.emit();\n };\n\n private handleApply = () => {\n this.bhApply.emit();\n };\n\n private handleToday = () => {\n this.bhToday.emit();\n };\n\n render() {\n if (!this.shouldRender) {\n return null;\n }\n\n const menuClasses = {\n 'picker-menu': true,\n 'animate-dropdown-exit': this.isClosing,\n [this.animationClass]: !this.isClosing,\n 'no-footer': !this.showFooter,\n };\n\n return (\n <Host>\n <div class={menuClasses}>\n {/* Main Content Area - render slot if provided, otherwise MonthPickerContent */}\n <slot>\n <bh-month-picker-content\n minYear={this.minYear}\n maxYear={this.maxYear}\n disabled={this.disabled}\n disabledMonths={this.disabledMonths}\n scrollable={true}\n selectedMonth={this.selectedMonth ?? undefined}\n selectedYear={this.selectedYear ?? undefined}\n onBhChange={this.handleMonthYearSelect}\n ></bh-month-picker-content>\n </slot>\n\n {/* Footer Actions - conditionally rendered */}\n {this.showFooter && (\n <div class=\"picker-menu-footer\">\n <div class={`picker-menu-actions ${this.showTodayButton ? 'has-today-button' : ''}`}>\n {/* Today button on the left */}\n {this.showTodayButton && (\n <bh-button\n hierarchy=\"secondary\"\n size=\"sm\"\n icon=\"only\"\n iconName=\"today\"\n onBhClick={this.handleToday}\n ></bh-button>\n )}\n\n {/* Cancel and Apply buttons always on the right */}\n <div class=\"picker-menu-main-actions\">\n <bh-button\n hierarchy=\"secondary\"\n size=\"sm\"\n label=\"Cancel\"\n onBhClick={this.handleCancel}\n ></bh-button>\n <bh-button\n hierarchy=\"primary\"\n size=\"sm\"\n label=\"Apply\"\n disabled={this.disableApply}\n onBhClick={this.handleApply}\n ></bh-button>\n </div>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bh-input-text.bh-picker-menu.entry.js","sources":["src/components/bh-input-text/bh-input-text.css?tag=bh-input-text&encapsulation=shadow","src/components/bh-input-text/bh-input-text.tsx","src/components/bh-picker-menu/bh-picker-menu.css?tag=bh-picker-menu&encapsulation=shadow","src/components/bh-picker-menu/bh-picker-menu.tsx"],"sourcesContent":[":host {\n display: block;\n font-family: var(\n --font-inter,\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n sans-serif\n );\n}\n\n/* Input Wrapper */\n.input-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm, 8px);\n width: 100%;\n}\n\n/* Input Container */\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--spacing-md, 12px);\n padding: var(--spacing-md, 12px);\n height: 36px;\n width: 100%;\n background: var(--color-white, #ffffff);\n border: 1px solid var(--color-neutral-300, #d0d5dd);\n border-radius: var(--spacing-md, 8px);\n transition: all 0.2s ease-in-out;\n cursor: text;\n box-sizing: border-box;\n}\n\n.input-container.input-container-with-leading {\n padding: var(--spacing-md, 12px) var(--spacing-lg, 16px);\n}\n\n/* Input States */\n.input-container.input-container-hover {\n border-color: var(--color-brand-500, #7f56d9);\n}\n\n.input-container.input-container-focused {\n border-color: var(--color-brand-500, #7f56d9);\n box-shadow: 0 0 0 1px var(--color-brand-500, #7f56d9);\n}\n\n.input-container.input-container-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: var(--color-neutral-50, #f9fafb);\n}\n\n.input-container.input-container-error {\n border-color: var(--color-error-300, #fda29b);\n}\n\n.input-container.input-container-error.input-container-hover {\n border-color: var(--color-error-500, #f05250);\n}\n\n.input-container.input-container-error.input-container-focused {\n border-color: var(--color-brand-600, #6941c6);\n}\n\n/* Input Content */\n.input-content {\n display: flex;\n align-items: center;\n gap: var(--spacing-md, 12px);\n flex: 1;\n height: 100%;\n min-width: 0;\n}\n\n/* Input Element */\n.input-element {\n flex: 1;\n height: 100%;\n border: none;\n outline: none;\n background: transparent;\n font-family: inherit;\n font-weight: 400;\n font-size: var(--text-sm-size, 14px);\n line-height: 1.43;\n color: var(--color-neutral-800, #1d2939);\n min-width: 60px;\n padding: 0;\n}\n\n.input-element:focus {\n outline: none;\n border: none;\n box-shadow: none;\n}\n\n.input-element::placeholder {\n color: var(--color-neutral-500, #667085);\n}\n\n.input-element:disabled {\n cursor: not-allowed;\n}\n\n/* Icons */\n.leading-icon,\n.trailing-icon {\n font-size: var(--text-xl-size, 20px);\n color: var(--color-neutral-500, #667085);\n user-select: none;\n flex-shrink: 0;\n cursor: default;\n transition: color 0.2s ease-in-out;\n}\n\n.input-container-focused .leading-icon,\n.input-container-focused .trailing-icon {\n color: var(--color-brand-600, #6941c6);\n}\n\n/* Hint Text */\n.hint-text {\n font-family: inherit;\n font-weight: 400;\n font-size: var(--text-sm-size, 14px);\n line-height: 1.43;\n color: var(--color-neutral-600, #475467);\n}\n\n.hint-text.hint-error {\n color: var(--color-error-600, #dc2626);\n}\n\n/* Material Symbols */\n.material-symbols-outlined {\n font-family: 'Material Symbols Outlined';\n font-weight: normal;\n font-style: normal;\n font-size: 20px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n}\n","import { Component, Prop, State, Event, EventEmitter, h, AttachInternals } from '@stencil/core';\nimport { syncFormValue, updateValidity } from '../../utils/form';\n\n@Component({\n tag: 'bh-input-text',\n styleUrl: 'bh-input-text.css',\n shadow: true,\n formAssociated: true,\n})\nexport class BhInputText {\n @AttachInternals() internals!: ElementInternals;\n\n private inputEl?: HTMLInputElement;\n /**\n * The label for the input\n */\n @Prop() label: string = 'Email';\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string = 'fujiwara@act-hq.com';\n\n /**\n * Hint text shown below the input\n */\n @Prop() hintText: string = '';\n\n /**\n * Whether to show the label\n */\n @Prop() showLabel: boolean = true;\n\n /**\n * Whether to show hint text\n */\n @Prop() showHintText: boolean = true;\n\n /**\n * Whether to show the help icon\n */\n @Prop() showHelpIcon: boolean = false;\n\n /**\n * Whether to show a leading icon\n */\n @Prop() showLeadingIcon: boolean = false;\n\n /**\n * Whether to show a trailing icon\n */\n @Prop() showTrailingIcon: boolean = false;\n\n /**\n * Whether the field has an error\n */\n @Prop() error: boolean = false;\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the field is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Tooltip text for the help icon\n */\n @Prop() helpIconTooltip: string = 'Help';\n\n /**\n * Leading icon name (Material Symbols)\n */\n @Prop() leadingIcon: string = 'mail';\n\n /**\n * Trailing icon name (Material Symbols)\n */\n @Prop() trailingIcon: string = 'search';\n\n /**\n * The input value\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Name attribute for form submission\n */\n @Prop() name: string = '';\n\n /**\n * Default value for form reset\n */\n @Prop() defaultValue: string = '';\n\n /**\n * Custom validation message\n */\n @Prop() validationMessage: string = '';\n\n /**\n * Input type (text, email, tel, url, etc.)\n */\n @Prop() type: string = 'text';\n\n /**\n * Width of the input (e.g., '100%', '200px')\n */\n @Prop() width: string = '';\n\n /**\n * Whether the input is read-only\n */\n @Prop() readOnly: boolean = false;\n\n /**\n * Visual state of the input (for programmatic control)\n */\n @Prop() state: 'default' | 'error' | 'disabled' | 'focus' | 'filled' | 'hover' = 'default';\n\n /**\n * Track focus state\n */\n @State() isFocused: boolean = false;\n\n /**\n * Track hover state\n */\n @State() isHovered: boolean = false;\n\n /**\n * Emitted when the value changes\n */\n @Event() bhInput!: EventEmitter<string>;\n\n /**\n * Emitted when the input gains focus\n */\n @Event() bhFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the input loses focus\n */\n @Event() bhBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the help icon is clicked\n */\n @Event() bhHelpClick!: EventEmitter<void>;\n\n private handleInput = (event: Event): void => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.bhInput.emit(this.value);\n syncFormValue(this);\n updateValidity(this.internals, this.inputEl, this.validationMessage);\n };\n\n componentDidLoad() {\n syncFormValue(this);\n updateValidity(this.internals, this.inputEl, this.validationMessage);\n }\n\n formResetCallback() {\n this.value = this.defaultValue;\n if (this.inputEl) {\n this.inputEl.value = this.defaultValue;\n }\n syncFormValue(this);\n updateValidity(this.internals, this.inputEl);\n }\n\n private handleFocus = (): void => {\n this.isFocused = true;\n this.bhFocus.emit();\n };\n\n private handleBlur = (): void => {\n this.isFocused = false;\n this.bhBlur.emit();\n };\n\n private handleMouseEnter = (): void => {\n if (!this.isFocused) {\n this.isHovered = true;\n }\n };\n\n private handleMouseLeave = (): void => {\n this.isHovered = false;\n };\n\n private handleHelpClick = (): void => {\n this.bhHelpClick.emit();\n };\n\n render() {\n const containerClasses = {\n 'input-container': true,\n 'input-container-focused': this.isFocused,\n 'input-container-hover': this.isHovered && !this.isFocused,\n 'input-container-error': this.error,\n 'input-container-disabled': this.disabled,\n 'input-container-with-leading': this.showLeadingIcon,\n };\n\n const wrapperStyle = this.width ? { width: this.width } : {};\n\n return (\n <div class=\"input-wrapper\" part=\"wrapper\" style={wrapperStyle}>\n <bh-label\n label={this.showLabel ? this.label : ''}\n required={this.required}\n showHelpIcon={this.showHelpIcon}\n helpIconTooltip={this.helpIconTooltip}\n disabled={this.disabled}\n onBhHelpClick={this.handleHelpClick}\n >\n <div\n class={containerClasses}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <div class=\"input-content\">\n {this.showLeadingIcon && (\n <span class=\"material-symbols-outlined leading-icon\">\n {this.leadingIcon}\n </span>\n )}\n <input\n ref={(el) => (this.inputEl = el)}\n type={this.type}\n class=\"input-element\"\n name={this.name}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readOnly={this.readOnly}\n required={this.required}\n aria-label={this.label}\n aria-describedby={\n this.showHintText && this.hintText ? 'hint-text' : undefined\n }\n aria-invalid={String(this.error)}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n part=\"input\"\n />\n {this.showTrailingIcon && (\n <span class=\"material-symbols-outlined trailing-icon\">\n {this.trailingIcon}\n </span>\n )}\n </div>\n </div>\n </bh-label>\n\n {this.showHintText && this.hintText && (\n <div\n class={{ 'hint-text': true, 'hint-error': this.error }}\n id=\"hint-text\"\n >\n {this.hintText}\n </div>\n )}\n </div>\n );\n }\n}\n","@import '../../global/global.css';\n\n:host {\n display: block;\n}\n\n/* Base picker menu styles - matching dropdown menu */\n.picker-menu {\n width: fit-content;\n min-width: 320px;\n background: var(--color-white);\n border-radius: var(--radius-md);\n box-shadow: var(--shadow-lg); \n overflow: hidden;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n}\n\n/* Animation classes */\n.picker-menu.animate-dropdown-enter {\n animation: dropdownEnter 0.15s ease-out forwards;\n}\n\n.picker-menu.animate-dropdown-exit {\n animation: dropdownExit 0.15s ease-out forwards;\n}\n\n@keyframes dropdownEnter {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes dropdownExit {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-8px);\n }\n}\n\n/* No footer variant */\n.picker-menu.no-footer {\n padding-bottom: var(--spacing-md);\n}\n\n/* Footer - following dropdown menu pattern */\n.picker-menu-footer {\n border-top: 1px solid var(--color-neutral-200);\n padding: var(--spacing-xl) var(--spacing-xl);\n background: var(--color-white);\n}\n\n.picker-menu-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-lg);\n}\n\n/* When today button is present, use space-between layout */\n.picker-menu-actions.has-today-button {\n justify-content: space-between;\n}\n\n.picker-menu-main-actions {\n display: flex;\n gap: var(--spacing-lg);\n}\n","import { Component, Prop, State, Event, EventEmitter, Watch, h, Host } from '@stencil/core';\nimport { MonthYear, DisabledMonth } from '../bh-month-picker-content/bh-month-picker-content';\n\n@Component({\n tag: 'bh-picker-menu',\n styleUrl: 'bh-picker-menu.css',\n shadow: true,\n})\nexport class BhPickerMenu {\n /**\n * Minimum year in the picker\n */\n @Prop() minYear: number = 1998;\n\n /**\n * Maximum year in the picker\n */\n @Prop() maxYear: number = 2060;\n\n /**\n * Whether the picker is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Array of disabled months\n */\n @Prop() disabledMonths: DisabledMonth[] = [];\n\n /**\n * Animation class for the menu\n */\n @Prop() animationClass: string = 'animate-dropdown-enter';\n\n /**\n * Whether the menu is visible\n */\n @Prop() visible: boolean = true;\n\n /**\n * Whether to show the footer with action buttons\n */\n @Prop() showFooter: boolean = true;\n\n /**\n * Whether to show the today button\n */\n @Prop() showTodayButton: boolean = false;\n\n /**\n * Whether the apply button is disabled\n */\n @Prop() disableApply: boolean = false;\n\n /**\n * Current value\n */\n @Prop() value?: MonthYear;\n\n @State() isClosing: boolean = false;\n @State() shouldRender: boolean = true;\n @State() selectedMonth: number | null = null;\n @State() selectedYear: number | null = null;\n\n /**\n * Event emitted when value changes\n */\n @Event() bhChange!: EventEmitter<MonthYear | null>;\n\n /**\n * Event emitted when a month/year is selected\n */\n @Event() bhMonthYearSelect!: EventEmitter<MonthYear>;\n\n /**\n * Event emitted when cancel is clicked\n */\n @Event() bhCancel!: EventEmitter<void>;\n\n /**\n * Event emitted when apply is clicked\n */\n @Event() bhApply!: EventEmitter<void>;\n\n /**\n * Event emitted when today button is clicked\n */\n @Event() bhToday!: EventEmitter<void>;\n\n @Watch('visible')\n handleVisibleChange(newValue: boolean) {\n if (newValue) {\n this.shouldRender = true;\n this.isClosing = false;\n } else {\n this.isClosing = true;\n setTimeout(() => {\n this.shouldRender = false;\n this.isClosing = false;\n }, 150);\n }\n }\n\n @Watch('value')\n handleValueChange(newValue: MonthYear | undefined) {\n if (newValue) {\n this.selectedMonth = newValue.month;\n this.selectedYear = newValue.year;\n }\n }\n\n componentWillLoad() {\n this.shouldRender = this.visible;\n\n if (this.value) {\n this.selectedMonth = this.value.month;\n this.selectedYear = this.value.year;\n } else {\n // Initialize with current date\n const now = new Date();\n const currentMonth = now.getMonth();\n const currentYear = now.getFullYear();\n\n if (currentYear >= this.minYear && currentYear <= this.maxYear) {\n this.selectedMonth = currentMonth;\n this.selectedYear = currentYear;\n } else if (currentYear < this.minYear) {\n this.selectedYear = this.minYear;\n this.selectedMonth = currentMonth;\n } else {\n this.selectedYear = this.maxYear;\n this.selectedMonth = currentMonth;\n }\n }\n }\n\n private handleMonthYearSelect = (event: CustomEvent<MonthYear>) => {\n const selection = event.detail;\n this.selectedMonth = selection.month;\n this.selectedYear = selection.year;\n this.bhChange.emit(selection);\n this.bhMonthYearSelect.emit(selection);\n };\n\n private handleCancel = () => {\n this.bhCancel.emit();\n };\n\n private handleApply = () => {\n this.bhApply.emit();\n };\n\n private handleToday = () => {\n this.bhToday.emit();\n };\n\n render() {\n if (!this.shouldRender) {\n return null;\n }\n\n const menuClasses = {\n 'picker-menu': true,\n 'animate-dropdown-exit': this.isClosing,\n [this.animationClass]: !this.isClosing,\n 'no-footer': !this.showFooter,\n };\n\n return (\n <Host>\n <div class={menuClasses}>\n {/* Main Content Area - render slot if provided, otherwise MonthPickerContent */}\n <slot>\n <bh-month-picker-content\n minYear={this.minYear}\n maxYear={this.maxYear}\n disabled={this.disabled}\n disabledMonths={this.disabledMonths}\n scrollable={true}\n selectedMonth={this.selectedMonth ?? undefined}\n selectedYear={this.selectedYear ?? undefined}\n onBhChange={this.handleMonthYearSelect}\n ></bh-month-picker-content>\n </slot>\n\n {/* Footer Actions - conditionally rendered */}\n {this.showFooter && (\n <div class=\"picker-menu-footer\">\n <div class={`picker-menu-actions ${this.showTodayButton ? 'has-today-button' : ''}`}>\n {/* Today button on the left */}\n {this.showTodayButton && (\n <bh-button\n hierarchy=\"secondary\"\n size=\"sm\"\n icon=\"only\"\n iconName=\"today\"\n onBhClick={this.handleToday}\n ></bh-button>\n )}\n\n {/* Cancel and Apply buttons always on the right */}\n <div class=\"picker-menu-main-actions\">\n <bh-button\n hierarchy=\"secondary\"\n size=\"sm\"\n label=\"Cancel\"\n onBhClick={this.handleCancel}\n ></bh-button>\n <bh-button\n hierarchy=\"primary\"\n size=\"sm\"\n label=\"Apply\"\n disabled={this.disableApply}\n onBhClick={this.handleApply}\n ></bh-button>\n </div>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n\n}\n"],"names":[],"mappings":"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"}