bromcom-ui-next 0.1.13 → 0.1.15

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 (180) hide show
  1. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  2. package/dist/bromcom-ui/{p-88d78cdd.entry.js → p-03be08cc.entry.js} +2 -2
  3. package/dist/bromcom-ui/{p-098c2b77.entry.js → p-0721540b.entry.js} +2 -2
  4. package/dist/bromcom-ui/{p-352a0465.entry.js → p-1be5f78e.entry.js} +2 -2
  5. package/dist/bromcom-ui/p-35559656.entry.js +2 -0
  6. package/dist/bromcom-ui/p-35559656.entry.js.map +1 -0
  7. package/dist/bromcom-ui/{p-36656795.entry.js → p-404e19f9.entry.js} +2 -2
  8. package/dist/bromcom-ui/{p-86feadca.entry.js → p-4106560e.entry.js} +2 -2
  9. package/dist/bromcom-ui/{p-1c2d7a9f.entry.js → p-4149c766.entry.js} +2 -2
  10. package/dist/bromcom-ui/{p-7e9223c8.entry.js → p-42b485a7.entry.js} +2 -2
  11. package/dist/bromcom-ui/{p-fd7f1fa0.entry.js → p-42feef7e.entry.js} +2 -2
  12. package/dist/bromcom-ui/{p-a4148502.entry.js → p-560b2394.entry.js} +2 -2
  13. package/dist/bromcom-ui/{p-c9b1e4ec.entry.js → p-56f1cec8.entry.js} +2 -2
  14. package/dist/bromcom-ui/{p-5cb49a5f.entry.js → p-67ceb7f3.entry.js} +2 -2
  15. package/dist/bromcom-ui/{p-1ad74a16.entry.js → p-77abe8d1.entry.js} +2 -2
  16. package/dist/bromcom-ui/{p-3ef04b27.entry.js → p-7b93985f.entry.js} +2 -2
  17. package/dist/bromcom-ui/{p-25ad3dab.entry.js → p-7e97d4e2.entry.js} +2 -2
  18. package/dist/bromcom-ui/{p-d9dfad58.entry.js → p-7f4cb7a0.entry.js} +2 -2
  19. package/dist/bromcom-ui/{p-3254a2a8.entry.js → p-842b48ae.entry.js} +2 -2
  20. package/dist/bromcom-ui/{p-5f8c6436.entry.js → p-8550a2aa.entry.js} +2 -2
  21. package/dist/bromcom-ui/p-9cb99b5d.entry.js +2 -0
  22. package/dist/bromcom-ui/{p-a4ee16c5.entry.js.map → p-9cb99b5d.entry.js.map} +1 -1
  23. package/dist/bromcom-ui/{p-52ae94e5.entry.js → p-aae240d5.entry.js} +2 -2
  24. package/dist/bromcom-ui/{p-52a20dbc.entry.js → p-adda3b4e.entry.js} +2 -2
  25. package/dist/bromcom-ui/{p-82ba9870.entry.js → p-cbd2f782.entry.js} +2 -2
  26. package/dist/bromcom-ui/p-ddf64315.js.map +1 -1
  27. package/dist/bromcom-ui/{p-a4c27c77.entry.js → p-ea1368b5.entry.js} +2 -2
  28. package/dist/bromcom-ui/{p-604cb620.entry.js → p-fe7e2cfd.entry.js} +2 -2
  29. package/dist/cjs/app-globals-e0eef2e9.js.map +1 -1
  30. package/dist/cjs/bcm-accordion-group.cjs.entry.js +1 -1
  31. package/dist/cjs/bcm-accordion.cjs.entry.js +2 -2
  32. package/dist/cjs/bcm-alert.cjs.entry.js +1 -1
  33. package/dist/cjs/bcm-badge.cjs.entry.js +2 -2
  34. package/dist/cjs/bcm-basic-badge.cjs.entry.js +2 -2
  35. package/dist/cjs/bcm-button-group.cjs.entry.js +2 -2
  36. package/dist/cjs/bcm-button_5.cjs.entry.js +73 -60
  37. package/dist/cjs/bcm-button_5.cjs.entry.js.map +1 -1
  38. package/dist/cjs/bcm-checkbox.cjs.entry.js +1 -1
  39. package/dist/cjs/bcm-chip.cjs.entry.js +1 -1
  40. package/dist/cjs/bcm-divider.cjs.entry.js +1 -1
  41. package/dist/cjs/bcm-input.cjs.entry.js +2 -2
  42. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +1 -1
  43. package/dist/cjs/bcm-popover.cjs.entry.js +1 -1
  44. package/dist/cjs/bcm-radio-group.cjs.entry.js +2 -2
  45. package/dist/cjs/bcm-radio.cjs.entry.js +1 -1
  46. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +2 -2
  47. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +2 -2
  48. package/dist/cjs/bcm-switch.cjs.entry.js +2 -2
  49. package/dist/cjs/bcm-tabs-content.cjs.entry.js +1 -1
  50. package/dist/cjs/bcm-tabs-list.cjs.entry.js +1 -1
  51. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +2 -2
  52. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +1 -1
  53. package/dist/cjs/bcm-tabs.cjs.entry.js +1 -1
  54. package/dist/cjs/bcm-textarea.cjs.entry.js +3 -3
  55. package/dist/cjs/bcm-tooltip.cjs.entry.js +1 -1
  56. package/dist/collection/components/accordion/accordion.component.js +2 -2
  57. package/dist/collection/components/accordion-group/accordion-group.component.js +1 -1
  58. package/dist/collection/components/alert/alert.component.js +1 -1
  59. package/dist/collection/components/badge/badge.component.js +2 -2
  60. package/dist/collection/components/basic-badge/basic-badge.component.js +2 -2
  61. package/dist/collection/components/button/button.component.js +2 -2
  62. package/dist/collection/components/button/button.css +1 -1
  63. package/dist/collection/components/button-group/button-group.component.js +2 -2
  64. package/dist/collection/components/checkbox/checkbox.component.js +1 -1
  65. package/dist/collection/components/chip/chip.component.js +1 -1
  66. package/dist/collection/components/divider/divider.component.js +1 -1
  67. package/dist/collection/components/dropdown/dropdown.component.js +1 -1
  68. package/dist/collection/components/dropdown/dropdown.css +1 -1
  69. package/dist/collection/components/dropdown-item/dropdown-item.component.js +2 -2
  70. package/dist/collection/components/input/input.component.js +2 -2
  71. package/dist/collection/components/linked/linked.component.js +67 -54
  72. package/dist/collection/components/linked/linked.component.js.map +1 -1
  73. package/dist/collection/components/linked/linked.css +1 -1
  74. package/dist/collection/components/pop-confirm/pop-confirm.component.js +1 -1
  75. package/dist/collection/components/popover/popover.component.js +1 -1
  76. package/dist/collection/components/radio/radio.component.js +1 -1
  77. package/dist/collection/components/radio-group/radio-group.component.js +2 -2
  78. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +2 -2
  79. package/dist/collection/components/segmented-picker/segmented-picker.component.js +2 -2
  80. package/dist/collection/components/switch/switch.component.js +2 -2
  81. package/dist/collection/components/tabs/tabs-content.component.js +1 -1
  82. package/dist/collection/components/tabs/tabs-list.component.js +1 -1
  83. package/dist/collection/components/tabs/tabs-trigger.component.js +1 -1
  84. package/dist/collection/components/tabs/tabs-trigger.css +1 -1
  85. package/dist/collection/components/tabs/tabs.component.js +1 -1
  86. package/dist/collection/components/text/text.component.js +1 -1
  87. package/dist/collection/components/textarea/textarea.component.js +3 -3
  88. package/dist/collection/components/tooltip/tooltip.component.js +1 -1
  89. package/dist/components/bcm-accordion-group.js +1 -1
  90. package/dist/components/bcm-accordion.js +2 -2
  91. package/dist/components/bcm-alert.js +1 -1
  92. package/dist/components/bcm-avatar.js +1 -1
  93. package/dist/components/bcm-badge.js +1 -1
  94. package/dist/components/bcm-basic-badge.js +2 -2
  95. package/dist/components/bcm-button-group.js +2 -2
  96. package/dist/components/bcm-button.js +1 -1
  97. package/dist/components/bcm-checkbox.js +1 -1
  98. package/dist/components/bcm-chip.js +1 -1
  99. package/dist/components/bcm-divider.js +1 -1
  100. package/dist/components/bcm-dropdown-item.js +2 -2
  101. package/dist/components/bcm-dropdown.js +4 -4
  102. package/dist/components/bcm-dropdown.js.map +1 -1
  103. package/dist/components/bcm-input.js +2 -2
  104. package/dist/components/bcm-linked.js +1 -1
  105. package/dist/components/bcm-pop-confirm.js +2 -2
  106. package/dist/components/bcm-popover.js +1 -1
  107. package/dist/components/bcm-radio-group.js +2 -2
  108. package/dist/components/bcm-radio.js +1 -1
  109. package/dist/components/bcm-segmented-picker-option.js +2 -2
  110. package/dist/components/bcm-segmented-picker.js +2 -2
  111. package/dist/components/bcm-switch.js +2 -2
  112. package/dist/components/bcm-tabs-content.js +1 -1
  113. package/dist/components/bcm-tabs-list.js +1 -1
  114. package/dist/components/bcm-tabs-trigger.js +2 -2
  115. package/dist/components/bcm-tabs-trigger.js.map +1 -1
  116. package/dist/components/bcm-tabs.js +1 -1
  117. package/dist/components/bcm-text.js +1 -1
  118. package/dist/components/bcm-textarea.js +3 -3
  119. package/dist/components/bcm-tooltip.js +1 -1
  120. package/dist/components/{p-a83859ff.js → p-39872cdf.js} +67 -54
  121. package/dist/components/p-39872cdf.js.map +1 -0
  122. package/dist/components/{p-69f4b010.js → p-4cc3e4d7.js} +3 -3
  123. package/dist/components/{p-69f4b010.js.map → p-4cc3e4d7.js.map} +1 -1
  124. package/dist/components/{p-d600acb5.js → p-c7b74f83.js} +4 -4
  125. package/dist/components/{p-d600acb5.js.map → p-c7b74f83.js.map} +1 -1
  126. package/dist/esm/app-globals-f7994f55.js.map +1 -1
  127. package/dist/esm/bcm-accordion-group.entry.js +1 -1
  128. package/dist/esm/bcm-accordion.entry.js +2 -2
  129. package/dist/esm/bcm-alert.entry.js +1 -1
  130. package/dist/esm/bcm-badge.entry.js +2 -2
  131. package/dist/esm/bcm-basic-badge.entry.js +2 -2
  132. package/dist/esm/bcm-button-group.entry.js +2 -2
  133. package/dist/esm/bcm-button_5.entry.js +73 -60
  134. package/dist/esm/bcm-button_5.entry.js.map +1 -1
  135. package/dist/esm/bcm-checkbox.entry.js +1 -1
  136. package/dist/esm/bcm-chip.entry.js +1 -1
  137. package/dist/esm/bcm-divider.entry.js +1 -1
  138. package/dist/esm/bcm-input.entry.js +2 -2
  139. package/dist/esm/bcm-pop-confirm.entry.js +1 -1
  140. package/dist/esm/bcm-popover.entry.js +1 -1
  141. package/dist/esm/bcm-radio-group.entry.js +2 -2
  142. package/dist/esm/bcm-radio.entry.js +1 -1
  143. package/dist/esm/bcm-segmented-picker-option.entry.js +2 -2
  144. package/dist/esm/bcm-segmented-picker.entry.js +2 -2
  145. package/dist/esm/bcm-switch.entry.js +2 -2
  146. package/dist/esm/bcm-tabs-content.entry.js +1 -1
  147. package/dist/esm/bcm-tabs-list.entry.js +1 -1
  148. package/dist/esm/bcm-tabs-trigger.entry.js +2 -2
  149. package/dist/esm/bcm-tabs-trigger.entry.js.map +1 -1
  150. package/dist/esm/bcm-tabs.entry.js +1 -1
  151. package/dist/esm/bcm-textarea.entry.js +3 -3
  152. package/dist/esm/bcm-tooltip.entry.js +1 -1
  153. package/dist/types/components/linked/linked.component.d.ts +3 -2
  154. package/package.json +1 -1
  155. package/dist/bromcom-ui/p-2f1a832e.entry.js +0 -2
  156. package/dist/bromcom-ui/p-2f1a832e.entry.js.map +0 -1
  157. package/dist/bromcom-ui/p-a4ee16c5.entry.js +0 -2
  158. package/dist/components/p-a83859ff.js.map +0 -1
  159. /package/dist/bromcom-ui/{p-88d78cdd.entry.js.map → p-03be08cc.entry.js.map} +0 -0
  160. /package/dist/bromcom-ui/{p-098c2b77.entry.js.map → p-0721540b.entry.js.map} +0 -0
  161. /package/dist/bromcom-ui/{p-352a0465.entry.js.map → p-1be5f78e.entry.js.map} +0 -0
  162. /package/dist/bromcom-ui/{p-36656795.entry.js.map → p-404e19f9.entry.js.map} +0 -0
  163. /package/dist/bromcom-ui/{p-86feadca.entry.js.map → p-4106560e.entry.js.map} +0 -0
  164. /package/dist/bromcom-ui/{p-1c2d7a9f.entry.js.map → p-4149c766.entry.js.map} +0 -0
  165. /package/dist/bromcom-ui/{p-7e9223c8.entry.js.map → p-42b485a7.entry.js.map} +0 -0
  166. /package/dist/bromcom-ui/{p-fd7f1fa0.entry.js.map → p-42feef7e.entry.js.map} +0 -0
  167. /package/dist/bromcom-ui/{p-a4148502.entry.js.map → p-560b2394.entry.js.map} +0 -0
  168. /package/dist/bromcom-ui/{p-c9b1e4ec.entry.js.map → p-56f1cec8.entry.js.map} +0 -0
  169. /package/dist/bromcom-ui/{p-5cb49a5f.entry.js.map → p-67ceb7f3.entry.js.map} +0 -0
  170. /package/dist/bromcom-ui/{p-1ad74a16.entry.js.map → p-77abe8d1.entry.js.map} +0 -0
  171. /package/dist/bromcom-ui/{p-3ef04b27.entry.js.map → p-7b93985f.entry.js.map} +0 -0
  172. /package/dist/bromcom-ui/{p-25ad3dab.entry.js.map → p-7e97d4e2.entry.js.map} +0 -0
  173. /package/dist/bromcom-ui/{p-d9dfad58.entry.js.map → p-7f4cb7a0.entry.js.map} +0 -0
  174. /package/dist/bromcom-ui/{p-3254a2a8.entry.js.map → p-842b48ae.entry.js.map} +0 -0
  175. /package/dist/bromcom-ui/{p-5f8c6436.entry.js.map → p-8550a2aa.entry.js.map} +0 -0
  176. /package/dist/bromcom-ui/{p-52ae94e5.entry.js.map → p-aae240d5.entry.js.map} +0 -0
  177. /package/dist/bromcom-ui/{p-52a20dbc.entry.js.map → p-adda3b4e.entry.js.map} +0 -0
  178. /package/dist/bromcom-ui/{p-82ba9870.entry.js.map → p-cbd2f782.entry.js.map} +0 -0
  179. /package/dist/bromcom-ui/{p-a4c27c77.entry.js.map → p-ea1368b5.entry.js.map} +0 -0
  180. /package/dist/bromcom-ui/{p-604cb620.entry.js.map → p-fe7e2cfd.entry.js.map} +0 -0
@@ -160,7 +160,7 @@ const BcmRadio$1 = /*@__PURE__*/ proxyCustomElement(class BcmRadio extends H {
160
160
  readonly: this.readonly,
161
161
  labelPosition: this.labelPosition,
162
162
  });
163
- return (h("label", { key: 'f6f440b9016742847b3141ecabfd7faaea4cc76f', class: container(), style: this.getRadioStyle() }, h("input", { key: 'c172c0ebfd8b8a8cfdba8dd73adf70d423d99327', "aria-label": this.label, role: "radio", "aria-checked": this.checked.toString(), type: "radio", name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, checked: this.checked, class: "appearance-none sr-only", onClick: () => this.handleClick(), onFocus: e => this.bcmFocus.emit(e), onBlur: e => this.bcmBlur.emit(e) }), h("div", { key: '4c5c10f6c923bf9fa3199af85b42c190966afbec', class: dotContainer() }, h("div", { key: '65b26f7d04b3e60ebdace9f07764f8169efbbb45', class: dot() })), h("span", { key: '611739192522bf8b9b46c0c33baeeae77c78315f', class: labelClass() }, h("slot", { key: '734b2a5800edd753c72580ada7eb0e8e1f5661f1' }, this.label))));
163
+ return (h("label", { key: '49fcb622640b201f52dd9f39aaae789803a85c73', class: container(), style: this.getRadioStyle() }, h("input", { key: '2c9bb12a06d535504439f8c72524103a109107e7', "aria-label": this.label, role: "radio", "aria-checked": this.checked.toString(), type: "radio", name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, checked: this.checked, class: "appearance-none sr-only", onClick: () => this.handleClick(), onFocus: e => this.bcmFocus.emit(e), onBlur: e => this.bcmBlur.emit(e) }), h("div", { key: '879d950b3885ef9e5a155086869efa5c037e7b1b', class: dotContainer() }, h("div", { key: '62c61bce309b364dbc3dce3d2159210d56249889', class: dot() })), h("span", { key: '277221257d5dc646a195e8361893a83886bbbcef', class: labelClass() }, h("slot", { key: 'bc348844c8722e7c8f119bebd1e726fab50fa650' }, this.label))));
164
164
  }
165
165
  get host() { return this; }
166
166
  static get style() { return BcmRadioStyle0; }
@@ -92,11 +92,11 @@ const BcmSegmentedPickerOption$1 = /*@__PURE__*/ proxyCustomElement(class BcmSeg
92
92
  render() {
93
93
  const size = this.size || this.getSizeFromParent();
94
94
  const disabled = this.isDisabled();
95
- return (h(Host, { key: '081d1426a5901622f55c00fee4f69af367ab526b' }, h("button", { key: 'ec6d3c49be26a259b75ecb5f8b22077f94079f78', class: this.optionClass({
95
+ return (h(Host, { key: '1dbccef734760bfce79b3349e3443edc81eb18c8' }, h("button", { key: 'bd45f4fe085df93346f1c471ee25f41f3d1f599c', class: this.optionClass({
96
96
  size,
97
97
  selected: this.selected,
98
98
  disabled,
99
- }), onClick: this.handleClick, disabled: disabled, type: "button" }, h("slot", { key: 'cf285bbdfa6f4db8d32eb804f35e24b8b3b182af' }, this.label))));
99
+ }), onClick: this.handleClick, disabled: disabled, type: "button" }, h("slot", { key: '138c4b9ab99a738ec8b69726a44961ba2aaf0cdc' }, this.label))));
100
100
  }
101
101
  get host() { return this; }
102
102
  static get style() { return BcmSegmentedPickerOptionStyle0; }
@@ -126,11 +126,11 @@ const BcmSegmentedPicker$1 = /*@__PURE__*/ proxyCustomElement(class BcmSegmented
126
126
  }, 10);
127
127
  }
128
128
  render() {
129
- return (h(Host, { key: '33ad6f1c1113585b5cb8705edefa9753e59536bb' }, h("div", { key: '04ea007f13a439b9168ca50581ccae383fcd2e48', class: this.segmentedClass({
129
+ return (h(Host, { key: '571801e9cda644fdeefdf11f33789051c0f70145' }, h("div", { key: '0dde275a03d67eab8acfe4fab419f59bbabcf0f2', class: this.segmentedClass({
130
130
  size: this.size,
131
131
  fullWidth: this.fullWidth,
132
132
  disabled: this.disabled,
133
- }) }, h("div", { key: '5b2c42c0c4b7e82bbdd9a6d7f164cc15d448a280', class: "segmented-indicator absolute bg-[--bcm-ui-color-background-base-default] z-0 rounded", style: this.indicatorStyles }), h("div", { key: '2fce9ee1453724152283a048091440f1ec330458', class: "segmented-options flex relative z-10 w-full" }, h("slot", { key: '9441b713b3496cfa6b216bab0aee4769d01121f0' })))));
133
+ }) }, h("div", { key: '87a53fc461965d4fc29b16e20585b0db2c4fe459', class: "segmented-indicator absolute bg-[--bcm-ui-color-background-base-default] z-0 rounded", style: this.indicatorStyles }), h("div", { key: 'a803b9207b514760ba16c004aa33836379797fd9', class: "segmented-options flex relative z-10 w-full" }, h("slot", { key: '7b5df35c4d424ab84cfebac564a50b96dcbd933b' })))));
134
134
  }
135
135
  get host() { return this; }
136
136
  static get watchers() { return {
@@ -170,12 +170,12 @@ const BcmSwitch$1 = /*@__PURE__*/ proxyCustomElement(class BcmSwitch extends H {
170
170
  });
171
171
  const ariaAttributes = Object.assign({ 'role': 'switch', 'aria-checked': this.checked.toString(), 'aria-disabled': this.disabled.toString(), 'aria-readonly': this.readonly.toString() }, (this.required && { 'aria-required': 'true' }));
172
172
  const tabIndexAttr = !this.readonly && !this.disabled ? { tabindex: '0' } : {};
173
- return (h("div", { key: '1301508344227ab292f8847c1202676830568534', class: base() }, h("label", { key: 'ced1bb0bea6a6204d8e2f569dc3071f116732647', class: switchWrapper(), style: this.switchStyle() }, h("input", { key: 'a432f7aed823ccc8cc7f008f6422f5c0bcd4f542', id: this.switchId, type: "checkbox", class: "hidden peer", checked: this.checked, name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, required: this.required, onChange: () => this.toggleSwitch() }), this.label && h("span", { key: '51ff936fdc0d0d77eb32bda235425d3d26d0c0aa', class: label() }, h("slot", { key: 'f1411fe2f3da9b7f9f606afd3852e33284a53b53' }, this.label)), h("label", Object.assign({ key: 'e005835f2e22c03713b3d7732d6c33e622429551', htmlFor: this.switchId, class: dotContainer() }, tabIndexAttr, ariaAttributes, { onKeyDown: event => {
173
+ return (h("div", { key: '78be11da3cff01c755620ffc913a1acf714ff04d', class: base() }, h("label", { key: '9eeecd62889eb6c2aa5b3184682bda4b0d36f04a', class: switchWrapper(), style: this.switchStyle() }, h("input", { key: '9b22c1f3dcddbf24db21fd86347773f739abc731', id: this.switchId, type: "checkbox", class: "hidden peer", checked: this.checked, name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, required: this.required, onChange: () => this.toggleSwitch() }), this.label && h("span", { key: '829c07905b163187b5802be3145e02976b8b8fcc', class: label() }, h("slot", { key: '45e44bdba10ea0695d5ce346283827dfe9f8575d' }, this.label)), h("label", Object.assign({ key: '3b918162f05b833c339b46bc3d3bc07f4e86c8bd', htmlFor: this.switchId, class: dotContainer() }, tabIndexAttr, ariaAttributes, { onKeyDown: event => {
174
174
  if ((event.key === 'Enter' || event.key === ' ') && !this.readonly && !this.disabled) {
175
175
  event.preventDefault();
176
176
  this.toggleSwitch();
177
177
  }
178
- } }), h("div", { key: 'cac7f8bcb004fe7bf958ad9d1c30006db78868a2', class: dot() }))), this.error && this.caption && h("span", { key: '7a560b8e5192f6c184bcc0cf67cc453d3d4fa4d0', class: caption() }, this.caption), h("slot", { key: '8ebde4cddd169ca14f6c6a8ba2ad637799ea34fd', name: "caption" })));
178
+ } }), h("div", { key: 'c77f5b63686eeebe72dab50b2e00d5cfec7ddecf', class: dot() }))), this.error && this.caption && h("span", { key: 'c872a7d7fba3a650341cb230c7377b32f43c937d', class: caption() }, this.caption), h("slot", { key: '36c8458eefd92f6889951c36f46d84f3675ba193', name: "caption" })));
179
179
  }
180
180
  get el() { return this; }
181
181
  static get style() { return BcmSwitchStyle0; }
@@ -10,7 +10,7 @@ const BcmTabsContent$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsContent e
10
10
  this.__attachShadow();
11
11
  }
12
12
  render() {
13
- return (h(Host, { key: 'f30427db9357eb5a862beb46ba58226cf9bffed3', role: "tabpanel" }, h("slot", { key: '7359b3ea816b8d8f8f8f3d1934d76cf8a618d985' })));
13
+ return (h(Host, { key: '99de2fdc1c528dd7287d0e49858cc04b7207c244', role: "tabpanel" }, h("slot", { key: '48fe2edf256c352892714aba90468e43e7deff4a' })));
14
14
  }
15
15
  static get style() { return BcmTabsContentStyle0; }
16
16
  }, [1, "bcm-tabs-content", {
@@ -31,7 +31,7 @@ const BcmTabsList$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsList extends
31
31
  }
32
32
  render() {
33
33
  const { container, inkbar, tabList } = this.class();
34
- return (h("div", { key: '408657315efff43f37390048c24a4687d3ee81c2', class: container(), slot: "tabs-list" }, h("div", { key: 'fe184cc505a321c0b46228e66ce2182bff57397f', class: inkbar() }), h("div", { key: '671e17c08b201c15573f7cf6f57537949e1480a8', class: tabList(), role: "tablist" }, h("slot", { key: 'adcdd52b940fd3e2fbfad8cd626a41d56d8abb6f' }))));
34
+ return (h("div", { key: '8965018c5da77378a119c889044088caf1ff2659', class: container(), slot: "tabs-list" }, h("div", { key: '83b1220210909270e5b9b30e827bade4ddf7059f', class: inkbar() }), h("div", { key: '0a8c25220e73a2a2054dad1395e557fb5eadea5c', class: tabList(), role: "tablist" }, h("slot", { key: '4c5574f602a3721b9d1437b39b1b1ff54e735daf' }))));
35
35
  }
36
36
  static get style() { return BcmTabsListStyle0; }
37
37
  }, [1, "bcm-tabs-list"]);
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-30135590.js';
2
2
  import { c as ce } from './p-5fcf77f9.js';
3
3
 
4
- const tabsTriggerCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.flex{display:flex}.h-\\[2px\\]{height:2px}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.border-none{border-style:none}.bg-\\[--bcm-ui-color-text-default\\]{background-color:var(--bcm-ui-color-text-default)}.bg-\\[--bcm-ui-color-text-disabled\\]{background-color:var(--bcm-ui-color-text-disabled)}.bg-color-primary{background-color:var(--bcm-ui-color-background-primary-default)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.text-center{text-align:center}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:text-color-primary:hover{color:var(--bcm-ui-color-text-primary)}";
4
+ const tabsTriggerCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.flex{display:flex}.h-\\[2px\\]{height:2px}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.border-none{border-style:none}.bg-\\[--bcm-ui-color-text-default\\]{background-color:var(--bcm-ui-color-text-default)}.bg-\\[--bcm-ui-color-text-disabled\\]{background-color:var(--bcm-ui-color-text-disabled)}.bg-color-primary{background-color:var(--bcm-ui-color-background-primary-default)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.text-center{text-align:center}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:text-color-primary:hover{color:var(--bcm-ui-color-text-primary)}";
5
5
  const BcmTabsTriggerStyle0 = tabsTriggerCss;
6
6
 
7
7
  const BcmTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsTrigger extends H {
@@ -79,7 +79,7 @@ const BcmTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsTrigger e
79
79
  active: this.active,
80
80
  disabled: this.disabled,
81
81
  });
82
- return (h(Host, { key: '737dae93f86d0f7ae35c290439488c6266cf5ed9', role: "tab", "aria-selected": this.active.toString(), "aria-disabled": this.disabled }, h("button", { key: '1ba4064730d5b2503a5d30f21542ae4669ddc9cd', class: tab(), disabled: this.disabled, part: "tab", onClick: () => this.handleClick() }, h("slot", { key: '071b435af12f5196249d277681b8a32736dbd88d' })), h("div", { key: 'b5c3a7ce4ead271443224dfb34baaa24f3964587', class: borderLine() })));
82
+ return (h(Host, { key: '2d8e6c966162facbc2c34aeecdd32d0b69024a3a', role: "tab", "aria-selected": this.active.toString(), "aria-disabled": this.disabled }, h("button", { key: '258b41f80ef9ab8b258e27aca6f44f1888dc7da7', class: tab(), disabled: this.disabled, part: "tab", onClick: () => this.handleClick() }, h("slot", { key: '2d98c9a3e6c85e9bbb9803c47934cc0b31b5a736' })), h("div", { key: 'bd48f01c90894e1a1553e1de2bb16c24239ec9fd', class: borderLine() })));
83
83
  }
84
84
  get el() { return this; }
85
85
  static get style() { return BcmTabsTriggerStyle0; }
@@ -1 +1 @@
1
- {"file":"bcm-tabs-trigger.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,+8DAA+8D,CAAC;AACv+D,6BAAe,cAAc;;MCWhBA,gBAAc;IAL3B;;;;;;;;QAqBI,WAAM,GAAY,KAAK,CAAC;;;;QAMxB,SAAI,GAAiC,QAAQ,CAAC;;;;QAM9C,aAAQ,GAAY,KAAK,CAAC;;;;QAyBlB,UAAK,GAAGC,EAAE,CACd;YACI,KAAK,EAAE;gBACH,GAAG,EAAE,gKAAgK;gBACrK,UAAU,EAAE,iGAAiG;aAChH;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE;oBACF,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;oBACnC,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE;oBACtC,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;iBACtC;gBACD,MAAM,EAAE;oBACJ,IAAI,EAAE;wBACF,GAAG,EAAE,oBAAoB;qBAC5B;oBACD,KAAK,EAAE;wBACH,GAAG,EAAE,YAAY;qBACpB;iBACJ;gBACD,QAAQ,EAAE;oBACN,IAAI,EAAE;wBACF,GAAG,EAAE,wCAAwC;wBAC7C,UAAU,EAAE,mCAAmC;qBAClD;oBACD,KAAK,EAAE;wBACH,GAAG,EAAE,oDAAoD;wBACzD,UAAU,EAAE,kCAAkC;qBACjD;iBACJ;aACJ;YACD,eAAe,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,KAAK;aAClB;SACJ,EACD;YACI,OAAO,EAAE,KAAK;SACjB,CACJ,CAAC;KAiBL;;;;;IAjEW,WAAW;QACf,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;IA+CD,MAAM;QACF,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,QACI,EAAC,IAAI,qDAAC,IAAI,EAAC,KAAK,mBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAiB,IAAI,CAAC,QAAQ,IAChF,+DAAQ,KAAK,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAC,KAAK,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,IACvF,8DAAQ,CACH,EACT,4DAAK,KAAK,EAAE,UAAU,EAAE,GAAQ,CAC7B,EACT;KACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["BcmTabsTrigger","tv"],"sources":["src/components/tabs/tabs-trigger.css?tag=bcm-tabs-trigger&encapsulation=shadow","src/components/tabs/tabs-trigger.component.tsx"],"sourcesContent":[":host {\n position: relative;\n display: block;\n width: 100%;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, ComponentInterface } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n/**\n * @description Tab trigger component that functions as a clickable tab button\n * @slot - Default slot for tab label content\n */\n@Component({\n tag: 'bcm-tabs-trigger',\n styleUrl: 'tabs-trigger.css',\n shadow: true,\n})\nexport class BcmTabsTrigger implements ComponentInterface {\n /**\n * Reference to the host element\n */\n @Element() el: HTMLElement;\n\n /**\n * Unique identifier value for the tab\n */\n @Prop({ reflect: true })\n value: string;\n\n /**\n * Whether the tab is currently active\n */\n @Prop({ reflect: true })\n active: boolean = false;\n\n /**\n * Size of the tab\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the tab is disabled\n */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Event emitted when this tab is selected\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabSelected',\n })\n bcmTabSelected: EventEmitter<string>;\n\n /**\n * Handles click events on the tab\n * Emits bcmTabSelected event with tab value if not disabled\n */\n private handleClick() {\n if (this.disabled) return;\n this.bcmTabSelected.emit(this.value);\n }\n\n /**\n * Tailwind variants configuration for styling\n */\n private class = tv(\n {\n slots: {\n tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium transition-all duration-200 ease-in-out py-1 px-3 w-full bg-white border-none',\n borderLine: 'bottom-0 w-full left-0 right-0 h-[2px] bg-color-primary transition-all duration-200 ease-in-out',\n },\n variants: {\n size: {\n small: { tab: 'text-size-4 gap-2' },\n medium: { tab: 'text-size-5 gap-2.5' },\n large: { tab: 'text-size-6 gap-3' },\n },\n active: {\n true: {\n tab: 'text-color-primary',\n },\n false: {\n tab: 'text-color',\n },\n },\n disabled: {\n true: {\n tab: 'cursor-not-allowed text-color-disabled',\n borderLine: 'bg-[--bcm-ui-color-text-disabled]',\n },\n false: {\n tab: 'cursor-pointer text-color hover:text-color-primary',\n borderLine: 'bg-[--bcm-ui-color-text-default]',\n },\n },\n },\n defaultVariants: {\n size: 'medium',\n active: false,\n disabled: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const { tab, borderLine } = this.class({\n size: this.size,\n active: this.active,\n disabled: this.disabled,\n });\n return (\n <Host role=\"tab\" aria-selected={this.active.toString()} aria-disabled={this.disabled}>\n <button class={tab()} disabled={this.disabled} part=\"tab\" onClick={() => this.handleClick()}>\n <slot />\n </button>\n <div class={borderLine()}></div>\n </Host>\n );\n }\n}"],"version":3}
1
+ {"file":"bcm-tabs-trigger.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,u+DAAu+D,CAAC;AAC//D,6BAAe,cAAc;;MCWhBA,gBAAc;IAL3B;;;;;;;;QAqBI,WAAM,GAAY,KAAK,CAAC;;;;QAMxB,SAAI,GAAiC,QAAQ,CAAC;;;;QAM9C,aAAQ,GAAY,KAAK,CAAC;;;;QAyBlB,UAAK,GAAGC,EAAE,CACd;YACI,KAAK,EAAE;gBACH,GAAG,EAAE,gKAAgK;gBACrK,UAAU,EAAE,iGAAiG;aAChH;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE;oBACF,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;oBACnC,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE;oBACtC,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;iBACtC;gBACD,MAAM,EAAE;oBACJ,IAAI,EAAE;wBACF,GAAG,EAAE,oBAAoB;qBAC5B;oBACD,KAAK,EAAE;wBACH,GAAG,EAAE,YAAY;qBACpB;iBACJ;gBACD,QAAQ,EAAE;oBACN,IAAI,EAAE;wBACF,GAAG,EAAE,wCAAwC;wBAC7C,UAAU,EAAE,mCAAmC;qBAClD;oBACD,KAAK,EAAE;wBACH,GAAG,EAAE,oDAAoD;wBACzD,UAAU,EAAE,kCAAkC;qBACjD;iBACJ;aACJ;YACD,eAAe,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,KAAK;aAClB;SACJ,EACD;YACI,OAAO,EAAE,KAAK;SACjB,CACJ,CAAC;KAiBL;;;;;IAjEW,WAAW;QACf,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;IA+CD,MAAM;QACF,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,QACI,EAAC,IAAI,qDAAC,IAAI,EAAC,KAAK,mBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAiB,IAAI,CAAC,QAAQ,IAChF,+DAAQ,KAAK,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAC,KAAK,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,IACvF,8DAAQ,CACH,EACT,4DAAK,KAAK,EAAE,UAAU,EAAE,GAAQ,CAC7B,EACT;KACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["BcmTabsTrigger","tv"],"sources":["src/components/tabs/tabs-trigger.css?tag=bcm-tabs-trigger&encapsulation=shadow","src/components/tabs/tabs-trigger.component.tsx"],"sourcesContent":[":host {\n position: relative;\n display: block;\n width: 100%;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, ComponentInterface } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n/**\n * @description Tab trigger component that functions as a clickable tab button\n * @slot - Default slot for tab label content\n */\n@Component({\n tag: 'bcm-tabs-trigger',\n styleUrl: 'tabs-trigger.css',\n shadow: true,\n})\nexport class BcmTabsTrigger implements ComponentInterface {\n /**\n * Reference to the host element\n */\n @Element() el: HTMLElement;\n\n /**\n * Unique identifier value for the tab\n */\n @Prop({ reflect: true })\n value: string;\n\n /**\n * Whether the tab is currently active\n */\n @Prop({ reflect: true })\n active: boolean = false;\n\n /**\n * Size of the tab\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the tab is disabled\n */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Event emitted when this tab is selected\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabSelected',\n })\n bcmTabSelected: EventEmitter<string>;\n\n /**\n * Handles click events on the tab\n * Emits bcmTabSelected event with tab value if not disabled\n */\n private handleClick() {\n if (this.disabled) return;\n this.bcmTabSelected.emit(this.value);\n }\n\n /**\n * Tailwind variants configuration for styling\n */\n private class = tv(\n {\n slots: {\n tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium transition-all duration-200 ease-in-out py-1 px-3 w-full bg-white border-none',\n borderLine: 'bottom-0 w-full left-0 right-0 h-[2px] bg-color-primary transition-all duration-200 ease-in-out',\n },\n variants: {\n size: {\n small: { tab: 'text-size-4 gap-2' },\n medium: { tab: 'text-size-5 gap-2.5' },\n large: { tab: 'text-size-6 gap-3' },\n },\n active: {\n true: {\n tab: 'text-color-primary',\n },\n false: {\n tab: 'text-color',\n },\n },\n disabled: {\n true: {\n tab: 'cursor-not-allowed text-color-disabled',\n borderLine: 'bg-[--bcm-ui-color-text-disabled]',\n },\n false: {\n tab: 'cursor-pointer text-color hover:text-color-primary',\n borderLine: 'bg-[--bcm-ui-color-text-default]',\n },\n },\n },\n defaultVariants: {\n size: 'medium',\n active: false,\n disabled: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const { tab, borderLine } = this.class({\n size: this.size,\n active: this.active,\n disabled: this.disabled,\n });\n return (\n <Host role=\"tab\" aria-selected={this.active.toString()} aria-disabled={this.disabled}>\n <button class={tab()} disabled={this.disabled} part=\"tab\" onClick={() => this.handleClick()}>\n <slot />\n </button>\n <div class={borderLine()}></div>\n </Host>\n );\n }\n}"],"version":3}
@@ -195,7 +195,7 @@ const BcmTabs$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabs extends H {
195
195
  }
196
196
  }
197
197
  render() {
198
- return (h(Host, { key: 'b79579d373af5caf1b4e8afec360f5ab860b490b' }, h("div", { key: '875e76a3553e4612a21b0eb3cf236354b089c455', class: this.tabClass() }, h("slot", { key: '583eddad715730b58a158233da59e82834a6669a', name: "tabs-list" }), h("slot", { key: 'd1522bf0aaca569d639c2c2ee44a6bb4877b52db' }))));
198
+ return (h(Host, { key: '90a1296c412a53c936691176b1d1e4feb1459a4d' }, h("div", { key: 'bfb23bf3b9bdb94aefab65541a0b3eb0423b726b', class: this.tabClass() }, h("slot", { key: 'fd4a8809d06c9c155f2d2f87caa1c55087f423f7', name: "tabs-list" }), h("slot", { key: '218450d64bd1cf715581e0a17070b88211e81d9f' }))));
199
199
  }
200
200
  get el() { return this; }
201
201
  static get watchers() { return {
@@ -114,7 +114,7 @@ const BcmText$1 = /*@__PURE__*/ proxyCustomElement(class BcmText extends H {
114
114
  const Tag = variantTagMap[this.variant];
115
115
  const variantClass = this.getTextClass(this.variant, this.size);
116
116
  const overflowClass = this.getOverflowClass((_a = this.overflow) !== null && _a !== void 0 ? _a : false);
117
- return (h(Tag, { key: '0c9e834dbe47309b7ec41c7c79bf07bf7d825f26', class: classNames('bcm-text appearance-none m-0 p-0', variantClass, overflowClass), part: "text" }, h("slot", { key: 'c947db45b7b7147c0780bbb3294802cd0f1be268' }, this.text)));
117
+ return (h(Tag, { key: 'ef2836e00bfbb1dd406179f403720e013eeb6239', class: classNames('bcm-text appearance-none m-0 p-0', variantClass, overflowClass), part: "text" }, h("slot", { key: 'b707cba3afdcb3892a4fa0d3ea22daefa4b7952a' }, this.text)));
118
118
  }
119
119
  static get style() { return BcmTextStyle0; }
120
120
  }, [1, "bcm-text", {
@@ -273,14 +273,14 @@ const BcmTextarea$1 = /*@__PURE__*/ proxyCustomElement(class BcmTextarea extends
273
273
  disabled: this.disabled,
274
274
  focused: this.isFocused,
275
275
  });
276
- return (h("div", { key: '2c0921598e0a33a92660a3d4fecd428c78beead9', class: "bcm-ui-element" }, this.label && (h("label", { key: '7fc9122c49f11aff7de68d4aef855ab6cf68285c', class: classNames('textarea-label font-medium', {
276
+ return (h("div", { key: '84e5a1c974ab1998170232ef63f58a1cf967beee', class: "bcm-ui-element" }, this.label && (h("label", { key: '3d3bd4c4d65307917aeb5f4175cd3e09e7acd2d3', class: classNames('textarea-label font-medium', {
277
277
  'text-color-label': !this.disabled,
278
278
  'text-color-disabled': this.disabled,
279
279
  }, {
280
280
  'text-size-3': this.size === 'small',
281
281
  'text-size-4': this.size === 'medium',
282
282
  'text-size-5': this.size === 'large',
283
- }), htmlFor: textareaId }, h("slot", { key: '9a3a55b0f24060e9996e42aa93efe806cb871618', name: "label" }, this.label), this.required && h("span", { key: 'bfef43587667f26d6cd97052c0ff127765044d42' }, "*"))), h("div", { key: '5b12ae013624349f9ca905394dd16f0247f5cf4f', class: base() }, h("textarea", { key: 'abbad89db5f36716bc39118d62644e79300e103f', ref: el => (this.textareaRef = el), id: textareaId, class: textareaClass(), name: this.name, rows: this.rows, cols: this.cols, disabled: this.disabled, readonly: this.readonly, required: this.required, placeholder: this.placeholder, minLength: this.minLength, maxLength: this.maxLength, "aria-invalid": this.status === 'error', "aria-required": this.required, "aria-labelledby": this.labelledby, "aria-describedby": this.describedby, value: this.value, onInput: event => {
283
+ }), htmlFor: textareaId }, h("slot", { key: '5262a6ebe929e326355e4cf18e47db49e8350b05', name: "label" }, this.label), this.required && h("span", { key: '42205548abefadd715eaafdcad4031effc71a4c4' }, "*"))), h("div", { key: 'e7305ad7b923e27b63b518a45bd21470214db4d2', class: base() }, h("textarea", { key: '276dbfa0caea27960607f29ced885ca557519e95', ref: el => (this.textareaRef = el), id: textareaId, class: textareaClass(), name: this.name, rows: this.rows, cols: this.cols, disabled: this.disabled, readonly: this.readonly, required: this.required, placeholder: this.placeholder, minLength: this.minLength, maxLength: this.maxLength, "aria-invalid": this.status === 'error', "aria-required": this.required, "aria-labelledby": this.labelledby, "aria-describedby": this.describedby, value: this.value, onInput: event => {
284
284
  const target = event.target;
285
285
  this.value = target.value;
286
286
  this.bcmInput.emit(event);
@@ -288,7 +288,7 @@ const BcmTextarea$1 = /*@__PURE__*/ proxyCustomElement(class BcmTextarea extends
288
288
  if (this.autoGrow) {
289
289
  this.adjustHeight();
290
290
  }
291
- }, onChange: this.onChange, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, onKeyUp: this.onKeyUp }), this.showCounter && (h("div", { key: '192f21a7e5704625356b0c27d86d7cc699a3b9db', class: counterText() }, this.value.length, this.maxLength ? `/${this.maxLength}` : ''))), (this.captionText || this.internalErrorMessage || this.validationMessage) && (h("div", { key: '969597cab284f83fa5c9721b9e8f8b2fbe9aad4c', class: classNames('textarea-caption-text font-regular mt-1', {
291
+ }, onChange: this.onChange, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, onKeyUp: this.onKeyUp }), this.showCounter && (h("div", { key: 'ec27b73083d38acf3a7814c0ad6dfa3d48972302', class: counterText() }, this.value.length, this.maxLength ? `/${this.maxLength}` : ''))), (this.captionText || this.internalErrorMessage || this.validationMessage) && (h("div", { key: '34bea9b1ba9edf75f569668b0ea93796d517f312', class: classNames('textarea-caption-text font-regular mt-1', {
292
292
  'text-[--bcm-ui-color-text-caption]': !this.disabled && this.internalStatus === 'default',
293
293
  'text-[--bcm-ui-color-text-error]': !this.disabled && (this.internalStatus === 'error' || !this.isValid),
294
294
  'text-[--bcm-ui-color-text-success]': !this.disabled && this.internalStatus === 'success',
@@ -174,7 +174,7 @@ const Tooltip = /*@__PURE__*/ proxyCustomElement(class Tooltip extends H {
174
174
  size: this.size,
175
175
  isOpen: this.open,
176
176
  });
177
- return (h("div", { key: 'cc38e1ce7b446a135f1d2597cf8086aaf8af8a07', class: "relative" }, h("slot", { key: 'd3c279eec1c236635dab757f1a65f7d6a4e11f8d', onSlotchange: () => this.handleSlotChange() }), h("div", { key: 'e5bc2f9aed8a287ea79f21c7b66de5393689f732', role: "tooltip", class: tooltip(), ref: (el) => (this.tooltipElement = el), part: "tooltip" }, h("div", { key: '0634cb44cbcef4597de4f274a0a40af8885363cd', class: arrow(), ref: (el) => (this.arrowElement = el), part: "arrow" }), h("slot", { key: '89182355e0cf7c39da2a69e9e1dd5ca0d51537a9', name: "tooltip" }, this.message))));
177
+ return (h("div", { key: '5a1c6f133d30fa10beac54fafd9f890cf359ff9c', class: "relative" }, h("slot", { key: '5f6b49c72c789a214b506c653205757b3b331913', onSlotchange: () => this.handleSlotChange() }), h("div", { key: '0c91d8ed31a3ca64dd2ae3f15a89438083fcad17', role: "tooltip", class: tooltip(), ref: (el) => (this.tooltipElement = el), part: "tooltip" }, h("div", { key: 'a0f68b67b517b4890d9774d117a54722119916f5', class: arrow(), ref: (el) => (this.arrowElement = el), part: "arrow" }), h("slot", { key: '3ae9d5e6694faf19712bb8eb58452a48df49d382', name: "tooltip" }, this.message))));
178
178
  }
179
179
  get el() { return this; }
180
180
  static get style() { return BcmTooltipStyle0; }
@@ -1,7 +1,7 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h } from './p-30135590.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-30135590.js';
2
2
  import { a as autoUpdate, o as offset, f as flip, s as shift, c as computePosition } from './p-50133556.js';
3
3
 
4
- const linkedCss = ".absolute{position:absolute}.relative{position:relative}.block{display:block}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.border{border-width:1px}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:host{display:block;position:relative}.floating-content{min-width:-moz-max-content;min-width:max-content;transition:opacity .2s ease,visibility .2s ease,transform .2s ease;will-change:transform,opacity}.floating-visible{animation:fadeInScale .2s ease-out}.floating-hidden{pointer-events:none}.floating-wrapper{position:relative;z-index:1}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}.floating-arrow{z-index:-1}.floating-arrow,.floating-arrow:before{height:10px;position:absolute;width:10px}.floating-arrow:before{background:#fff;border:1px solid #e2e8f0;content:\"\";transform:rotate(45deg)}.arrow-top{bottom:-5px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%)}.arrow-bottom{top:-5px}.arrow-left{right:-5px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%)}.arrow-right{left:-5px}.arrow-top:before{border-bottom:0;border-right:0}.arrow-bottom:before{border-left:0;border-top:0}.arrow-left:before{border-right:0;border-top:0}.arrow-right:before{border-bottom:0;border-left:0}@media (max-width:768px){.floating-content{max-height:calc(100vh - 32px);max-width:calc(100vw - 32px)}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.hidden{display:none}.resize{resize:both}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.flex{display:flex}.max-h-64{max-height:16rem}.w-full{width:100%}.min-w-10{min-width:2.5rem}.max-w-64{max-width:16rem}.flex-col{flex-direction:column}.items-center{align-items:center}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--bcm-ui-border-radius-lg,8px)}.bg-color-basic-panel{background-color:var(--bcm-ui-color-background-basic-panel)}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.shadow,.shadow-3{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-3{--tw-shadow:var(--bcm-ui-box-shadow-3);--tw-shadow-colored:var(--bcm-ui-box-shadow-3)}.outline{outline-style:solid}";
4
+ const linkedCss = ".absolute{position:absolute}.relative{position:relative}.block{display:block}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.border{border-width:1px}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}bcm-linked{display:block;position:relative}bcm-linked[append-to-body]{display:none}.floating-content{min-width:-moz-max-content;min-width:max-content;transition:opacity .2s ease,visibility .2s ease,transform .2s ease;will-change:transform,opacity}.floating-visible{animation:fadeInScale .2s ease-out}.floating-hidden{display:none!important;pointer-events:none}.floating-wrapper{position:relative;z-index:1}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}.floating-arrow{z-index:-1}.floating-arrow,.floating-arrow:before{height:10px;position:absolute;width:10px}.floating-arrow:before{background:#fff;border:1px solid #e2e8f0;content:\"\";transform:rotate(45deg)}.arrow-top{bottom:-5px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%)}.arrow-bottom{top:-5px}.arrow-left{right:-5px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%)}.arrow-right{left:-5px}.arrow-top:before{border-bottom:0;border-right:0}.arrow-bottom:before{border-left:0;border-top:0}.arrow-left:before{border-right:0;border-top:0}.arrow-right:before{border-bottom:0;border-left:0}@media (max-width:768px){.floating-content{max-height:calc(100vh - 32px);max-width:calc(100vw - 32px)}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.hidden{display:none}.resize{resize:both}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.flex{display:flex}.max-h-64{max-height:16rem}.w-full{width:100%}.min-w-10{min-width:2.5rem}.max-w-64{max-width:16rem}.flex-col{flex-direction:column}.items-center{align-items:center}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--bcm-ui-border-radius-lg,8px)}.bg-color-basic-panel{background-color:var(--bcm-ui-color-background-basic-panel)}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default)}.shadow,.shadow-3{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-3{--tw-shadow:var(--bcm-ui-box-shadow-3);--tw-shadow-colored:var(--bcm-ui-box-shadow-3)}.outline{outline-style:solid}";
5
5
  const BcmLinkedStyle0 = linkedCss;
6
6
 
7
7
  const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
@@ -84,12 +84,19 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
84
84
  this.bcmHidden.emit();
85
85
  }
86
86
  }
87
- componentDidLoad() {
88
- requestAnimationFrame(() => {
89
- this.floatingEl = this.host.querySelector('.floating-content');
87
+ async componentDidLoad() {
88
+ // Wait for render
89
+ await new Promise(resolve => requestAnimationFrame(resolve));
90
+ this.floatingEl = this.host.querySelector('.floating-content');
91
+ if (this.floatingEl) {
90
92
  this.isReady = true;
91
93
  this.connectTarget();
92
- });
94
+ this.setupFloatingObserver();
95
+ console.log('✅ bcm-linked initialized successfully');
96
+ }
97
+ else {
98
+ console.error('❌ Could not find .floating-content element');
99
+ }
93
100
  }
94
101
  disconnectedCallback() {
95
102
  var _a, _b;
@@ -97,16 +104,9 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
97
104
  this.clearTimeouts();
98
105
  (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
99
106
  (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
100
- // Restore any portal elements before cleanup
101
- if (this.appendToBody && this.floatingEl && this.floatingEl.hasAttribute('data-floating-portal')) {
102
- if (this.originalParent) {
103
- if (this.originalNextSibling) {
104
- this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
105
- }
106
- else {
107
- this.originalParent.appendChild(this.floatingEl);
108
- }
109
- }
107
+ // Restore element to original position if component is destroyed while in portal
108
+ if (this.appendToBody && this.floatingEl && this.originalParent) {
109
+ this.originalParent.appendChild(this.floatingEl);
110
110
  }
111
111
  }
112
112
  connectTarget() {
@@ -208,12 +208,23 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
208
208
  async updatePosition() {
209
209
  if (!this.targetEl || !this.floatingEl || !this.isVisible)
210
210
  return;
211
+ // Use autoPlacement only for bottom-start (dropdown default)
212
+ // For other placements, respect the manual placement with flip fallback
213
+ // const useAutoPlacement = this.placement === 'bottom-start';
211
214
  const middleware = [
212
215
  offset(this.offset),
216
+ // useAutoPlacement
217
+ // ? autoPlacement({
218
+ // allowedPlacements: ['bottom-start', 'bottom-end', 'bottom', 'top-start', 'top-end', 'top', 'right-start', 'right-end', 'right', 'left-start', 'left-end', 'left'],
219
+ // boundary: document.body,
220
+ // })
221
+ // :
213
222
  flip({
214
- fallbackPlacements: ['top-start', 'bottom-start', 'right-start', 'left-start'],
223
+ fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],
224
+ }),
225
+ shift({
226
+ padding: 8,
215
227
  }),
216
- shift({ padding: 8 }),
217
228
  ];
218
229
  const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {
219
230
  placement: this.placement,
@@ -245,16 +256,15 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
245
256
  if (this.disabled || this.isVisible)
246
257
  return;
247
258
  this.bcmShow.emit();
248
- this.isVisible = true;
249
- // Move to body if appendToBody is enabled - now much simpler without shadow DOM
250
- if (this.appendToBody && this.floatingEl && !document.body.contains(this.floatingEl)) {
251
- // Store original position for restoration
252
- this.originalParent = this.floatingEl.parentElement;
253
- this.originalNextSibling = this.floatingEl.nextElementSibling;
254
- // Move the actual element to body (preserves all content including Angular components)
255
- this.floatingEl.setAttribute('data-floating-portal', 'true');
259
+ // Portalling: Move the floating element to the body
260
+ if (this.appendToBody && this.floatingEl) {
261
+ this.originalParent = this.floatingEl.parentNode;
262
+ this.originalNextSibling = this.floatingEl.nextSibling;
256
263
  document.body.appendChild(this.floatingEl);
257
264
  }
265
+ this.isVisible = true;
266
+ // Use requestAnimationFrame to ensure the element is visible before positioning
267
+ await new Promise(resolve => requestAnimationFrame(resolve));
258
268
  await this.updatePosition();
259
269
  }
260
270
  async hide() {
@@ -262,20 +272,16 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
262
272
  return;
263
273
  this.bcmHide.emit();
264
274
  this.isVisible = false;
265
- // Restore element to original position if it was moved to body
266
- if (this.appendToBody && this.floatingEl && this.floatingEl.hasAttribute('data-floating-portal')) {
267
- this.floatingEl.removeAttribute('data-floating-portal');
268
- if (this.originalParent) {
269
- if (this.originalNextSibling) {
270
- this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
271
- }
272
- else {
273
- this.originalParent.appendChild(this.floatingEl);
274
- }
275
+ // Portalling: Restore the floating element to its original position
276
+ if (this.appendToBody && this.floatingEl && this.originalParent) {
277
+ if (this.originalNextSibling) {
278
+ this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
275
279
  }
276
- // Clear stored references
277
- this.originalParent = null;
278
- this.originalNextSibling = null;
280
+ else {
281
+ this.originalParent.appendChild(this.floatingEl);
282
+ }
283
+ this.originalParent = undefined;
284
+ this.originalNextSibling = undefined;
279
285
  }
280
286
  if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {
281
287
  this.floatingEl.parentNode.removeChild(this.floatingEl);
@@ -292,6 +298,17 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
292
298
  async updatePositioning() {
293
299
  await this.updatePosition();
294
300
  }
301
+ setupFloatingObserver() {
302
+ if (!this.floatingEl)
303
+ return;
304
+ // Observe floating element size changes for position updates
305
+ this.resizeObserver = new ResizeObserver(() => {
306
+ if (this.isVisible) {
307
+ this.updatePosition();
308
+ }
309
+ });
310
+ this.resizeObserver.observe(this.floatingEl);
311
+ }
295
312
  render() {
296
313
  const floatingClasses = {
297
314
  'floating-content': true,
@@ -300,20 +317,16 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
300
317
  'floating-with-arrow': this.arrow,
301
318
  'floating-destroy-on-hide': this.destroyOnHide,
302
319
  };
303
- return [
304
- // Portal div to body for positioning, but keep slot in shadow DOM
305
- h("div", { key: '2fa1273f3f92b1904f8316b8aaea45d84ac5f023', class: floatingClasses, style: {
306
- position: 'fixed',
307
- top: '0px',
308
- left: '0px',
309
- zIndex: this.zIndex.toString(),
310
- visibility: this.isVisible ? 'visible' : 'hidden',
311
- opacity: this.isVisible ? '1' : '0',
312
- pointerEvents: this.isVisible ? 'auto' : 'none',
313
- } }, this.arrow && h("div", { key: '6a25f85392fd3031a52f3f3be53263917adb61c8', class: "floating-arrow" }), h("div", { key: '0e1295e4f9b9764971689d94fa21e9c2b0dcefea', class: "floating-wrapper" }, h("slot", { key: '0b5d6e6cf9ffa8262a6fd9cc7c1b9bd46029c220' }))),
314
- // Hidden content holder for slot fallback
315
- h("div", { key: '66f2dd9882f4b1870214db30c8026073c86ad137', style: { display: 'none' } }, h("slot", { key: 'ea0c9eb10e96a65a3af21a615f5c7df939f2717c', name: "fallback" })),
316
- ];
320
+ return (h(Host, { key: 'f5835cc1b6044476e66402d23a3becf18d3f2049' }, h("div", { key: '2c7f92bbe85bc938a767734ef4b27702247fb390', class: floatingClasses, style: {
321
+ position: 'fixed',
322
+ top: '0px',
323
+ left: '0px',
324
+ zIndex: this.zIndex.toString(),
325
+ display: this.isVisible ? 'block' : 'none',
326
+ visibility: this.isVisible ? 'visible' : 'hidden',
327
+ opacity: this.isVisible ? '1' : '0',
328
+ pointerEvents: this.isVisible ? 'auto' : 'none',
329
+ } }, this.arrow && h("div", { key: 'f6eedac02b29b3ca00a9a84eea940ac89089f30c', class: "floating-arrow" }), h("div", { key: '7cb19f085de1d77a41fd9897be90999e78a0a54d', class: "floating-wrapper" }, h("slot", { key: 'a4b4289642850e3c2f7f27771b3d28bc41c8248a' }))), h("div", { key: '61cd7af9a4a47c87c308e1e67f96efb987c97312', style: { display: 'none' } }, h("slot", { key: '7160df275f5c7c66733158f95266598d0d207a17', name: "fallback" }))));
317
330
  }
318
331
  get host() { return this; }
319
332
  static get watchers() { return {
@@ -363,4 +376,4 @@ defineCustomElement();
363
376
 
364
377
  export { BcmLinked as B, defineCustomElement as d };
365
378
 
366
- //# sourceMappingURL=p-a83859ff.js.map
379
+ //# sourceMappingURL=p-39872cdf.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-39872cdf.js","mappings":"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","names":[],"sources":["src/components/linked/linked.css?tag=bcm-linked","src/components/linked/linked.component.tsx"],"sourcesContent":["bcm-linked {\n display: block;\n position: relative;\n}\nbcm-linked[append-to-body] {\n display: none;\n}\n\n.floating-content {\n min-width: max-content;\n transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;\n will-change: transform, opacity;\n}\n\n.floating-visible {\n animation: fadeInScale 0.2s ease-out;\n}\n\n.floating-hidden {\n display: none !important;\n pointer-events: none;\n}\n\n.floating-wrapper {\n position: relative;\n z-index: 1;\n}\n\n/* Animations */\n@keyframes fadeInScale {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-5px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* Arrow Styles */\n.floating-arrow {\n position: absolute;\n width: 10px;\n height: 10px;\n z-index: -1;\n}\n\n.floating-arrow::before {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n background: white;\n border: 1px solid #e2e8f0;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning based on placement */\n.arrow-top {\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.arrow-bottom {\n top: -5px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.arrow-left {\n right: -5px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.arrow-right {\n left: -5px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Arrow border fix for bordered popups */\n.arrow-top::before {\n border-bottom: 0;\n border-right: 0;\n}\n\n.arrow-bottom::before {\n border-top: 0;\n border-left: 0;\n}\n\n.arrow-left::before {\n border-top: 0;\n border-right: 0;\n}\n\n.arrow-right::before {\n border-bottom: 0;\n border-left: 0;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .floating-content {\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 32px);\n }\n}\n","import { Component, ComponentInterface, Prop, Element, State, h, Event, EventEmitter, Watch, Method, Host } from '@stencil/core';\nimport { computePosition, shift, offset, autoUpdate, flip, type Placement } from '@floating-ui/dom';\n\nexport type TriggerType = 'hover' | 'click' | 'focus' | 'manual';\n\n@Component({\n tag: 'bcm-linked',\n styleUrl: 'linked.css',\n shadow: false,\n})\nexport class BcmLinked implements ComponentInterface {\n @Element() host: HTMLElement;\n\n // Target configuration\n @Prop({ reflect: true, attribute: 'target-id' }) targetId?: string;\n @Prop() targetElement?: HTMLElement;\n\n // Trigger configuration\n @Prop() trigger: TriggerType = 'click';\n @Prop() placement: Placement = 'bottom-start';\n\n // Timing configuration\n @Prop() showDelay: number = 0;\n @Prop() hideDelay: number = 0;\n\n // Positioning configuration\n @Prop() offset: number = 8;\n @Prop() arrow: boolean = false;\n @Prop() disabled: boolean = false;\n\n // Style configuration\n @Prop() zIndex: number = 1000;\n @Prop() appendToBody: boolean = false;\n @Prop() destroyOnHide: boolean = false;\n\n // State\n @State() isVisible: boolean = false;\n @State() isReady: boolean = false;\n\n // Events\n @Event() bcmShow: EventEmitter<void>;\n @Event() bcmHide: EventEmitter<void>;\n @Event() bcmShown: EventEmitter<void>;\n @Event() bcmHidden: EventEmitter<void>;\n\n // Private properties\n private floatingEl?: HTMLElement;\n private targetEl?: HTMLElement;\n private showTimeout?: NodeJS.Timeout;\n private hideTimeout?: NodeJS.Timeout;\n private cleanup?: () => void;\n private clickOutsideHandler?: (e: MouseEvent) => void;\n private resizeObserver?: ResizeObserver;\n private originalParent?: Node;\n private originalNextSibling?: Node;\n\n // Watch for changes\n @Watch('targetId')\n @Watch('targetElement')\n setupTarget() {\n this.disconnectTarget();\n this.connectTarget();\n }\n\n @Watch('isVisible')\n onVisibilityChange(newValue: boolean) {\n if (newValue) {\n this.updatePosition();\n this.bcmShown.emit();\n } else {\n this.bcmHidden.emit();\n }\n }\n\n async componentDidLoad() {\n // Wait for render\n await new Promise(resolve => requestAnimationFrame(resolve));\n\n this.floatingEl = this.host.querySelector('.floating-content') as HTMLElement;\n\n if (this.floatingEl) {\n this.isReady = true;\n this.connectTarget();\n this.setupFloatingObserver();\n console.log('✅ bcm-linked initialized successfully');\n } else {\n console.error('❌ Could not find .floating-content element');\n }\n }\n\n disconnectedCallback() {\n this.disconnectTarget();\n this.clearTimeouts();\n this.cleanup?.();\n this.resizeObserver?.disconnect();\n\n // Restore element to original position if component is destroyed while in portal\n if (this.appendToBody && this.floatingEl && this.originalParent) {\n this.originalParent.appendChild(this.floatingEl);\n }\n }\n\n private connectTarget() {\n if (!this.isReady) return;\n\n // Find target element\n this.targetEl =\n this.targetElement || (this.targetId ? document.getElementById(this.targetId) : null) || (this.host.previousElementSibling as HTMLElement) || this.host.parentElement;\n\n if (!this.targetEl) {\n console.warn('bcm-linked: No target element found');\n return;\n }\n\n // Setup event listeners based on trigger type\n this.setupEventListeners();\n\n // Setup auto-update for position\n if (this.targetEl && this.floatingEl) {\n this.cleanup = autoUpdate(this.targetEl, this.floatingEl, () => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n }\n\n // Setup resize observer for responsive positioning\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n this.resizeObserver.observe(this.floatingEl);\n }\n\n private disconnectTarget() {\n if (this.targetEl) {\n this.removeEventListeners();\n }\n this.cleanup?.();\n this.resizeObserver?.disconnect();\n }\n\n private setupEventListeners() {\n if (!this.targetEl || this.disabled) return;\n\n switch (this.trigger) {\n case 'hover':\n this.targetEl.addEventListener('mouseenter', this.handleMouseEnter);\n this.targetEl.addEventListener('mouseleave', this.handleMouseLeave);\n this.floatingEl?.addEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingEl?.addEventListener('mouseleave', this.handleFloatingMouseLeave);\n break;\n\n case 'click':\n this.targetEl.addEventListener('click', this.handleClick);\n this.setupClickOutside();\n break;\n\n case 'focus':\n this.targetEl.addEventListener('focus', this.handleFocus);\n this.targetEl.addEventListener('blur', this.handleBlur);\n break;\n }\n }\n\n private removeEventListeners() {\n if (!this.targetEl) return;\n\n this.targetEl.removeEventListener('mouseenter', this.handleMouseEnter);\n this.targetEl.removeEventListener('mouseleave', this.handleMouseLeave);\n this.targetEl.removeEventListener('click', this.handleClick);\n this.targetEl.removeEventListener('focus', this.handleFocus);\n this.targetEl.removeEventListener('blur', this.handleBlur);\n\n this.floatingEl?.removeEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingEl?.removeEventListener('mouseleave', this.handleFloatingMouseLeave);\n\n this.removeClickOutside();\n }\n\n private setupClickOutside() {\n this.clickOutsideHandler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!this.floatingEl?.contains(target) && !this.targetEl?.contains(target) && !this.host.contains(target)) {\n this.hide();\n }\n };\n document.addEventListener('click', this.clickOutsideHandler, true);\n }\n\n private removeClickOutside() {\n if (this.clickOutsideHandler) {\n document.removeEventListener('click', this.clickOutsideHandler, true);\n this.clickOutsideHandler = undefined;\n }\n }\n\n private handleMouseEnter = () => {\n this.clearTimeouts();\n if (this.showDelay > 0) {\n this.showTimeout = setTimeout(() => this.show(), this.showDelay);\n } else {\n this.show();\n }\n };\n\n private handleMouseLeave = () => {\n this.clearTimeouts();\n if (this.hideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);\n } else {\n this.hide();\n }\n };\n\n private handleFloatingMouseEnter = () => {\n this.clearTimeouts();\n };\n\n private handleFloatingMouseLeave = () => {\n this.clearTimeouts();\n if (this.hideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);\n } else {\n this.hide();\n }\n };\n\n private handleClick = (e: Event) => {\n e.stopPropagation();\n this.toggle();\n };\n\n private handleFocus = () => {\n this.show();\n };\n\n private handleBlur = () => {\n this.hide();\n };\n\n private clearTimeouts() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private async updatePosition() {\n if (!this.targetEl || !this.floatingEl || !this.isVisible) return;\n\n // Use autoPlacement only for bottom-start (dropdown default)\n // For other placements, respect the manual placement with flip fallback\n // const useAutoPlacement = this.placement === 'bottom-start';\n\n const middleware = [\n offset(this.offset),\n // useAutoPlacement\n // ? autoPlacement({\n // allowedPlacements: ['bottom-start', 'bottom-end', 'bottom', 'top-start', 'top-end', 'top', 'right-start', 'right-end', 'right', 'left-start', 'left-end', 'left'],\n // boundary: document.body,\n // })\n // :\n flip({\n fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],\n }),\n shift({\n padding: 8,\n }),\n ];\n\n const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {\n placement: this.placement,\n middleware,\n strategy: 'fixed',\n });\n\n Object.assign(this.floatingEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n zIndex: this.zIndex.toString(),\n });\n\n // Update arrow if enabled\n if (this.arrow) {\n this.updateArrow(placement);\n }\n }\n\n private updateArrow(placement: Placement) {\n const arrow = this.floatingEl?.querySelector('.floating-arrow') as HTMLElement;\n if (!arrow) return;\n\n // Remove all arrow classes\n arrow.className = 'floating-arrow';\n\n // Add placement-specific class\n const side = placement.split('-')[0];\n arrow.classList.add(`arrow-${side}`);\n }\n\n @Method()\n async show(): Promise<void> {\n if (this.disabled || this.isVisible) return;\n\n this.bcmShow.emit();\n\n // Portalling: Move the floating element to the body\n if (this.appendToBody && this.floatingEl) {\n this.originalParent = this.floatingEl.parentNode;\n this.originalNextSibling = this.floatingEl.nextSibling;\n document.body.appendChild(this.floatingEl);\n }\n\n this.isVisible = true;\n\n // Use requestAnimationFrame to ensure the element is visible before positioning\n await new Promise(resolve => requestAnimationFrame(resolve));\n await this.updatePosition();\n }\n\n @Method()\n async hide(): Promise<void> {\n if (!this.isVisible) return;\n\n this.bcmHide.emit();\n this.isVisible = false;\n\n // Portalling: Restore the floating element to its original position\n if (this.appendToBody && this.floatingEl && this.originalParent) {\n if (this.originalNextSibling) {\n this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);\n } else {\n this.originalParent.appendChild(this.floatingEl);\n }\n this.originalParent = undefined;\n this.originalNextSibling = undefined;\n }\n\n if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {\n this.floatingEl.parentNode.removeChild(this.floatingEl);\n }\n }\n\n @Method()\n async toggle(): Promise<void> {\n if (this.isVisible) {\n await this.hide();\n } else {\n await this.show();\n }\n }\n\n @Method()\n async updatePositioning(): Promise<void> {\n await this.updatePosition();\n }\n\n private setupFloatingObserver() {\n if (!this.floatingEl) return;\n\n // Observe floating element size changes for position updates\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n\n this.resizeObserver.observe(this.floatingEl);\n }\n\n render() {\n const floatingClasses = {\n 'floating-content': true,\n 'floating-visible': this.isVisible,\n 'floating-hidden': !this.isVisible,\n 'floating-with-arrow': this.arrow,\n 'floating-destroy-on-hide': this.destroyOnHide,\n };\n\n return (\n <Host>\n <div\n class={floatingClasses}\n style={{\n position: 'fixed',\n top: '0px',\n left: '0px',\n zIndex: this.zIndex.toString(),\n display: this.isVisible ? 'block' : 'none',\n visibility: this.isVisible ? 'visible' : 'hidden',\n opacity: this.isVisible ? '1' : '0',\n pointerEvents: this.isVisible ? 'auto' : 'none',\n }}\n >\n {this.arrow && <div class=\"floating-arrow\" />}\n <div class=\"floating-wrapper\">\n <slot></slot>\n </div>\n </div>\n <div style={{ display: 'none' }}>\n <slot name=\"fallback\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -106,12 +106,12 @@ const Badge = /*@__PURE__*/ proxyCustomElement(class Badge extends H {
106
106
  };
107
107
  }
108
108
  render() {
109
- return (h("div", { key: 'b0a8277ca8db5c5185934d3317d3eb9c9c1d716e', class: "relative inline-flex" }, h("slot", { key: 'c01defe477f2e3f4ea3044dea4ab888ec254c447' }), h("div", { key: '30cb7f923a995af3c648ea396fc65f4b8b7424be', role: "status", "aria-live": "polite", "aria-label": this.status ? `Status: ${this.status}` : undefined, class: this.classes({
109
+ return (h("div", { key: 'da26bf1e14ff4098562a3d594ec9c895694f62fa', class: "relative inline-flex" }, h("slot", { key: 'f92bff170f95619ac79bdd0cfb7970e16e581d26' }), h("div", { key: '4379aac0216eec1de7e0908cfa0531c80e8dab23', role: "status", "aria-live": "polite", "aria-label": this.status ? `Status: ${this.status}` : undefined, class: this.classes({
110
110
  size: this.size,
111
111
  variant: this.variant,
112
112
  position: this.position,
113
113
  blink: this.blink,
114
- }), style: Object.assign(Object.assign({}, this.badgeStyle), this.offsetStyle) }, this.variant == 'text' && h("slot", { key: 'ca64be7fb4f14e7287c93f2223894552b96a68e8', name: "badge" }, this.text))));
114
+ }), style: Object.assign(Object.assign({}, this.badgeStyle), this.offsetStyle) }, this.variant == 'text' && h("slot", { key: '63f5bf1a342f9136a012a98844926dfdee7da40d', name: "badge" }, this.text))));
115
115
  }
116
116
  static get style() { return BcmBadgeStyle0; }
117
117
  }, [1, "bcm-badge", {
@@ -142,4 +142,4 @@ defineCustomElement();
142
142
 
143
143
  export { Badge as B, defineCustomElement as d };
144
144
 
145
- //# sourceMappingURL=p-69f4b010.js.map
145
+ //# sourceMappingURL=p-4cc3e4d7.js.map
@@ -1 +1 @@
1
- {"file":"p-69f4b010.js","mappings":"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","names":["tv"],"sources":["src/components/badge/badge.css?tag=bcm-badge&encapsulation=shadow","src/components/badge/badge.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --bcm-badge-bg: var(--bcm-ui-color-background-default-default);\n --bcm-badge-text: var(--bcm-ui-color-text-default);\n --bcm-badge-radius: 9999px;\n}\n\n::slotted([slot='badge']) {\n color: var(--bcm-badge-text);\n font-weight: 500;\n}\n","import { Component, ComponentInterface, Prop, h } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n/**\n * @component BcmBadge\n * @description A versatile badge component that can be positioned around its container.\n * Supports different sizes, variants (dot/text), colors, and positioning options.\n * Can display status indicators with optional blinking animation.\n *\n * @example Basic usage\n * <bcm-badge color=\"primary\" position=\"top-right\">\n * <div>Container Content</div>\n * <span slot=\"badge\">New</span>\n * </bcm-badge>\n *\n * @example Status indicator with blink\n * <bcm-badge variant=\"dot\" color=\"success\" blink={true} status=\"Online\">\n * <div>User Profile</div>\n * </bcm-badge>\n */\n@Component({\n tag: 'bcm-badge',\n styleUrl: 'badge.css',\n shadow: true,\n})\nexport class Badge implements ComponentInterface {\n /**\n * Determines the size of the badge.\n * @type {'small' | 'medium' | 'large'}\n * @default 'medium'\n */\n @Prop()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Sets the visual variant of the badge.\n * 'dot': Appears as a small dot indicator\n * 'text': Displays content as text\n * @type {'dot' | 'text'}\n * @default 'text'\n */\n @Prop()\n variant: 'dot' | 'text' = 'text';\n\n /**\n * Defines the color of the badge.\n * Uses system color variables (e.g., 'primary', 'success', 'warning', etc.)\n * @type {string}\n * @optional\n */\n @Prop()\n color?: string;\n\n /**\n * Enables soft color mode for the badge.\n * When true, uses lighter tones and pastel colors.\n * @type {boolean}\n * @default false\n */\n @Prop()\n soft: boolean = false;\n\n /**\n * Enables blinking animation for the badge.\n * Useful for drawing attention or indicating active status.\n * @type {boolean}\n * @default false\n */\n @Prop()\n blink: boolean = false;\n\n /**\n * Status message for accessibility purposes.\n * Will be read by screen readers.\n * @type {string}\n * @optional\n */\n @Prop()\n status?: string;\n\n /**\n * Sets the position of the badge relative to its container.\n * @type {'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'}\n * @default 'top-right'\n */\n @Prop()\n position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n\n /**\n * Fine-tune the badge position with custom offset.\n * Format: \"x,y\" in pixels (e.g., \"10,-5\")\n * @type {string}\n * @optional\n */\n @Prop()\n offset: string;\n\n /**\n * Text to be displayed inside the badge.\n * Used when variant is set to 'text'.\n * Can be overridden using the \"badge\" slot.\n * @type {string}\n * @optional\n */\n @Prop()\n text?: string;\n\n private classes = tv({\n base: 'badge bcm-ui-element absolute font-medium inline-flex items-center justify-center bg-[--bcm-badge-bg] text-[--bcm-badge-text] rounded-[--bcm-badge-radius] z-10',\n variants: {\n size: {\n small: 'gap-1 px-1 text-size-3',\n medium: 'gap-1 py-0.5 px-1.5 text-size-4',\n large: 'gap-2 py-1 px-2 text-size-5',\n },\n variant: {\n dot: 'gap-0 p-0 text-[0px] leading-none',\n text: '',\n },\n position: {\n 'top-right': '-top-1 -right-1',\n 'top-left': '-top-1 -left-1',\n 'bottom-right': '-bottom-1 -right-1',\n 'bottom-left': '-bottom-1 -left-1',\n },\n blink: {\n true: 'after:content-[\"\"] after:absolute after:rounded-full after:bg-[--bcm-badge-bg] after:animate-blink after:w-full after:h-full',\n },\n },\n compoundVariants: [\n {\n variant: 'dot',\n size: 'small',\n class: 'size-1',\n },\n {\n variant: 'dot',\n size: 'medium',\n class: 'size-1.5',\n },\n {\n variant: 'dot',\n size: 'large',\n class: 'size-2',\n },\n ],\n defaultVariants: {\n variant: 'text',\n size: 'medium',\n position: 'top-right',\n blink: false,\n },\n });\n\n private get offsetStyle() {\n if (!this.offset) return {};\n const [x = 0, y = 0] = this.offset.split(',').map(val => val.trim());\n return { transform: `translate(${x}px, ${y}px)` };\n }\n\n private get badgeStyle() {\n if (!this.color) return {};\n const variantType = this.soft ? 'soft' : 'vivid';\n\n return {\n '--bcm-badge-bg': `var(--bcm-ui-color-background-${variantType}-${this.color}-default)`,\n '--bcm-badge-text': this.soft ? `var(--bcm-ui-color-text-palette-${this.color})` : 'var(--bcm-ui-color-text-base)',\n };\n }\n\n render() {\n return (\n <div class=\"relative inline-flex\">\n <slot></slot>\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={this.status ? `Status: ${this.status}` : undefined}\n class={this.classes({\n size: this.size,\n variant: this.variant,\n position: this.position,\n blink: this.blink,\n })}\n style={{\n ...this.badgeStyle,\n ...this.offsetStyle,\n }}\n >\n {this.variant == 'text' && <slot name=\"badge\">{this.text}</slot>}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"p-4cc3e4d7.js","mappings":"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","names":["tv"],"sources":["src/components/badge/badge.css?tag=bcm-badge&encapsulation=shadow","src/components/badge/badge.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --bcm-badge-bg: var(--bcm-ui-color-background-default-default);\n --bcm-badge-text: var(--bcm-ui-color-text-default);\n --bcm-badge-radius: 9999px;\n}\n\n::slotted([slot='badge']) {\n color: var(--bcm-badge-text);\n font-weight: 500;\n}\n","import { Component, ComponentInterface, Prop, h } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n/**\n * @component BcmBadge\n * @description A versatile badge component that can be positioned around its container.\n * Supports different sizes, variants (dot/text), colors, and positioning options.\n * Can display status indicators with optional blinking animation.\n *\n * @example Basic usage\n * <bcm-badge color=\"primary\" position=\"top-right\">\n * <div>Container Content</div>\n * <span slot=\"badge\">New</span>\n * </bcm-badge>\n *\n * @example Status indicator with blink\n * <bcm-badge variant=\"dot\" color=\"success\" blink={true} status=\"Online\">\n * <div>User Profile</div>\n * </bcm-badge>\n */\n@Component({\n tag: 'bcm-badge',\n styleUrl: 'badge.css',\n shadow: true,\n})\nexport class Badge implements ComponentInterface {\n /**\n * Determines the size of the badge.\n * @type {'small' | 'medium' | 'large'}\n * @default 'medium'\n */\n @Prop()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Sets the visual variant of the badge.\n * 'dot': Appears as a small dot indicator\n * 'text': Displays content as text\n * @type {'dot' | 'text'}\n * @default 'text'\n */\n @Prop()\n variant: 'dot' | 'text' = 'text';\n\n /**\n * Defines the color of the badge.\n * Uses system color variables (e.g., 'primary', 'success', 'warning', etc.)\n * @type {string}\n * @optional\n */\n @Prop()\n color?: string;\n\n /**\n * Enables soft color mode for the badge.\n * When true, uses lighter tones and pastel colors.\n * @type {boolean}\n * @default false\n */\n @Prop()\n soft: boolean = false;\n\n /**\n * Enables blinking animation for the badge.\n * Useful for drawing attention or indicating active status.\n * @type {boolean}\n * @default false\n */\n @Prop()\n blink: boolean = false;\n\n /**\n * Status message for accessibility purposes.\n * Will be read by screen readers.\n * @type {string}\n * @optional\n */\n @Prop()\n status?: string;\n\n /**\n * Sets the position of the badge relative to its container.\n * @type {'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'}\n * @default 'top-right'\n */\n @Prop()\n position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n\n /**\n * Fine-tune the badge position with custom offset.\n * Format: \"x,y\" in pixels (e.g., \"10,-5\")\n * @type {string}\n * @optional\n */\n @Prop()\n offset: string;\n\n /**\n * Text to be displayed inside the badge.\n * Used when variant is set to 'text'.\n * Can be overridden using the \"badge\" slot.\n * @type {string}\n * @optional\n */\n @Prop()\n text?: string;\n\n private classes = tv({\n base: 'badge bcm-ui-element absolute font-medium inline-flex items-center justify-center bg-[--bcm-badge-bg] text-[--bcm-badge-text] rounded-[--bcm-badge-radius] z-10',\n variants: {\n size: {\n small: 'gap-1 px-1 text-size-3',\n medium: 'gap-1 py-0.5 px-1.5 text-size-4',\n large: 'gap-2 py-1 px-2 text-size-5',\n },\n variant: {\n dot: 'gap-0 p-0 text-[0px] leading-none',\n text: '',\n },\n position: {\n 'top-right': '-top-1 -right-1',\n 'top-left': '-top-1 -left-1',\n 'bottom-right': '-bottom-1 -right-1',\n 'bottom-left': '-bottom-1 -left-1',\n },\n blink: {\n true: 'after:content-[\"\"] after:absolute after:rounded-full after:bg-[--bcm-badge-bg] after:animate-blink after:w-full after:h-full',\n },\n },\n compoundVariants: [\n {\n variant: 'dot',\n size: 'small',\n class: 'size-1',\n },\n {\n variant: 'dot',\n size: 'medium',\n class: 'size-1.5',\n },\n {\n variant: 'dot',\n size: 'large',\n class: 'size-2',\n },\n ],\n defaultVariants: {\n variant: 'text',\n size: 'medium',\n position: 'top-right',\n blink: false,\n },\n });\n\n private get offsetStyle() {\n if (!this.offset) return {};\n const [x = 0, y = 0] = this.offset.split(',').map(val => val.trim());\n return { transform: `translate(${x}px, ${y}px)` };\n }\n\n private get badgeStyle() {\n if (!this.color) return {};\n const variantType = this.soft ? 'soft' : 'vivid';\n\n return {\n '--bcm-badge-bg': `var(--bcm-ui-color-background-${variantType}-${this.color}-default)`,\n '--bcm-badge-text': this.soft ? `var(--bcm-ui-color-text-palette-${this.color})` : 'var(--bcm-ui-color-text-base)',\n };\n }\n\n render() {\n return (\n <div class=\"relative inline-flex\">\n <slot></slot>\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={this.status ? `Status: ${this.status}` : undefined}\n class={this.classes({\n size: this.size,\n variant: this.variant,\n position: this.position,\n blink: this.blink,\n })}\n style={{\n ...this.badgeStyle,\n ...this.offsetStyle,\n }}\n >\n {this.variant == 'text' && <slot name=\"badge\">{this.text}</slot>}\n </div>\n </div>\n );\n }\n}\n"],"version":3}