le-kit 0.1.16 → 0.1.18

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 (237) hide show
  1. package/dist/cjs/{index-CHzu3ydp.js → index-pT2cVC5w.js} +10 -4
  2. package/dist/cjs/index-pT2cVC5w.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +4 -2
  4. package/dist/cjs/le-box.cjs.entry.js +4 -4
  5. package/dist/cjs/le-button_13.cjs.entry.js +204 -30
  6. package/dist/cjs/le-card.cjs.entry.js +4 -4
  7. package/dist/cjs/le-combobox.cjs.entry.js +3 -3
  8. package/dist/cjs/le-header-placeholder.cjs.entry.js +1 -1
  9. package/dist/cjs/le-kit.cjs.js +4 -2
  10. package/dist/cjs/le-kit.cjs.js.map +1 -1
  11. package/dist/cjs/le-multiselect.cjs.entry.js +3 -3
  12. package/dist/cjs/le-number-input.cjs.entry.js +4 -4
  13. package/dist/cjs/le-round-progress.cjs.entry.js +3 -3
  14. package/dist/cjs/le-segmented-control.cjs.entry.js +3 -3
  15. package/dist/cjs/le-stack.cjs.entry.js +4 -4
  16. package/dist/cjs/le-tab-bar.cjs.entry.js +3 -3
  17. package/dist/cjs/le-tab-panel.cjs.entry.js +3 -3
  18. package/dist/cjs/le-tab.cjs.entry.js +7 -4
  19. package/dist/cjs/le-tabs.cjs.entry.js +4 -4
  20. package/dist/cjs/le-tag.cjs.entry.js +3 -3
  21. package/dist/cjs/le-text.cjs.entry.js +4 -4
  22. package/dist/cjs/le-turntable.cjs.entry.js +3 -3
  23. package/dist/cjs/loader.cjs.js +3 -1
  24. package/dist/cjs/loader.cjs.js.map +1 -1
  25. package/dist/cjs/{utils-CYOKcOW8.js → utils-ByTskwtC.js} +3 -3
  26. package/dist/cjs/{utils-CYOKcOW8.js.map → utils-ByTskwtC.js.map} +1 -1
  27. package/dist/collection/collection-manifest.json +2 -2
  28. package/dist/collection/components/le-button/le-button.js +8 -6
  29. package/dist/collection/components/le-button/le-button.js.map +1 -1
  30. package/dist/collection/components/le-component/le-component.js +2 -0
  31. package/dist/collection/components/le-component/le-component.js.map +1 -1
  32. package/dist/collection/components/le-current-heading/le-current-heading.css +1 -0
  33. package/dist/collection/dist/components/assets/custom-elements.json +787 -791
  34. package/dist/components/assets/custom-elements.json +787 -791
  35. package/dist/components/le-box.js +14 -14
  36. package/dist/components/le-box.js.map +1 -1
  37. package/dist/components/le-button2.js +97 -89
  38. package/dist/components/le-button2.js.map +1 -1
  39. package/dist/components/le-card.js +14 -14
  40. package/dist/components/le-card.js.map +1 -1
  41. package/dist/components/le-collapse.js +15 -14
  42. package/dist/components/le-collapse.js.map +1 -1
  43. package/dist/components/le-combobox.js +14 -14
  44. package/dist/components/le-combobox.js.map +1 -1
  45. package/dist/components/le-current-heading.js +5 -5
  46. package/dist/components/le-current-heading.js.map +1 -1
  47. package/dist/components/le-dropdown-base2.js +6 -6
  48. package/dist/components/le-dropdown-base2.js.map +1 -1
  49. package/dist/components/le-header-placeholder.js +3 -3
  50. package/dist/components/le-header.js +16 -14
  51. package/dist/components/le-header.js.map +1 -1
  52. package/dist/components/le-multiselect.js +15 -15
  53. package/dist/components/le-multiselect.js.map +1 -1
  54. package/dist/components/le-number-input.js +14 -14
  55. package/dist/components/le-number-input.js.map +1 -1
  56. package/dist/components/le-popover2.js +168 -5
  57. package/dist/components/le-popover2.js.map +1 -1
  58. package/dist/components/le-round-progress.js +5 -5
  59. package/dist/components/le-round-progress.js.map +1 -1
  60. package/dist/components/le-scroll-progress.js +5 -5
  61. package/dist/components/le-scroll-progress.js.map +1 -1
  62. package/dist/components/le-segmented-control.js +15 -15
  63. package/dist/components/le-segmented-control.js.map +1 -1
  64. package/dist/components/le-stack.js +14 -14
  65. package/dist/components/le-stack.js.map +1 -1
  66. package/dist/components/le-tab-bar.js +15 -15
  67. package/dist/components/le-tab-bar.js.map +1 -1
  68. package/dist/components/le-tab-panel.js +14 -14
  69. package/dist/components/le-tab-panel.js.map +1 -1
  70. package/dist/components/le-tab2.js +17 -14
  71. package/dist/components/le-tab2.js.map +1 -1
  72. package/dist/components/le-tabs.js +15 -15
  73. package/dist/components/le-tabs.js.map +1 -1
  74. package/dist/components/le-tag2.js +14 -14
  75. package/dist/components/le-tag2.js.map +1 -1
  76. package/dist/components/le-text.js +14 -14
  77. package/dist/components/le-text.js.map +1 -1
  78. package/dist/components/le-turntable.js +5 -5
  79. package/dist/components/le-turntable.js.map +1 -1
  80. package/dist/docs.json +8 -8
  81. package/dist/esm/{index-hmBwv43R.js → index-CNv6tzAt.js} +10 -4
  82. package/dist/esm/index-CNv6tzAt.js.map +1 -0
  83. package/dist/esm/index.js +4 -2
  84. package/dist/esm/le-box.entry.js +4 -4
  85. package/dist/esm/le-box.entry.js.map +1 -1
  86. package/dist/esm/le-button_13.entry.js +204 -30
  87. package/dist/esm/le-card.entry.js +4 -4
  88. package/dist/esm/le-card.entry.js.map +1 -1
  89. package/dist/esm/le-combobox.entry.js +3 -3
  90. package/dist/esm/le-combobox.entry.js.map +1 -1
  91. package/dist/esm/le-header-placeholder.entry.js +1 -1
  92. package/dist/esm/le-kit.js +5 -3
  93. package/dist/esm/le-kit.js.map +1 -1
  94. package/dist/esm/le-multiselect.entry.js +3 -3
  95. package/dist/esm/le-multiselect.entry.js.map +1 -1
  96. package/dist/esm/le-number-input.entry.js +4 -4
  97. package/dist/esm/le-number-input.entry.js.map +1 -1
  98. package/dist/esm/le-round-progress.entry.js +3 -3
  99. package/dist/esm/le-round-progress.entry.js.map +1 -1
  100. package/dist/esm/le-segmented-control.entry.js +3 -3
  101. package/dist/esm/le-segmented-control.entry.js.map +1 -1
  102. package/dist/esm/le-stack.entry.js +4 -4
  103. package/dist/esm/le-stack.entry.js.map +1 -1
  104. package/dist/esm/le-tab-bar.entry.js +3 -3
  105. package/dist/esm/le-tab-bar.entry.js.map +1 -1
  106. package/dist/esm/le-tab-panel.entry.js +3 -3
  107. package/dist/esm/le-tab-panel.entry.js.map +1 -1
  108. package/dist/esm/le-tab.entry.js +7 -4
  109. package/dist/esm/le-tab.entry.js.map +1 -1
  110. package/dist/esm/le-tabs.entry.js +4 -4
  111. package/dist/esm/le-tabs.entry.js.map +1 -1
  112. package/dist/esm/le-tag.entry.js +3 -3
  113. package/dist/esm/le-tag.entry.js.map +1 -1
  114. package/dist/esm/le-text.entry.js +4 -4
  115. package/dist/esm/le-text.entry.js.map +1 -1
  116. package/dist/esm/le-turntable.entry.js +3 -3
  117. package/dist/esm/le-turntable.entry.js.map +1 -1
  118. package/dist/esm/loader.js +4 -2
  119. package/dist/esm/{utils-DRTFlnxz.js → utils-BzC2tvPX.js} +3 -3
  120. package/dist/esm/{utils-DRTFlnxz.js.map → utils-BzC2tvPX.js.map} +1 -1
  121. package/dist/le-kit/dist/components/assets/custom-elements.json +787 -791
  122. package/dist/le-kit/index.esm.js +1 -1
  123. package/dist/le-kit/le-kit.esm.js +1 -1
  124. package/dist/le-kit/le-kit.esm.js.map +1 -1
  125. package/dist/le-kit/p-269fb44f.entry.js +2 -0
  126. package/dist/le-kit/p-269fb44f.entry.js.map +1 -0
  127. package/dist/le-kit/p-31c3649c.entry.js +2 -0
  128. package/dist/le-kit/p-31c3649c.entry.js.map +1 -0
  129. package/dist/le-kit/p-3829f572.entry.js +2 -0
  130. package/dist/le-kit/p-3829f572.entry.js.map +1 -0
  131. package/dist/le-kit/p-629c5e13.entry.js +2 -0
  132. package/dist/le-kit/p-629c5e13.entry.js.map +1 -0
  133. package/dist/le-kit/p-684adc9f.entry.js +2 -0
  134. package/dist/le-kit/p-684adc9f.entry.js.map +1 -0
  135. package/dist/le-kit/p-7d316315.entry.js +2 -0
  136. package/dist/le-kit/p-7d316315.entry.js.map +1 -0
  137. package/dist/le-kit/p-8a78110f.entry.js +2 -0
  138. package/dist/le-kit/p-8a78110f.entry.js.map +1 -0
  139. package/dist/le-kit/p-8afe6862.entry.js +2 -0
  140. package/dist/le-kit/p-8afe6862.entry.js.map +1 -0
  141. package/dist/le-kit/p-95cf203e.entry.js +2 -0
  142. package/dist/le-kit/p-95cf203e.entry.js.map +1 -0
  143. package/dist/le-kit/p-9ba2bfb3.entry.js +2 -0
  144. package/dist/le-kit/p-9ba2bfb3.entry.js.map +1 -0
  145. package/dist/le-kit/{p-hmBwv43R.js → p-CNv6tzAt.js} +2 -2
  146. package/dist/le-kit/p-CNv6tzAt.js.map +1 -0
  147. package/dist/le-kit/{p-txKmCJHv.js → p-W4FbLlut.js} +2 -2
  148. package/dist/le-kit/{p-txKmCJHv.js.map → p-W4FbLlut.js.map} +1 -1
  149. package/dist/le-kit/p-aaec0169.entry.js +2 -0
  150. package/dist/le-kit/p-aaec0169.entry.js.map +1 -0
  151. package/dist/le-kit/p-b3531106.entry.js +2 -0
  152. package/dist/le-kit/p-b3531106.entry.js.map +1 -0
  153. package/dist/le-kit/p-c83a1255.entry.js +2 -0
  154. package/dist/le-kit/p-c83a1255.entry.js.map +1 -0
  155. package/dist/le-kit/p-d2a5d431.entry.js +2 -0
  156. package/dist/le-kit/p-d2a5d431.entry.js.map +1 -0
  157. package/dist/le-kit/p-deef1f4d.entry.js +2 -0
  158. package/dist/le-kit/p-deef1f4d.entry.js.map +1 -0
  159. package/dist/le-kit/p-e07d4b78.entry.js +2 -0
  160. package/dist/le-kit/p-e4618b36.entry.js +2 -0
  161. package/dist/le-kit/p-e4618b36.entry.js.map +1 -0
  162. package/dist/types/components/le-button/le-button.d.ts +1 -1
  163. package/dist/types/components.d.ts +2 -2
  164. package/dist/types/stencil-public-runtime.d.ts +43 -0
  165. package/package.json +1 -1
  166. package/dist/cjs/index-CHzu3ydp.js.map +0 -1
  167. package/dist/cjs/le-box.entry.cjs.js.map +0 -1
  168. package/dist/cjs/le-button.le-checkbox.le-collapse.le-component.le-current-heading.le-dropdown-base.le-header.le-popover.le-popup.le-scroll-progress.le-select.le-slot.le-string-input.entry.cjs.js.map +0 -1
  169. package/dist/cjs/le-card.entry.cjs.js.map +0 -1
  170. package/dist/cjs/le-combobox.entry.cjs.js.map +0 -1
  171. package/dist/cjs/le-header-placeholder.entry.cjs.js.map +0 -1
  172. package/dist/cjs/le-multiselect.entry.cjs.js.map +0 -1
  173. package/dist/cjs/le-number-input.entry.cjs.js.map +0 -1
  174. package/dist/cjs/le-round-progress.entry.cjs.js.map +0 -1
  175. package/dist/cjs/le-segmented-control.entry.cjs.js.map +0 -1
  176. package/dist/cjs/le-stack.entry.cjs.js.map +0 -1
  177. package/dist/cjs/le-tab-bar.entry.cjs.js.map +0 -1
  178. package/dist/cjs/le-tab-panel.entry.cjs.js.map +0 -1
  179. package/dist/cjs/le-tab.entry.cjs.js.map +0 -1
  180. package/dist/cjs/le-tabs.entry.cjs.js.map +0 -1
  181. package/dist/cjs/le-tag.entry.cjs.js.map +0 -1
  182. package/dist/cjs/le-text.entry.cjs.js.map +0 -1
  183. package/dist/cjs/le-turntable.entry.cjs.js.map +0 -1
  184. package/dist/esm/index-hmBwv43R.js.map +0 -1
  185. package/dist/esm/le-button.le-checkbox.le-collapse.le-component.le-current-heading.le-dropdown-base.le-header.le-popover.le-popup.le-scroll-progress.le-select.le-slot.le-string-input.entry.js.map +0 -1
  186. package/dist/le-kit/le-box.entry.esm.js.map +0 -1
  187. package/dist/le-kit/le-button.le-checkbox.le-collapse.le-component.le-current-heading.le-dropdown-base.le-header.le-popover.le-popup.le-scroll-progress.le-select.le-slot.le-string-input.entry.esm.js.map +0 -1
  188. package/dist/le-kit/le-card.entry.esm.js.map +0 -1
  189. package/dist/le-kit/le-combobox.entry.esm.js.map +0 -1
  190. package/dist/le-kit/le-header-placeholder.entry.esm.js.map +0 -1
  191. package/dist/le-kit/le-multiselect.entry.esm.js.map +0 -1
  192. package/dist/le-kit/le-number-input.entry.esm.js.map +0 -1
  193. package/dist/le-kit/le-round-progress.entry.esm.js.map +0 -1
  194. package/dist/le-kit/le-segmented-control.entry.esm.js.map +0 -1
  195. package/dist/le-kit/le-stack.entry.esm.js.map +0 -1
  196. package/dist/le-kit/le-tab-bar.entry.esm.js.map +0 -1
  197. package/dist/le-kit/le-tab-panel.entry.esm.js.map +0 -1
  198. package/dist/le-kit/le-tab.entry.esm.js.map +0 -1
  199. package/dist/le-kit/le-tabs.entry.esm.js.map +0 -1
  200. package/dist/le-kit/le-tag.entry.esm.js.map +0 -1
  201. package/dist/le-kit/le-text.entry.esm.js.map +0 -1
  202. package/dist/le-kit/le-turntable.entry.esm.js.map +0 -1
  203. package/dist/le-kit/p-13a4dc1d.entry.js +0 -2
  204. package/dist/le-kit/p-13a4dc1d.entry.js.map +0 -1
  205. package/dist/le-kit/p-1a9e65d0.entry.js +0 -2
  206. package/dist/le-kit/p-1a9e65d0.entry.js.map +0 -1
  207. package/dist/le-kit/p-2708dc65.entry.js +0 -2
  208. package/dist/le-kit/p-2708dc65.entry.js.map +0 -1
  209. package/dist/le-kit/p-2b96a5bd.entry.js +0 -2
  210. package/dist/le-kit/p-32cbb683.entry.js +0 -2
  211. package/dist/le-kit/p-32cbb683.entry.js.map +0 -1
  212. package/dist/le-kit/p-476e1886.entry.js +0 -2
  213. package/dist/le-kit/p-476e1886.entry.js.map +0 -1
  214. package/dist/le-kit/p-67d702f9.entry.js +0 -2
  215. package/dist/le-kit/p-67d702f9.entry.js.map +0 -1
  216. package/dist/le-kit/p-6884e3e8.entry.js +0 -2
  217. package/dist/le-kit/p-6884e3e8.entry.js.map +0 -1
  218. package/dist/le-kit/p-704ad5e0.entry.js +0 -2
  219. package/dist/le-kit/p-704ad5e0.entry.js.map +0 -1
  220. package/dist/le-kit/p-88f9aa40.entry.js +0 -2
  221. package/dist/le-kit/p-88f9aa40.entry.js.map +0 -1
  222. package/dist/le-kit/p-8dd8a487.entry.js +0 -2
  223. package/dist/le-kit/p-8dd8a487.entry.js.map +0 -1
  224. package/dist/le-kit/p-97b7658a.entry.js +0 -2
  225. package/dist/le-kit/p-97b7658a.entry.js.map +0 -1
  226. package/dist/le-kit/p-c0925e92.entry.js +0 -2
  227. package/dist/le-kit/p-c0925e92.entry.js.map +0 -1
  228. package/dist/le-kit/p-c2494a0d.entry.js +0 -2
  229. package/dist/le-kit/p-c2494a0d.entry.js.map +0 -1
  230. package/dist/le-kit/p-ded51018.entry.js +0 -2
  231. package/dist/le-kit/p-ded51018.entry.js.map +0 -1
  232. package/dist/le-kit/p-e3db7974.entry.js +0 -2
  233. package/dist/le-kit/p-e3db7974.entry.js.map +0 -1
  234. package/dist/le-kit/p-f9b03aec.entry.js +0 -2
  235. package/dist/le-kit/p-f9b03aec.entry.js.map +0 -1
  236. package/dist/le-kit/p-hmBwv43R.js.map +0 -1
  237. /package/dist/le-kit/{p-2b96a5bd.entry.js.map → p-e07d4b78.entry.js.map} +0 -0
@@ -1,10 +1,10 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, h, transformTag } from '@stencil/core/internal/client';
2
2
  import { h as classnames } from './utils.js';
3
3
  import { d as defineCustomElement$2, a as defineCustomElement$3, b as defineCustomElement$4, c as defineCustomElement$5, e as defineCustomElement$8, f as defineCustomElement$9, g as defineCustomElement$a } from './le-button2.js';
4
4
  import { d as defineCustomElement$7 } from './le-dropdown-base2.js';
5
5
  import { d as defineCustomElement$6 } from './le-popover2.js';
6
6
 
7
- const leCardDefaultCss = ":host{display:block;--le-card-bg:var(--le-color-surface);--le-card-border-radius:var(--le-radius-lg);--le-card-shadow:var(--le-shadow-md);--le-card-shadow-elevated:var(--le-shadow-lg);--le-card-shadow-hover:var(--le-shadow-xl);--le-card-padding:var(--le-space-md);--le-card-border-color:var(--le-color-border);--le-card-transition:var(--le-transition-normal)}.card{background:var(--le-card-bg);border-radius:var(--le-card-border-radius);overflow:hidden;color:var(--le-color-text);box-shadow:var(--le-card-shadow)}:host>le-component.variant-outlined .card{border:1px solid var(--le-card-border-color);box-shadow:none}:host>le-component.variant-elevated .card{box-shadow:var(--le-card-shadow-elevated)}:host>le-component.interactive .card{cursor:pointer;transition:transform var(--le-card-transition), box-shadow var(--le-card-transition)}:host>le-component.interactive .card:hover{transform:translateY(-2px);box-shadow:var(--le-card-shadow-hover)}:host>le-component.interactive .card:focus-visible{outline:2px solid var(--le-color-border-focus);outline-offset:2px}.card-header{padding:var(--le-card-padding);padding-bottom:0}.card-header:empty{display:none}.card-content{padding:var(--le-card-padding)}.card-footer{padding:var(--le-card-padding);padding-top:0}.card-footer:empty{display:none}";
7
+ const leCardDefaultCss = () => `:host{display:block;--le-card-bg:var(--le-color-surface);--le-card-border-radius:var(--le-radius-lg);--le-card-shadow:var(--le-shadow-md);--le-card-shadow-elevated:var(--le-shadow-lg);--le-card-shadow-hover:var(--le-shadow-xl);--le-card-padding:var(--le-space-md);--le-card-border-color:var(--le-color-border);--le-card-transition:var(--le-transition-normal)}.card{background:var(--le-card-bg);border-radius:var(--le-card-border-radius);overflow:hidden;color:var(--le-color-text);box-shadow:var(--le-card-shadow)}:host>le-component.variant-outlined .card{border:1px solid var(--le-card-border-color);box-shadow:none}:host>le-component.variant-elevated .card{box-shadow:var(--le-card-shadow-elevated)}:host>le-component.interactive .card{cursor:pointer;transition:transform var(--le-card-transition), box-shadow var(--le-card-transition)}:host>le-component.interactive .card:hover{transform:translateY(-2px);box-shadow:var(--le-card-shadow-hover)}:host>le-component.interactive .card:focus-visible{outline:2px solid var(--le-color-border-focus);outline-offset:2px}.card-header{padding:var(--le-card-padding);padding-bottom:0}.card-header:empty{display:none}.card-content{padding:var(--le-card-padding)}.card-footer{padding:var(--le-card-padding);padding-top:0}.card-footer:empty{display:none}`;
8
8
 
9
9
  const LeCard$1 = /*@__PURE__*/ proxyCustomElement(class LeCard extends HTMLElement {
10
10
  constructor(registerHost) {
@@ -27,7 +27,7 @@ const LeCard$1 = /*@__PURE__*/ proxyCustomElement(class LeCard extends HTMLEleme
27
27
  render() {
28
28
  return (h("le-component", { key: '3878b21dafb24349fd9c178c784028302fb95214', component: "le-card", hostClass: classnames(`variant-${this.variant}`, { 'interactive': this.interactive }) }, h("div", { key: '41470ad363928c5a5f70947a1fc859db03cf7619', class: "card", part: "card" }, h("div", { key: '9e0d85016f98ee15eba90bbd4db004f9210b1bf3', class: "card-header", part: "header" }, h("le-slot", { key: 'dcd23b7da86e4026f2cc7fb62b410d7317ab2e2b', name: "header", label: "Header", description: "Card title", type: "text", tag: "h3" }, h("slot", { key: '0f2f616c950d7548484bd8c87befa7ecff6d374f', name: "header" }))), h("div", { key: '1d77598852e8755e477a505d29c77643cea446d4', class: "card-content", part: "content" }, h("le-slot", { key: 'fd94892b8489f727a3e951f1771cab53b0667799', name: "", label: "Content", description: "Card content", type: "textarea", tag: "p", required: true }, h("slot", { key: 'dc1c2deff9405fd838aee733bc6e4394f60fefd7' }))), h("div", { key: '2944fa4515119b1868567545fa131fe178d7a3cf', class: "card-footer", part: "footer" }, h("le-slot", { key: 'bdd9b5a1baf2ebf487120afa458ae85285b05fcf', name: "footer", label: "Footer", description: "Card footer with actions", "allowed-components": "le-button,le-link" }, h("slot", { key: '8a79b1baaf6720f1397c0bacf5f71dc97dff2777', name: "footer" }))))));
29
29
  }
30
- static get style() { return leCardDefaultCss; }
30
+ static get style() { return leCardDefaultCss(); }
31
31
  }, [769, "le-card", {
32
32
  "variant": [1],
33
33
  "interactive": [4]
@@ -39,52 +39,52 @@ function defineCustomElement$1() {
39
39
  const components = ["le-card", "le-button", "le-checkbox", "le-component", "le-dropdown-base", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
40
40
  components.forEach(tagName => { switch (tagName) {
41
41
  case "le-card":
42
- if (!customElements.get(tagName)) {
43
- customElements.define(tagName, LeCard$1);
42
+ if (!customElements.get(transformTag(tagName))) {
43
+ customElements.define(transformTag(tagName), LeCard$1);
44
44
  }
45
45
  break;
46
46
  case "le-button":
47
- if (!customElements.get(tagName)) {
47
+ if (!customElements.get(transformTag(tagName))) {
48
48
  defineCustomElement$a();
49
49
  }
50
50
  break;
51
51
  case "le-checkbox":
52
- if (!customElements.get(tagName)) {
52
+ if (!customElements.get(transformTag(tagName))) {
53
53
  defineCustomElement$9();
54
54
  }
55
55
  break;
56
56
  case "le-component":
57
- if (!customElements.get(tagName)) {
57
+ if (!customElements.get(transformTag(tagName))) {
58
58
  defineCustomElement$8();
59
59
  }
60
60
  break;
61
61
  case "le-dropdown-base":
62
- if (!customElements.get(tagName)) {
62
+ if (!customElements.get(transformTag(tagName))) {
63
63
  defineCustomElement$7();
64
64
  }
65
65
  break;
66
66
  case "le-popover":
67
- if (!customElements.get(tagName)) {
67
+ if (!customElements.get(transformTag(tagName))) {
68
68
  defineCustomElement$6();
69
69
  }
70
70
  break;
71
71
  case "le-popup":
72
- if (!customElements.get(tagName)) {
72
+ if (!customElements.get(transformTag(tagName))) {
73
73
  defineCustomElement$5();
74
74
  }
75
75
  break;
76
76
  case "le-select":
77
- if (!customElements.get(tagName)) {
77
+ if (!customElements.get(transformTag(tagName))) {
78
78
  defineCustomElement$4();
79
79
  }
80
80
  break;
81
81
  case "le-slot":
82
- if (!customElements.get(tagName)) {
82
+ if (!customElements.get(transformTag(tagName))) {
83
83
  defineCustomElement$3();
84
84
  }
85
85
  break;
86
86
  case "le-string-input":
87
- if (!customElements.get(tagName)) {
87
+ if (!customElements.get(transformTag(tagName))) {
88
88
  defineCustomElement$2();
89
89
  }
90
90
  break;
@@ -1 +1 @@
1
- {"file":"le-card.js","mappings":";;;;;;AAAA,MAAM,gBAAgB,GAAG,6wCAA6wC;;MCgCzxCA,QAAM,iBAAAC,kBAAA,CAAA,MAAA,MAAA,SAAA,WAAA,CAAA;;;;;;;;;AAGjB;;;AAGG;IACK,OAAO,GAAwC,SAAS;AAEhE;;AAEG;IACK,WAAW,GAAY,KAAK;IAEpC,MAAM,GAAA;QACJ,QACE,qEAAc,SAAS,EAAC,SAAS,EAAC,SAAS,EAAE,UAAU,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAA,CAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAA,EACrH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAA,EAC3B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,QAAQ,EAAA,EACpC,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAA,EACjF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,QAAQ,EAAA,CAAQ,CACnB,CACN,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,SAAS,EAAA,EACtC,CAAS,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,SAAS,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU,EAAC,GAAG,EAAC,GAAG,EAAC,QAAQ,EAAA,IAAA,EAAA,EAC1F,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACL,CACN,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,QAAQ,EAAA,EACpC,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAC,0BAA0B,EAAA,oBAAA,EAAoB,mBAAmB,EAAA,EACjH,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EAAA,CAAQ,CACnB,CACN,CACF,CACO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCard","__stencil_proxyCustomElement"],"sources":["src/components/le-card/le-card.default.css?tag=le-card&encapsulation=shadow","src/components/le-card/le-card.tsx"],"sourcesContent":["/**\n * Default mode styles for le-card\n * Uses global design tokens with component-specific overrides\n */\n:host {\n display: block;\n \n /* Component-specific tokens that map to global tokens */\n --le-card-bg: var(--le-color-surface);\n --le-card-border-radius: var(--le-radius-lg);\n --le-card-shadow: var(--le-shadow-md);\n --le-card-shadow-elevated: var(--le-shadow-lg);\n --le-card-shadow-hover: var(--le-shadow-xl);\n --le-card-padding: var(--le-space-md);\n --le-card-border-color: var(--le-color-border);\n --le-card-transition: var(--le-transition-normal);\n}\n\n.card {\n background: var(--le-card-bg);\n border-radius: var(--le-card-border-radius);\n overflow: hidden;\n color: var(--le-color-text);\n box-shadow: var(--le-card-shadow);\n}\n\n/* Variants - le-component gets the hostClass, so we use :host > le-component */\n:host > le-component.variant-outlined .card {\n border: 1px solid var(--le-card-border-color);\n box-shadow: none;\n}\n\n:host > le-component.variant-elevated .card {\n box-shadow: var(--le-card-shadow-elevated);\n}\n\n/* Interactive state */\n:host > le-component.interactive .card {\n cursor: pointer;\n transition: transform var(--le-card-transition), box-shadow var(--le-card-transition);\n}\n\n:host > le-component.interactive .card:hover {\n transform: translateY(-2px);\n box-shadow: var(--le-card-shadow-hover);\n}\n\n:host > le-component.interactive .card:focus-visible {\n outline: 2px solid var(--le-color-border-focus);\n outline-offset: 2px;\n}\n\n/* Sections */\n.card-header {\n padding: var(--le-card-padding);\n padding-bottom: 0;\n}\n\n.card-header:empty {\n display: none;\n}\n\n.card-content {\n padding: var(--le-card-padding);\n}\n\n.card-footer {\n padding: var(--le-card-padding);\n padding-top: 0;\n}\n\n.card-footer:empty {\n display: none;\n}\n","import { Component, Prop, h, Element } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A flexible card component with header, content, and footer slots.\n *\n * The card uses le-slot wrappers for each slot area. In admin mode,\n * le-slot shows placeholders for CMS editing. In default mode,\n * le-slot acts as a transparent passthrough.\n *\n * @slot header - Card header content (title, actions)\n * @slot - Default slot for main card content\n * @slot footer - Card footer content (buttons, links)\n *\n * @cssprop --le-card-bg - Card background color\n * @cssprop --le-card-border-radius - Card border radius\n * @cssprop --le-card-shadow - Card box shadow\n * @cssprop --le-card-padding - Card content padding\n *\n * @csspart card - The main card container\n * @csspart header - The card header section\n * @csspart content - The card content section\n * @csspart footer - The card footer section\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-card',\n styleUrl: 'le-card.default.css',\n shadow: true,\n})\nexport class LeCard {\n @Element() el: HTMLElement;\n\n /**\n * Card variant style\n * @allowedValues default | outlined | elevated\n */\n @Prop() variant: 'default' | 'outlined' | 'elevated' = 'default';\n\n /**\n * Whether the card is interactive (clickable)\n */\n @Prop() interactive: boolean = false;\n\n render() {\n return (\n <le-component component=\"le-card\" hostClass={classnames(`variant-${this.variant}`, { 'interactive': this.interactive })}>\n <div class=\"card\" part=\"card\">\n <div class=\"card-header\" part=\"header\">\n <le-slot name=\"header\" label=\"Header\" description=\"Card title\" type=\"text\" tag=\"h3\">\n <slot name=\"header\"></slot>\n </le-slot>\n </div>\n\n <div class=\"card-content\" part=\"content\">\n <le-slot name=\"\" label=\"Content\" description=\"Card content\" type=\"textarea\" tag=\"p\" required>\n <slot></slot>\n </le-slot>\n </div>\n\n <div class=\"card-footer\" part=\"footer\">\n <le-slot name=\"footer\" label=\"Footer\" description=\"Card footer with actions\" allowed-components=\"le-button,le-link\">\n <slot name=\"footer\"></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n );\n }\n}\n"],"version":3}
1
+ {"file":"le-card.js","mappings":";;;;;;AAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,2wCAA2wC,CAAC;;MCgC/xCA,QAAM,iBAAAC,kBAAA,CAAA,MAAA,MAAA,SAAA,WAAA,CAAA;;;;;;;;;AAGjB;;;AAGG;IACK,OAAO,GAAwC,SAAS;AAEhE;;AAEG;IACK,WAAW,GAAY,KAAK;IAEpC,MAAM,GAAA;QACJ,QACE,qEAAc,SAAS,EAAC,SAAS,EAAC,SAAS,EAAE,UAAU,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAA,CAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAA,EACrH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAA,EAC3B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,QAAQ,EAAA,EACpC,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAA,EACjF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,QAAQ,EAAA,CAAQ,CACnB,CACN,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,SAAS,EAAA,EACtC,CAAS,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,SAAS,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU,EAAC,GAAG,EAAC,GAAG,EAAC,QAAQ,EAAA,IAAA,EAAA,EAC1F,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACL,CACN,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,QAAQ,EAAA,EACpC,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAC,0BAA0B,EAAA,oBAAA,EAAoB,mBAAmB,EAAA,EACjH,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EAAA,CAAQ,CACnB,CACN,CACF,CACO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCard","__stencil_proxyCustomElement"],"sources":["src/components/le-card/le-card.default.css?tag=le-card&encapsulation=shadow","src/components/le-card/le-card.tsx"],"sourcesContent":["/**\n * Default mode styles for le-card\n * Uses global design tokens with component-specific overrides\n */\n:host {\n display: block;\n \n /* Component-specific tokens that map to global tokens */\n --le-card-bg: var(--le-color-surface);\n --le-card-border-radius: var(--le-radius-lg);\n --le-card-shadow: var(--le-shadow-md);\n --le-card-shadow-elevated: var(--le-shadow-lg);\n --le-card-shadow-hover: var(--le-shadow-xl);\n --le-card-padding: var(--le-space-md);\n --le-card-border-color: var(--le-color-border);\n --le-card-transition: var(--le-transition-normal);\n}\n\n.card {\n background: var(--le-card-bg);\n border-radius: var(--le-card-border-radius);\n overflow: hidden;\n color: var(--le-color-text);\n box-shadow: var(--le-card-shadow);\n}\n\n/* Variants - le-component gets the hostClass, so we use :host > le-component */\n:host > le-component.variant-outlined .card {\n border: 1px solid var(--le-card-border-color);\n box-shadow: none;\n}\n\n:host > le-component.variant-elevated .card {\n box-shadow: var(--le-card-shadow-elevated);\n}\n\n/* Interactive state */\n:host > le-component.interactive .card {\n cursor: pointer;\n transition: transform var(--le-card-transition), box-shadow var(--le-card-transition);\n}\n\n:host > le-component.interactive .card:hover {\n transform: translateY(-2px);\n box-shadow: var(--le-card-shadow-hover);\n}\n\n:host > le-component.interactive .card:focus-visible {\n outline: 2px solid var(--le-color-border-focus);\n outline-offset: 2px;\n}\n\n/* Sections */\n.card-header {\n padding: var(--le-card-padding);\n padding-bottom: 0;\n}\n\n.card-header:empty {\n display: none;\n}\n\n.card-content {\n padding: var(--le-card-padding);\n}\n\n.card-footer {\n padding: var(--le-card-padding);\n padding-top: 0;\n}\n\n.card-footer:empty {\n display: none;\n}\n","import { Component, Prop, h, Element } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A flexible card component with header, content, and footer slots.\n *\n * The card uses le-slot wrappers for each slot area. In admin mode,\n * le-slot shows placeholders for CMS editing. In default mode,\n * le-slot acts as a transparent passthrough.\n *\n * @slot header - Card header content (title, actions)\n * @slot - Default slot for main card content\n * @slot footer - Card footer content (buttons, links)\n *\n * @cssprop --le-card-bg - Card background color\n * @cssprop --le-card-border-radius - Card border radius\n * @cssprop --le-card-shadow - Card box shadow\n * @cssprop --le-card-padding - Card content padding\n *\n * @csspart card - The main card container\n * @csspart header - The card header section\n * @csspart content - The card content section\n * @csspart footer - The card footer section\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-card',\n styleUrl: 'le-card.default.css',\n shadow: true,\n})\nexport class LeCard {\n @Element() el: HTMLElement;\n\n /**\n * Card variant style\n * @allowedValues default | outlined | elevated\n */\n @Prop() variant: 'default' | 'outlined' | 'elevated' = 'default';\n\n /**\n * Whether the card is interactive (clickable)\n */\n @Prop() interactive: boolean = false;\n\n render() {\n return (\n <le-component component=\"le-card\" hostClass={classnames(`variant-${this.variant}`, { 'interactive': this.interactive })}>\n <div class=\"card\" part=\"card\">\n <div class=\"card-header\" part=\"header\">\n <le-slot name=\"header\" label=\"Header\" description=\"Card title\" type=\"text\" tag=\"h3\">\n <slot name=\"header\"></slot>\n </le-slot>\n </div>\n\n <div class=\"card-content\" part=\"content\">\n <le-slot name=\"\" label=\"Content\" description=\"Card content\" type=\"textarea\" tag=\"p\" required>\n <slot></slot>\n </le-slot>\n </div>\n\n <div class=\"card-footer\" part=\"footer\">\n <le-slot name=\"footer\" label=\"Footer\" description=\"Card footer with actions\" allowed-components=\"le-button,le-link\">\n <slot name=\"footer\"></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n );\n }\n}\n"],"version":3}
@@ -1,9 +1,10 @@
1
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, h, Host, transformTag } from '@stencil/core/internal/client';
2
2
  import { d as defineCustomElement$2, a as defineCustomElement$3, b as defineCustomElement$4, c as defineCustomElement$5, e as defineCustomElement$8, f as defineCustomElement$9, g as defineCustomElement$a } from './le-button2.js';
3
3
  import { d as defineCustomElement$7 } from './le-dropdown-base2.js';
4
4
  import { d as defineCustomElement$6 } from './le-popover2.js';
5
5
 
6
- const leCollapseCss = ":host{--le-collapse-duration:var(--le-transition-normal);display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows var(--le-collapse-duration),\n opacity var(--le-collapse-duration)}:host([data-open=\"false\"]),:host([open=\"false\"]){grid-template-rows:0fr;opacity:0}:host([no-fading][data-open=\"false\"]),:host([no-fading][open=\"false\"]){opacity:1}.region{display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}:host([scroll-down]) .region{justify-content:flex-start}";
6
+ const leCollapseCss = () => `:host{--le-collapse-duration:var(--le-transition-normal);display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows var(--le-collapse-duration),
7
+ opacity var(--le-collapse-duration)}:host([data-open="false"]),:host([open="false"]){grid-template-rows:0fr;opacity:0}:host([no-fading][data-open="false"]),:host([no-fading][open="false"]){opacity:1}.region{display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}:host([scroll-down]) .region{justify-content:flex-start}`;
7
8
 
8
9
  const LeCollapse$1 = /*@__PURE__*/ proxyCustomElement(class LeCollapse extends HTMLElement {
9
10
  constructor(registerHost) {
@@ -65,7 +66,7 @@ const LeCollapse$1 = /*@__PURE__*/ proxyCustomElement(class LeCollapse extends H
65
66
  "open": ["onOpenChange"],
66
67
  "headerShrunk": ["onDrivenStateChange"]
67
68
  }; }
68
- static get style() { return leCollapseCss; }
69
+ static get style() { return leCollapseCss(); }
69
70
  }, [769, "le-collapse", {
70
71
  "open": [1540],
71
72
  "scrollDown": [516, "scroll-down"],
@@ -83,52 +84,52 @@ function defineCustomElement$1() {
83
84
  const components = ["le-collapse", "le-button", "le-checkbox", "le-component", "le-dropdown-base", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
84
85
  components.forEach(tagName => { switch (tagName) {
85
86
  case "le-collapse":
86
- if (!customElements.get(tagName)) {
87
- customElements.define(tagName, LeCollapse$1);
87
+ if (!customElements.get(transformTag(tagName))) {
88
+ customElements.define(transformTag(tagName), LeCollapse$1);
88
89
  }
89
90
  break;
90
91
  case "le-button":
91
- if (!customElements.get(tagName)) {
92
+ if (!customElements.get(transformTag(tagName))) {
92
93
  defineCustomElement$a();
93
94
  }
94
95
  break;
95
96
  case "le-checkbox":
96
- if (!customElements.get(tagName)) {
97
+ if (!customElements.get(transformTag(tagName))) {
97
98
  defineCustomElement$9();
98
99
  }
99
100
  break;
100
101
  case "le-component":
101
- if (!customElements.get(tagName)) {
102
+ if (!customElements.get(transformTag(tagName))) {
102
103
  defineCustomElement$8();
103
104
  }
104
105
  break;
105
106
  case "le-dropdown-base":
106
- if (!customElements.get(tagName)) {
107
+ if (!customElements.get(transformTag(tagName))) {
107
108
  defineCustomElement$7();
108
109
  }
109
110
  break;
110
111
  case "le-popover":
111
- if (!customElements.get(tagName)) {
112
+ if (!customElements.get(transformTag(tagName))) {
112
113
  defineCustomElement$6();
113
114
  }
114
115
  break;
115
116
  case "le-popup":
116
- if (!customElements.get(tagName)) {
117
+ if (!customElements.get(transformTag(tagName))) {
117
118
  defineCustomElement$5();
118
119
  }
119
120
  break;
120
121
  case "le-select":
121
- if (!customElements.get(tagName)) {
122
+ if (!customElements.get(transformTag(tagName))) {
122
123
  defineCustomElement$4();
123
124
  }
124
125
  break;
125
126
  case "le-slot":
126
- if (!customElements.get(tagName)) {
127
+ if (!customElements.get(transformTag(tagName))) {
127
128
  defineCustomElement$3();
128
129
  }
129
130
  break;
130
131
  case "le-string-input":
131
- if (!customElements.get(tagName)) {
132
+ if (!customElements.get(transformTag(tagName))) {
132
133
  defineCustomElement$2();
133
134
  }
134
135
  break;
@@ -1 +1 @@
1
- {"file":"le-collapse.js","mappings":";;;;;AAAA,MAAM,aAAa,GAAG,ogBAAogB;;MCyB7gBA,YAAU,iBAAAC,kBAAA,CAAA,MAAA,UAAA,SAAA,WAAA,CAAA;;;;;;;;;;IAImB,IAAI,GAAY,IAAI;;IAGT,UAAU,GAAY,KAAK;;IAG7B,QAAQ,GAAY,KAAK;;IAGT,sBAAsB,GACrF,KAAK;AAEP;;;AAGG;AAEH,IAAA,kBAAkB,CAAC,EAAS,EAAA;QAC1B,MAAM,CAAC,GAAG,EAAsC;QAChD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM;;IAGvB,YAAY,GAAY,KAAK;IAE9C,iBAAiB,GAAA;;;QAGf,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;IAIpB,gBAAgB,GAAA;QACd,IAAI,CAAC,cAAc,EAAE;;IAIb,YAAY,GAAA;QACpB,IAAI,CAAC,cAAc,EAAE;;IAIb,mBAAmB,GAAA;QAC3B,IAAI,CAAC,cAAc,EAAE;;IAGf,YAAY,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AAC5B,QAAA,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,KAAK;AAClE,QAAA,OAAO,IAAI;;IAGL,cAAc,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;QACpC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC;;IAGhD,MAAM,GAAA;AACJ,QAAA,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,WAAA,EAAY,IAAI,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,OAAO,EAAA,EACrD,CAAc,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,SAAS,EAAC,aAAa,EAAA,EACnC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAA,EAC/B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACO,CACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCollapse","__stencil_proxyCustomElement"],"sources":["src/components/le-collapse/le-collapse.css?tag=le-collapse&encapsulation=shadow","src/components/le-collapse/le-collapse.tsx"],"sourcesContent":[":host {\n --le-collapse-duration: var(--le-transition-normal);\n\n display: grid;\n grid-template-rows: 1fr;\n opacity: 1;\n transition:\n grid-template-rows var(--le-collapse-duration),\n opacity var(--le-collapse-duration);\n}\n\n:host([data-open=\"false\"]),\n:host([open=\"false\"]) {\n grid-template-rows: 0fr;\n opacity: 0;\n}\n:host([no-fading][data-open=\"false\"]),\n:host([no-fading][open=\"false\"]) {\n opacity: 1;\n}\n\n.region {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n overflow: hidden;\n}\n\n:host([scroll-down]) .region {\n justify-content: flex-start;\n}\n","import { Component, Element, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\n\nexport type LeCollapseAnimation = 'fade' | 'collapse' | 'fade-collapse';\n\n/**\n * Animated show/hide wrapper.\n *\n * Supports height collapse (auto->0) and/or fading.\n * Can optionally listen to the nearest `le-header` shrink events.\n *\n * @slot - Content to animate\n *\n * @cssprop --le-collapse-duration - Transition duration\n *\n * @csspart region - Collapsible region\n * @csspart content - Inner content\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-collapse',\n styleUrl: 'le-collapse.css',\n shadow: true,\n})\nexport class LeCollapse {\n @Element() el: HTMLElement;\n\n /** Whether the content should be shown. */\n @Prop({ mutable: true, reflect: true }) open: boolean = true;\n\n /** Whether the content should scroll down from the top when open. */\n @Prop({ attribute: 'scroll-down', reflect: true }) scrollDown: boolean = false;\n\n /** Stop fading the content when collapsing/expanding. */\n @Prop({ attribute: 'no-fading', reflect: true }) noFading: boolean = false;\n\n /** If true, collapse/expand based on the nearest header shrink event. */\n @Prop({ attribute: 'collapse-on-header-shrink', reflect: true }) collapseOnHeaderShrink: boolean =\n false;\n\n /**\n * Handles `leHeaderShrinkChange` events from the `le-header`.\n * In case multiple headers are present, only the nearest one in the DOM tree is used.\n */\n @Listen('leHeaderShrinkChange', { target: 'window' })\n handleHeaderShrink(ev: Event) {\n const e = ev as CustomEvent<{ shrunk: boolean }>;\n this.headerShrunk = !!e.detail?.shrunk;\n }\n\n @State() private headerShrunk: boolean = false;\n\n componentWillLoad() {\n // Stencil boolean props default to `false` when the attribute is missing.\n // For this component, the desired default is open=true.\n if (!this.el.hasAttribute('open')) {\n this.open = true;\n }\n }\n\n componentDidLoad() {\n this.applyOpenState();\n }\n\n @Watch('open')\n protected onOpenChange() {\n this.applyOpenState();\n }\n\n @Watch('headerShrunk')\n protected onDrivenStateChange() {\n this.applyOpenState();\n }\n\n private shouldBeOpen() {\n if (!this.open) return false;\n if (this.collapseOnHeaderShrink && this.headerShrunk) return false;\n return true;\n }\n\n private applyOpenState() {\n const nextOpen = this.shouldBeOpen();\n this.el.toggleAttribute('data-open', nextOpen);\n }\n\n render() {\n return (\n <Host data-open={this.shouldBeOpen() ? 'true' : 'false'}>\n <le-component component=\"le-collapse\">\n <div class=\"region\" part=\"region\">\n <slot></slot>\n </div>\n </le-component>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"le-collapse.js","mappings":";;;;;AAAA,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,uVAAuV,CAAC;;MCwB3UA,YAAU,iBAAAC,kBAAA,CAAA,MAAA,UAAA,SAAA,WAAA,CAAA;;;;;;;;;;IAImB,IAAI,GAAY,IAAI;;IAGT,UAAU,GAAY,KAAK;;IAG7B,QAAQ,GAAY,KAAK;;IAGT,sBAAsB,GACrF,KAAK;AAEP;;;AAGG;AAEH,IAAA,kBAAkB,CAAC,EAAS,EAAA;QAC1B,MAAM,CAAC,GAAG,EAAsC;QAChD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM;;IAGvB,YAAY,GAAY,KAAK;IAE9C,iBAAiB,GAAA;;;QAGf,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;IAIpB,gBAAgB,GAAA;QACd,IAAI,CAAC,cAAc,EAAE;;IAIb,YAAY,GAAA;QACpB,IAAI,CAAC,cAAc,EAAE;;IAIb,mBAAmB,GAAA;QAC3B,IAAI,CAAC,cAAc,EAAE;;IAGf,YAAY,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AAC5B,QAAA,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,KAAK;AAClE,QAAA,OAAO,IAAI;;IAGL,cAAc,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;QACpC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC;;IAGhD,MAAM,GAAA;AACJ,QAAA,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,WAAA,EAAY,IAAI,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,OAAO,EAAA,EACrD,CAAc,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,SAAS,EAAC,aAAa,EAAA,EACnC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAA,EAC/B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACO,CACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCollapse","__stencil_proxyCustomElement"],"sources":["src/components/le-collapse/le-collapse.css?tag=le-collapse&encapsulation=shadow","src/components/le-collapse/le-collapse.tsx"],"sourcesContent":[":host {\n --le-collapse-duration: var(--le-transition-normal);\n\n display: grid;\n grid-template-rows: 1fr;\n opacity: 1;\n transition:\n grid-template-rows var(--le-collapse-duration),\n opacity var(--le-collapse-duration);\n}\n\n:host([data-open=\"false\"]),\n:host([open=\"false\"]) {\n grid-template-rows: 0fr;\n opacity: 0;\n}\n:host([no-fading][data-open=\"false\"]),\n:host([no-fading][open=\"false\"]) {\n opacity: 1;\n}\n\n.region {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n overflow: hidden;\n}\n\n:host([scroll-down]) .region {\n justify-content: flex-start;\n}\n","import { Component, Element, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\n\nexport type LeCollapseAnimation = 'fade' | 'collapse' | 'fade-collapse';\n\n/**\n * Animated show/hide wrapper.\n *\n * Supports height collapse (auto->0) and/or fading.\n * Can optionally listen to the nearest `le-header` shrink events.\n *\n * @slot - Content to animate\n *\n * @cssprop --le-collapse-duration - Transition duration\n *\n * @csspart region - Collapsible region\n * @csspart content - Inner content\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-collapse',\n styleUrl: 'le-collapse.css',\n shadow: true,\n})\nexport class LeCollapse {\n @Element() el: HTMLElement;\n\n /** Whether the content should be shown. */\n @Prop({ mutable: true, reflect: true }) open: boolean = true;\n\n /** Whether the content should scroll down from the top when open. */\n @Prop({ attribute: 'scroll-down', reflect: true }) scrollDown: boolean = false;\n\n /** Stop fading the content when collapsing/expanding. */\n @Prop({ attribute: 'no-fading', reflect: true }) noFading: boolean = false;\n\n /** If true, collapse/expand based on the nearest header shrink event. */\n @Prop({ attribute: 'collapse-on-header-shrink', reflect: true }) collapseOnHeaderShrink: boolean =\n false;\n\n /**\n * Handles `leHeaderShrinkChange` events from the `le-header`.\n * In case multiple headers are present, only the nearest one in the DOM tree is used.\n */\n @Listen('leHeaderShrinkChange', { target: 'window' })\n handleHeaderShrink(ev: Event) {\n const e = ev as CustomEvent<{ shrunk: boolean }>;\n this.headerShrunk = !!e.detail?.shrunk;\n }\n\n @State() private headerShrunk: boolean = false;\n\n componentWillLoad() {\n // Stencil boolean props default to `false` when the attribute is missing.\n // For this component, the desired default is open=true.\n if (!this.el.hasAttribute('open')) {\n this.open = true;\n }\n }\n\n componentDidLoad() {\n this.applyOpenState();\n }\n\n @Watch('open')\n protected onOpenChange() {\n this.applyOpenState();\n }\n\n @Watch('headerShrunk')\n protected onDrivenStateChange() {\n this.applyOpenState();\n }\n\n private shouldBeOpen() {\n if (!this.open) return false;\n if (this.collapseOnHeaderShrink && this.headerShrunk) return false;\n return true;\n }\n\n private applyOpenState() {\n const nextOpen = this.shouldBeOpen();\n this.el.toggleAttribute('data-open', nextOpen);\n }\n\n render() {\n return (\n <Host data-open={this.shouldBeOpen() ? 'true' : 'false'}>\n <le-component component=\"le-collapse\">\n <div class=\"region\" part=\"region\">\n <slot></slot>\n </div>\n </le-component>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,9 +1,9 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, transformTag } from '@stencil/core/internal/client';
2
2
  import { d as defineCustomElement$2, a as defineCustomElement$3, b as defineCustomElement$4, c as defineCustomElement$5, e as defineCustomElement$8, f as defineCustomElement$9, g as defineCustomElement$a } from './le-button2.js';
3
3
  import { d as defineCustomElement$7 } from './le-dropdown-base2.js';
4
4
  import { d as defineCustomElement$6 } from './le-popover2.js';
5
5
 
6
- const leComboboxCss = ":host{display:inline-block;min-width:200px;--le-combobox-border-color:var(--le-color-primary, #3b82f6)}:host([disabled]){opacity:0.5;pointer-events:none}:host([full-width]){width:100%}.combobox-trigger{display:flex;align-items:center;width:100%;background:var(--le-combobox-bg, var(--le-color-surface, #fff));border:1px solid color-mix(in srgb, var(--le-combobox-border-color) 33%, transparent);border-radius:var(--le-combobox-border-radius, 0.375rem);transition:border-color 0.15s ease, box-shadow 0.15s ease}.combobox-trigger:hover:not(.is-disabled),:host(:focus-within) .combobox-trigger:not(.is-disabled){border-color:var(--le-combobox-border-color)}.combobox-trigger:focus-within{outline:2px solid var(--le-color-focus);outline-offset:2px}.combobox-trigger.is-open{border-color:var(--le-color-primary, #3b82f6)}.combobox-input{flex:1;border:none;outline:none}.combobox-input::part(container){border:none}.combobox-input::part(container):focus-within{outline:none !important}.combobox-input::placeholder{color:color-mix(in srgb, var(--le-color-text-secondary) 66%, transparent)}.combobox-trigger.is-disabled{cursor:not-allowed;background:var(--le-color-surface-disabled, #f9fafb)}.combobox-input:disabled{cursor:not-allowed}.combobox-clear{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;margin-right:0.25rem;color:var(--le-color-primary, #3b82f6);background:transparent;border:none;border-radius:0.25rem;cursor:pointer;opacity:0.6;transition:opacity 0.15s ease, background-color 0.15s ease}.combobox-clear:hover{opacity:1;background:var(--le-color-surface-hover, #f3f4f6)}.combobox-clear svg{width:0.875rem;height:0.875rem}.combobox-arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:100%;color:var(--le-color-primary, #3b82f6);transition:transform 0.2s ease}.combobox-arrow svg{width:1rem;height:1rem}.combobox-trigger.is-open .combobox-arrow{transform:rotate(180deg)}:host([size='small']) .combobox-trigger{--le-combobox-height:2rem}:host([size='small']) .combobox-input{--le-combobox-padding-x:0.5rem;--le-combobox-font-size:0.75rem}:host([size='large']) .combobox-trigger{--le-combobox-height:3rem}:host([size='large']) .combobox-input{--le-combobox-padding-x:1rem;--le-combobox-font-size:1rem}";
6
+ const leComboboxCss = () => `:host{display:inline-block;min-width:200px;--le-combobox-border-color:var(--le-color-primary, #3b82f6)}:host([disabled]){opacity:0.5;pointer-events:none}:host([full-width]){width:100%}.combobox-trigger{display:flex;align-items:center;width:100%;background:var(--le-combobox-bg, var(--le-color-surface, #fff));border:1px solid color-mix(in srgb, var(--le-combobox-border-color) 33%, transparent);border-radius:var(--le-combobox-border-radius, 0.375rem);transition:border-color 0.15s ease, box-shadow 0.15s ease}.combobox-trigger:hover:not(.is-disabled),:host(:focus-within) .combobox-trigger:not(.is-disabled){border-color:var(--le-combobox-border-color)}.combobox-trigger:focus-within{outline:2px solid var(--le-color-focus);outline-offset:2px}.combobox-trigger.is-open{border-color:var(--le-color-primary, #3b82f6)}.combobox-input{flex:1;border:none;outline:none}.combobox-input::part(container){border:none}.combobox-input::part(container):focus-within{outline:none !important}.combobox-input::placeholder{color:color-mix(in srgb, var(--le-color-text-secondary) 66%, transparent)}.combobox-trigger.is-disabled{cursor:not-allowed;background:var(--le-color-surface-disabled, #f9fafb)}.combobox-input:disabled{cursor:not-allowed}.combobox-clear{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;margin-right:0.25rem;color:var(--le-color-primary, #3b82f6);background:transparent;border:none;border-radius:0.25rem;cursor:pointer;opacity:0.6;transition:opacity 0.15s ease, background-color 0.15s ease}.combobox-clear:hover{opacity:1;background:var(--le-color-surface-hover, #f3f4f6)}.combobox-clear svg{width:0.875rem;height:0.875rem}.combobox-arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:100%;color:var(--le-color-primary, #3b82f6);transition:transform 0.2s ease}.combobox-arrow svg{width:1rem;height:1rem}.combobox-trigger.is-open .combobox-arrow{transform:rotate(180deg)}:host([size='small']) .combobox-trigger{--le-combobox-height:2rem}:host([size='small']) .combobox-input{--le-combobox-padding-x:0.5rem;--le-combobox-font-size:0.75rem}:host([size='large']) .combobox-trigger{--le-combobox-height:3rem}:host([size='large']) .combobox-input{--le-combobox-padding-x:1rem;--le-combobox-font-size:1rem}`;
7
7
 
8
8
  const LeCombobox$1 = /*@__PURE__*/ proxyCustomElement(class LeCombobox extends HTMLElement {
9
9
  constructor(registerHost) {
@@ -235,7 +235,7 @@ const LeCombobox$1 = /*@__PURE__*/ proxyCustomElement(class LeCombobox extends H
235
235
  "value": ["handleValueChange"],
236
236
  "options": ["handleOptionsChange"]
237
237
  }; }
238
- static get style() { return leComboboxCss; }
238
+ static get style() { return leComboboxCss(); }
239
239
  }, [769, "le-combobox", {
240
240
  "options": [1],
241
241
  "value": [1032],
@@ -265,52 +265,52 @@ function defineCustomElement$1() {
265
265
  const components = ["le-combobox", "le-button", "le-checkbox", "le-component", "le-dropdown-base", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
266
266
  components.forEach(tagName => { switch (tagName) {
267
267
  case "le-combobox":
268
- if (!customElements.get(tagName)) {
269
- customElements.define(tagName, LeCombobox$1);
268
+ if (!customElements.get(transformTag(tagName))) {
269
+ customElements.define(transformTag(tagName), LeCombobox$1);
270
270
  }
271
271
  break;
272
272
  case "le-button":
273
- if (!customElements.get(tagName)) {
273
+ if (!customElements.get(transformTag(tagName))) {
274
274
  defineCustomElement$a();
275
275
  }
276
276
  break;
277
277
  case "le-checkbox":
278
- if (!customElements.get(tagName)) {
278
+ if (!customElements.get(transformTag(tagName))) {
279
279
  defineCustomElement$9();
280
280
  }
281
281
  break;
282
282
  case "le-component":
283
- if (!customElements.get(tagName)) {
283
+ if (!customElements.get(transformTag(tagName))) {
284
284
  defineCustomElement$8();
285
285
  }
286
286
  break;
287
287
  case "le-dropdown-base":
288
- if (!customElements.get(tagName)) {
288
+ if (!customElements.get(transformTag(tagName))) {
289
289
  defineCustomElement$7();
290
290
  }
291
291
  break;
292
292
  case "le-popover":
293
- if (!customElements.get(tagName)) {
293
+ if (!customElements.get(transformTag(tagName))) {
294
294
  defineCustomElement$6();
295
295
  }
296
296
  break;
297
297
  case "le-popup":
298
- if (!customElements.get(tagName)) {
298
+ if (!customElements.get(transformTag(tagName))) {
299
299
  defineCustomElement$5();
300
300
  }
301
301
  break;
302
302
  case "le-select":
303
- if (!customElements.get(tagName)) {
303
+ if (!customElements.get(transformTag(tagName))) {
304
304
  defineCustomElement$4();
305
305
  }
306
306
  break;
307
307
  case "le-slot":
308
- if (!customElements.get(tagName)) {
308
+ if (!customElements.get(transformTag(tagName))) {
309
309
  defineCustomElement$3();
310
310
  }
311
311
  break;
312
312
  case "le-string-input":
313
- if (!customElements.get(tagName)) {
313
+ if (!customElements.get(transformTag(tagName))) {
314
314
  defineCustomElement$2();
315
315
  }
316
316
  break;
@@ -1 +1 @@
1
- {"file":"le-combobox.js","mappings":"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","names":["LeCombobox","__stencil_proxyCustomElement"],"sources":["src/components/le-combobox/le-combobox.css?tag=le-combobox&encapsulation=shadow","src/components/le-combobox/le-combobox.tsx"],"sourcesContent":["/**\n * le-combobox component styles\n *\n * CSS Custom Properties:\n * --le-combobox-padding-x\n * --le-combobox-font-size\n * --le-combobox-border-radius\n * --le-combobox-border-color\n * --le-combobox-bg\n * --le-combobox-color\n */\n\n:host {\n display: inline-block;\n min-width: 200px;\n --le-combobox-border-color: var(--le-color-primary, #3b82f6);\n}\n\n:host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n}\n\n:host([full-width]) {\n width: 100%;\n}\n\n/* Trigger wrapper */\n.combobox-trigger {\n display: flex;\n align-items: center;\n width: 100%;\n background: var(--le-combobox-bg, var(--le-color-surface, #fff));\n border: 1px solid color-mix(in srgb, var(--le-combobox-border-color) 33%, transparent);\n border-radius: var(--le-combobox-border-radius, 0.375rem);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.combobox-trigger:hover:not(.is-disabled),\n:host(:focus-within) .combobox-trigger:not(.is-disabled) {\n border-color: var(--le-combobox-border-color);\n}\n\n.combobox-trigger:focus-within {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n.combobox-trigger.is-open {\n border-color: var(--le-color-primary, #3b82f6);\n}\n\n/* Input */\n.combobox-input {\n flex: 1;\n border: none;\n outline: none;\n}\n.combobox-input::part(container) {\n border: none;\n}\n.combobox-input::part(container):focus-within {\n outline: none !important;\n}\n\n.combobox-input::placeholder {\n color: color-mix(in srgb, var(--le-color-text-secondary) 66%, transparent);\n}\n\n.combobox-trigger.is-disabled {\n cursor: not-allowed;\n background: var(--le-color-surface-disabled, #f9fafb);\n}\n.combobox-input:disabled {\n cursor: not-allowed;\n}\n\n/* Clear button */\n.combobox-clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n margin-right: 0.25rem;\n color: var(--le-color-primary, #3b82f6);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease, background-color 0.15s ease;\n}\n\n.combobox-clear:hover {\n opacity: 1;\n background: var(--le-color-surface-hover, #f3f4f6);\n}\n\n.combobox-clear svg {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n/* Arrow icon */\n.combobox-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 2rem;\n height: 100%;\n color: var(--le-color-primary, #3b82f6);\n transition: transform 0.2s ease;\n}\n\n.combobox-arrow svg {\n width: 1rem;\n height: 1rem;\n}\n\n.combobox-trigger.is-open .combobox-arrow {\n transform: rotate(180deg);\n}\n\n/* Size variants */\n:host([size='small']) .combobox-trigger {\n --le-combobox-height: 2rem;\n}\n\n:host([size='small']) .combobox-input {\n --le-combobox-padding-x: 0.5rem;\n --le-combobox-font-size: 0.75rem;\n}\n\n:host([size='large']) .combobox-trigger {\n --le-combobox-height: 3rem;\n}\n\n:host([size='large']) .combobox-input {\n --le-combobox-padding-x: 1rem;\n --le-combobox-font-size: 1rem;\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Element,\n Watch,\n h,\n Listen,\n} from '@stencil/core';\nimport { LeOption, LeOptionValue, LeOptionSelectDetail } from '../../types/options';\n\n/**\n * A combobox component with searchable dropdown.\n *\n * Combines a text input with a dropdown list, allowing users to\n * filter options by typing or select from the list.\n *\n * @cmsEditable true\n * @cmsCategory Form\n *\n * @example Basic combobox\n * ```html\n * <le-combobox\n * placeholder=\"Search...\"\n * options='[{\"label\": \"Apple\"}, {\"label\": \"Banana\"}, {\"label\": \"Cherry\"}]'\n * ></le-combobox>\n * ```\n *\n * @example Allow custom values\n * ```html\n * <le-combobox\n * placeholder=\"Type or select...\"\n * allow-custom\n * options='[{\"label\": \"Red\"}, {\"label\": \"Green\"}, {\"label\": \"Blue\"}]'\n * ></le-combobox>\n * ```\n */\n@Component({\n tag: 'le-combobox',\n styleUrl: 'le-combobox.css',\n shadow: true,\n})\nexport class LeCombobox {\n @Element() el: HTMLElement;\n\n /**\n * The options to display in the dropdown.\n */\n @Prop() options: LeOption[] | string = [];\n\n /**\n * The currently selected value.\n */\n @Prop({ mutable: true }) value?: LeOptionValue;\n\n /**\n * Placeholder text for the input.\n */\n @Prop() placeholder: string = 'Type to search...';\n\n /**\n * Whether the combobox is disabled.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether selection is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Name attribute for form submission.\n */\n @Prop() name?: string;\n\n /**\n * Whether the multiselect should take full width of its container.\n */\n @Prop({ reflect: true }) fullWidth: boolean = false;\n\n /**\n * Size variant of the combobox.\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to allow custom values not in the options list.\n */\n @Prop() allowCustom: boolean = false;\n\n /**\n * Minimum characters before showing filtered results.\n */\n @Prop() minSearchLength: number = 0;\n\n /**\n * Text to show when no options match the search.\n */\n @Prop() emptyText: string = 'No results found';\n\n /**\n * Whether the dropdown is currently open.\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Emitted when the selected value changes.\n */\n @Event() leChange: EventEmitter<LeOptionSelectDetail>;\n\n /**\n * Emitted when the input value changes (for custom values).\n */\n @Event() leInput: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the dropdown opens.\n */\n @Event() leOpen: EventEmitter<void>;\n\n /**\n * Emitted when the dropdown closes.\n */\n @Event() leClose: EventEmitter<void>;\n\n @Listen('click', { target: 'window' })\n handleWindowClick(event: MouseEvent) {\n if (!this.el.contains(event.target as Node)) {\n this.dropdownEl?.hide();\n }\n }\n\n @State() private inputValue: string = '';\n @State() private selectedOption?: LeOption;\n\n private dropdownEl?: HTMLLeDropdownBaseElement;\n private inputEl?: HTMLInputElement;\n\n @Watch('value')\n handleValueChange() {\n this.updateSelectedOption();\n }\n\n @Watch('options')\n handleOptionsChange() {\n this.updateSelectedOption();\n }\n\n componentWillLoad() {\n this.updateSelectedOption();\n }\n\n private get parsedOptions(): LeOption[] {\n if (typeof this.options === 'string') {\n try {\n return JSON.parse(this.options);\n } catch {\n return [];\n }\n }\n return this.options;\n }\n\n private updateSelectedOption() {\n if (this.value !== undefined) {\n this.selectedOption = this.parsedOptions.find(opt => (opt.value ?? opt.label) === this.value);\n if (this.selectedOption) {\n this.inputValue = this.selectedOption.label;\n } else if (this.allowCustom) {\n this.inputValue = this.value.toString();\n }\n } else {\n this.selectedOption = undefined;\n this.inputValue = '';\n }\n }\n\n private filterOption = (option: LeOption, query: string): boolean => {\n if (!query || query.length < this.minSearchLength) return true;\n const searchLower = query.toLowerCase();\n return (\n option.label.toLowerCase().includes(searchLower) ||\n (option.description?.toLowerCase().includes(searchLower) ?? false)\n );\n };\n\n private handleOptionSelect = (e: CustomEvent<LeOptionSelectDetail>) => {\n this.value = e.detail.value;\n this.selectedOption = e.detail.option;\n this.inputValue = e.detail.option.label;\n this.leChange.emit(e.detail);\n };\n\n private handleDropdownOpen = () => {\n this.open = true;\n this.leOpen.emit();\n };\n\n private handleDropdownClose = () => {\n this.open = false;\n this.leClose.emit();\n\n // If custom values not allowed, reset input to selected option\n if (!this.allowCustom && this.selectedOption) {\n this.inputValue = this.selectedOption.label;\n } else if (!this.allowCustom && !this.selectedOption) {\n this.inputValue = '';\n }\n };\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.inputValue = target.value;\n\n // Emit input event for custom values\n if (this.allowCustom) {\n this.leInput.emit({ value: this.inputValue });\n }\n\n // Open dropdown when typing\n if (!this.open && this.inputValue.length >= this.minSearchLength) {\n this.dropdownEl?.show();\n }\n };\n\n private handleInputFocus = () => {\n if (!this.disabled) {\n this.dropdownEl?.show();\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!this.open) {\n this.dropdownEl?.show();\n }\n break;\n\n case 'Enter':\n if (this.allowCustom && this.inputValue && !this.open) {\n // Accept custom value\n this.value = this.inputValue;\n this.leChange.emit({\n value: this.inputValue,\n option: { label: this.inputValue, value: this.inputValue },\n });\n }\n break;\n\n case 'Escape':\n if (this.open) {\n this.dropdownEl?.hide();\n }\n break;\n }\n };\n\n private handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n this.value = undefined;\n this.selectedOption = undefined;\n this.inputValue = '';\n this.inputEl?.focus();\n this.leChange.emit({\n value: '',\n option: { label: '', value: '' },\n });\n };\n\n /**\n * Opens the dropdown.\n */\n @Method()\n async showDropdown() {\n await this.dropdownEl?.show();\n }\n\n /**\n * Closes the dropdown.\n */\n @Method()\n async hideDropdown() {\n await this.dropdownEl?.hide();\n }\n\n /**\n * Focuses the input element.\n */\n @Method()\n async focusInput() {\n this.inputEl?.focus();\n }\n\n render() {\n const hasValue = this.inputValue.length > 0;\n\n return (\n <le-component component=\"le-combobox\">\n <le-dropdown-base\n ref={el => (this.dropdownEl = el)}\n options={this.parsedOptions}\n value={this.value}\n disabled={this.disabled}\n filterFn={this.filterOption}\n filterQuery={this.inputValue}\n emptyText={this.emptyText}\n fullWidth={this.fullWidth}\n closeOnClickOutside={false}\n onLeOptionSelect={this.handleOptionSelect}\n onLeDropdownOpen={this.handleDropdownOpen}\n onLeDropdownClose={this.handleDropdownClose}\n >\n <div slot=\"trigger\" class={{ 'combobox-trigger': true, 'is-open': this.open }}>\n <le-string-input\n mode=\"default\"\n hideDescription={true}\n inputRef={el => (this.inputEl = el)}\n type=\"text\"\n class=\"combobox-input\"\n value={this.inputValue}\n placeholder={this.placeholder}\n disabled={this.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-autocomplete=\"list\"\n onInput={this.handleInputChange}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleInputKeyDown}\n />\n {hasValue && !this.disabled && (\n <button\n type=\"button\"\n class=\"combobox-clear\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n tabIndex={-1}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n </button>\n )}\n <span class=\"combobox-arrow\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n </span>\n </div>\n </le-dropdown-base>\n\n {/* Hidden input for form submission */}\n {this.name && <input type=\"hidden\" name={this.name} value={this.value?.toString() ?? ''} />}\n </le-component>\n );\n }\n}\n"],"version":3}
1
+ {"file":"le-combobox.js","mappings":";;;;;AAAA,MAAM,aAAa,GAAG,MAAM,CAAC,ivEAAivE,CAAC;;MC6ClwEA,YAAU,iBAAAC,kBAAA,CAAA,MAAA,UAAA,SAAA,WAAA,CAAA;;;;;;;;;;;;;AAGrB;;AAEG;IACK,OAAO,GAAwB,EAAE;AAEzC;;AAEG;AACsB,IAAA,KAAK;AAE9B;;AAEG;IACK,WAAW,GAAW,mBAAmB;AAEjD;;AAEG;IACsB,QAAQ,GAAY,KAAK;AAElD;;AAEG;IACK,QAAQ,GAAY,KAAK;AAEjC;;AAEG;AACK,IAAA,IAAI;AAEZ;;AAEG;IACsB,SAAS,GAAY,KAAK;AAEnD;;AAEG;IACsB,IAAI,GAAiC,QAAQ;AAEtE;;AAEG;IACK,WAAW,GAAY,KAAK;AAEpC;;AAEG;IACK,eAAe,GAAW,CAAC;AAEnC;;AAEG;IACK,SAAS,GAAW,kBAAkB;AAE9C;;AAEG;IACqC,IAAI,GAAY,KAAK;AAE7D;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,OAAO;AAEhB;;AAEG;AACM,IAAA,MAAM;AAEf;;AAEG;AACM,IAAA,OAAO;AAGhB,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;;IAIV,UAAU,GAAW,EAAE;AACvB,IAAA,cAAc;AAEvB,IAAA,UAAU;AACV,IAAA,OAAO;IAGf,iBAAiB,GAAA;QACf,IAAI,CAAC,oBAAoB,EAAE;;IAI7B,mBAAmB,GAAA;QACjB,IAAI,CAAC,oBAAoB,EAAE;;IAG7B,iBAAiB,GAAA;QACf,IAAI,CAAC,oBAAoB,EAAE;;AAG7B,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;AACpC,YAAA,IAAI;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;AAC/B,YAAA,MAAM;AACN,gBAAA,OAAO,EAAE;;;QAGb,OAAO,IAAI,CAAC,OAAO;;IAGb,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC;AAC7F,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;;AACtC,iBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;;;aAEpC;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;;AAIhB,IAAA,YAAY,GAAG,CAAC,MAAgB,EAAE,KAAa,KAAa;QAClE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe;AAAE,YAAA,OAAO,IAAI;AAC9D,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE;QACvC,QACE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AAChD,aAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;AAEtE,KAAC;AAEO,IAAA,kBAAkB,GAAG,CAAC,CAAoC,KAAI;QACpE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;QAC3B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,KAAC;IAEO,kBAAkB,GAAG,MAAK;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,KAAC;IAEO,mBAAmB,GAAG,MAAK;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;QAGnB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;;aACtC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACpD,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAExB,KAAC;AAEO,IAAA,iBAAiB,GAAG,CAAC,CAAQ,KAAI;AACvC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK;;AAG9B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;;;AAI/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AAChE,YAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;AAE3B,KAAC;IAEO,gBAAgB,GAAG,MAAK;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;AAE3B,KAAC;AAEO,IAAA,kBAAkB,GAAG,CAAC,CAAgB,KAAI;QAChD,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,QAAQ,CAAC,CAAC,GAAG;AACX,YAAA,KAAK,WAAW;gBACd,CAAC,CAAC,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,oBAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;gBAEzB;AAEF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;AAErD,oBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC5B,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,IAAI,CAAC,UAAU;AACtB,wBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;AAC3D,qBAAA,CAAC;;gBAEJ;AAEF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,oBAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;gBAEzB;;AAEN,KAAC;AAEO,IAAA,WAAW,GAAG,CAAC,CAAa,KAAI;QACtC,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACjC,SAAA,CAAC;AACJ,KAAC;AAED;;AAEG;AAEH,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;AAG/B;;AAEG;AAEH,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;AAG/B;;AAEG;AAEH,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;;IAGvB,MAAM,GAAA;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAE3C,QACE,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAc,SAAS,EAAC,aAAa,EAAA,EACnC,CAAA,CAAA,kBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EACjC,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,WAAW,EAAE,IAAI,CAAC,UAAU,EAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,mBAAmB,EAAE,KAAK,EAC1B,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EACzC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EACzC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,EAAA,EAE3C,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAA,EAC3E,CAAA,CAAA,iBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAC,SAAS,EACd,eAAe,EAAE,IAAI,EACrB,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EACnC,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,gBAAgB,EACtB,KAAK,EAAE,IAAI,CAAC,UAAU,EACtB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,mBACT,SAAS,EAAA,eAAA,EACR,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,OAAO,EACzB,mBAAA,EAAA,MAAM,EACxB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAClC,CAAA,EACD,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,KACzB,CACE,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,gBAAgB,EACtB,OAAO,EAAE,IAAI,CAAC,WAAW,EACd,YAAA,EAAA,OAAO,EAClB,QAAQ,EAAE,EAAE,EAAA,EAEZ,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAA,cAAA,EAAc,GAAG,EAAA,EACzE,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,CAAC,EAAC,oBAAoB,EAAG,CAAA,CAC3B,CACC,CACV,EACD,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,gBAAgB,EAAA,EAC1B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAA,cAAA,EAAc,GAAG,EAAA,EACzE,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,CAAC,EAAC,cAAc,GAAG,CACrB,CACD,CACH,CACW,EAGlB,IAAI,CAAC,IAAI,IAAI,CAAO,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAA,CAAI,CAC9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCombobox","__stencil_proxyCustomElement"],"sources":["src/components/le-combobox/le-combobox.css?tag=le-combobox&encapsulation=shadow","src/components/le-combobox/le-combobox.tsx"],"sourcesContent":["/**\n * le-combobox component styles\n *\n * CSS Custom Properties:\n * --le-combobox-padding-x\n * --le-combobox-font-size\n * --le-combobox-border-radius\n * --le-combobox-border-color\n * --le-combobox-bg\n * --le-combobox-color\n */\n\n:host {\n display: inline-block;\n min-width: 200px;\n --le-combobox-border-color: var(--le-color-primary, #3b82f6);\n}\n\n:host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n}\n\n:host([full-width]) {\n width: 100%;\n}\n\n/* Trigger wrapper */\n.combobox-trigger {\n display: flex;\n align-items: center;\n width: 100%;\n background: var(--le-combobox-bg, var(--le-color-surface, #fff));\n border: 1px solid color-mix(in srgb, var(--le-combobox-border-color) 33%, transparent);\n border-radius: var(--le-combobox-border-radius, 0.375rem);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.combobox-trigger:hover:not(.is-disabled),\n:host(:focus-within) .combobox-trigger:not(.is-disabled) {\n border-color: var(--le-combobox-border-color);\n}\n\n.combobox-trigger:focus-within {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n.combobox-trigger.is-open {\n border-color: var(--le-color-primary, #3b82f6);\n}\n\n/* Input */\n.combobox-input {\n flex: 1;\n border: none;\n outline: none;\n}\n.combobox-input::part(container) {\n border: none;\n}\n.combobox-input::part(container):focus-within {\n outline: none !important;\n}\n\n.combobox-input::placeholder {\n color: color-mix(in srgb, var(--le-color-text-secondary) 66%, transparent);\n}\n\n.combobox-trigger.is-disabled {\n cursor: not-allowed;\n background: var(--le-color-surface-disabled, #f9fafb);\n}\n.combobox-input:disabled {\n cursor: not-allowed;\n}\n\n/* Clear button */\n.combobox-clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n margin-right: 0.25rem;\n color: var(--le-color-primary, #3b82f6);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease, background-color 0.15s ease;\n}\n\n.combobox-clear:hover {\n opacity: 1;\n background: var(--le-color-surface-hover, #f3f4f6);\n}\n\n.combobox-clear svg {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n/* Arrow icon */\n.combobox-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 2rem;\n height: 100%;\n color: var(--le-color-primary, #3b82f6);\n transition: transform 0.2s ease;\n}\n\n.combobox-arrow svg {\n width: 1rem;\n height: 1rem;\n}\n\n.combobox-trigger.is-open .combobox-arrow {\n transform: rotate(180deg);\n}\n\n/* Size variants */\n:host([size='small']) .combobox-trigger {\n --le-combobox-height: 2rem;\n}\n\n:host([size='small']) .combobox-input {\n --le-combobox-padding-x: 0.5rem;\n --le-combobox-font-size: 0.75rem;\n}\n\n:host([size='large']) .combobox-trigger {\n --le-combobox-height: 3rem;\n}\n\n:host([size='large']) .combobox-input {\n --le-combobox-padding-x: 1rem;\n --le-combobox-font-size: 1rem;\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Element,\n Watch,\n h,\n Listen,\n} from '@stencil/core';\nimport { LeOption, LeOptionValue, LeOptionSelectDetail } from '../../types/options';\n\n/**\n * A combobox component with searchable dropdown.\n *\n * Combines a text input with a dropdown list, allowing users to\n * filter options by typing or select from the list.\n *\n * @cmsEditable true\n * @cmsCategory Form\n *\n * @example Basic combobox\n * ```html\n * <le-combobox\n * placeholder=\"Search...\"\n * options='[{\"label\": \"Apple\"}, {\"label\": \"Banana\"}, {\"label\": \"Cherry\"}]'\n * ></le-combobox>\n * ```\n *\n * @example Allow custom values\n * ```html\n * <le-combobox\n * placeholder=\"Type or select...\"\n * allow-custom\n * options='[{\"label\": \"Red\"}, {\"label\": \"Green\"}, {\"label\": \"Blue\"}]'\n * ></le-combobox>\n * ```\n */\n@Component({\n tag: 'le-combobox',\n styleUrl: 'le-combobox.css',\n shadow: true,\n})\nexport class LeCombobox {\n @Element() el: HTMLElement;\n\n /**\n * The options to display in the dropdown.\n */\n @Prop() options: LeOption[] | string = [];\n\n /**\n * The currently selected value.\n */\n @Prop({ mutable: true }) value?: LeOptionValue;\n\n /**\n * Placeholder text for the input.\n */\n @Prop() placeholder: string = 'Type to search...';\n\n /**\n * Whether the combobox is disabled.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether selection is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Name attribute for form submission.\n */\n @Prop() name?: string;\n\n /**\n * Whether the multiselect should take full width of its container.\n */\n @Prop({ reflect: true }) fullWidth: boolean = false;\n\n /**\n * Size variant of the combobox.\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to allow custom values not in the options list.\n */\n @Prop() allowCustom: boolean = false;\n\n /**\n * Minimum characters before showing filtered results.\n */\n @Prop() minSearchLength: number = 0;\n\n /**\n * Text to show when no options match the search.\n */\n @Prop() emptyText: string = 'No results found';\n\n /**\n * Whether the dropdown is currently open.\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Emitted when the selected value changes.\n */\n @Event() leChange: EventEmitter<LeOptionSelectDetail>;\n\n /**\n * Emitted when the input value changes (for custom values).\n */\n @Event() leInput: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the dropdown opens.\n */\n @Event() leOpen: EventEmitter<void>;\n\n /**\n * Emitted when the dropdown closes.\n */\n @Event() leClose: EventEmitter<void>;\n\n @Listen('click', { target: 'window' })\n handleWindowClick(event: MouseEvent) {\n if (!this.el.contains(event.target as Node)) {\n this.dropdownEl?.hide();\n }\n }\n\n @State() private inputValue: string = '';\n @State() private selectedOption?: LeOption;\n\n private dropdownEl?: HTMLLeDropdownBaseElement;\n private inputEl?: HTMLInputElement;\n\n @Watch('value')\n handleValueChange() {\n this.updateSelectedOption();\n }\n\n @Watch('options')\n handleOptionsChange() {\n this.updateSelectedOption();\n }\n\n componentWillLoad() {\n this.updateSelectedOption();\n }\n\n private get parsedOptions(): LeOption[] {\n if (typeof this.options === 'string') {\n try {\n return JSON.parse(this.options);\n } catch {\n return [];\n }\n }\n return this.options;\n }\n\n private updateSelectedOption() {\n if (this.value !== undefined) {\n this.selectedOption = this.parsedOptions.find(opt => (opt.value ?? opt.label) === this.value);\n if (this.selectedOption) {\n this.inputValue = this.selectedOption.label;\n } else if (this.allowCustom) {\n this.inputValue = this.value.toString();\n }\n } else {\n this.selectedOption = undefined;\n this.inputValue = '';\n }\n }\n\n private filterOption = (option: LeOption, query: string): boolean => {\n if (!query || query.length < this.minSearchLength) return true;\n const searchLower = query.toLowerCase();\n return (\n option.label.toLowerCase().includes(searchLower) ||\n (option.description?.toLowerCase().includes(searchLower) ?? false)\n );\n };\n\n private handleOptionSelect = (e: CustomEvent<LeOptionSelectDetail>) => {\n this.value = e.detail.value;\n this.selectedOption = e.detail.option;\n this.inputValue = e.detail.option.label;\n this.leChange.emit(e.detail);\n };\n\n private handleDropdownOpen = () => {\n this.open = true;\n this.leOpen.emit();\n };\n\n private handleDropdownClose = () => {\n this.open = false;\n this.leClose.emit();\n\n // If custom values not allowed, reset input to selected option\n if (!this.allowCustom && this.selectedOption) {\n this.inputValue = this.selectedOption.label;\n } else if (!this.allowCustom && !this.selectedOption) {\n this.inputValue = '';\n }\n };\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.inputValue = target.value;\n\n // Emit input event for custom values\n if (this.allowCustom) {\n this.leInput.emit({ value: this.inputValue });\n }\n\n // Open dropdown when typing\n if (!this.open && this.inputValue.length >= this.minSearchLength) {\n this.dropdownEl?.show();\n }\n };\n\n private handleInputFocus = () => {\n if (!this.disabled) {\n this.dropdownEl?.show();\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!this.open) {\n this.dropdownEl?.show();\n }\n break;\n\n case 'Enter':\n if (this.allowCustom && this.inputValue && !this.open) {\n // Accept custom value\n this.value = this.inputValue;\n this.leChange.emit({\n value: this.inputValue,\n option: { label: this.inputValue, value: this.inputValue },\n });\n }\n break;\n\n case 'Escape':\n if (this.open) {\n this.dropdownEl?.hide();\n }\n break;\n }\n };\n\n private handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n this.value = undefined;\n this.selectedOption = undefined;\n this.inputValue = '';\n this.inputEl?.focus();\n this.leChange.emit({\n value: '',\n option: { label: '', value: '' },\n });\n };\n\n /**\n * Opens the dropdown.\n */\n @Method()\n async showDropdown() {\n await this.dropdownEl?.show();\n }\n\n /**\n * Closes the dropdown.\n */\n @Method()\n async hideDropdown() {\n await this.dropdownEl?.hide();\n }\n\n /**\n * Focuses the input element.\n */\n @Method()\n async focusInput() {\n this.inputEl?.focus();\n }\n\n render() {\n const hasValue = this.inputValue.length > 0;\n\n return (\n <le-component component=\"le-combobox\">\n <le-dropdown-base\n ref={el => (this.dropdownEl = el)}\n options={this.parsedOptions}\n value={this.value}\n disabled={this.disabled}\n filterFn={this.filterOption}\n filterQuery={this.inputValue}\n emptyText={this.emptyText}\n fullWidth={this.fullWidth}\n closeOnClickOutside={false}\n onLeOptionSelect={this.handleOptionSelect}\n onLeDropdownOpen={this.handleDropdownOpen}\n onLeDropdownClose={this.handleDropdownClose}\n >\n <div slot=\"trigger\" class={{ 'combobox-trigger': true, 'is-open': this.open }}>\n <le-string-input\n mode=\"default\"\n hideDescription={true}\n inputRef={el => (this.inputEl = el)}\n type=\"text\"\n class=\"combobox-input\"\n value={this.inputValue}\n placeholder={this.placeholder}\n disabled={this.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-autocomplete=\"list\"\n onInput={this.handleInputChange}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleInputKeyDown}\n />\n {hasValue && !this.disabled && (\n <button\n type=\"button\"\n class=\"combobox-clear\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n tabIndex={-1}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n </button>\n )}\n <span class=\"combobox-arrow\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n </span>\n </div>\n </le-dropdown-base>\n\n {/* Hidden input for form submission */}\n {this.name && <input type=\"hidden\" name={this.name} value={this.value?.toString() ?? ''} />}\n </le-component>\n );\n }\n}\n"],"version":3}
@@ -1,6 +1,6 @@
1
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, h, Host, transformTag } from '@stencil/core/internal/client';
2
2
 
3
- const leCurrentHeadingCss = ":host{display:inline-flex;min-width:0}.title{font:inherit;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}";
3
+ const leCurrentHeadingCss = () => `:host{display:inline-flex;min-width:0}.title{font:inherit;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--le-current-heading-color, var(--le-color-text-primary))}`;
4
4
 
5
5
  const LeCurrentHeading$1 = /*@__PURE__*/ proxyCustomElement(class LeCurrentHeading extends HTMLElement {
6
6
  constructor(registerHost) {
@@ -63,7 +63,7 @@ const LeCurrentHeading$1 = /*@__PURE__*/ proxyCustomElement(class LeCurrentHeadi
63
63
  static get watchers() { return {
64
64
  "selector": ["onSelectorChange"]
65
65
  }; }
66
- static get style() { return leCurrentHeadingCss; }
66
+ static get style() { return leCurrentHeadingCss(); }
67
67
  }, [769, "le-current-heading", {
68
68
  "selector": [1],
69
69
  "activeText": [32]
@@ -77,8 +77,8 @@ function defineCustomElement$1() {
77
77
  const components = ["le-current-heading"];
78
78
  components.forEach(tagName => { switch (tagName) {
79
79
  case "le-current-heading":
80
- if (!customElements.get(tagName)) {
81
- customElements.define(tagName, LeCurrentHeading$1);
80
+ if (!customElements.get(transformTag(tagName))) {
81
+ customElements.define(transformTag(tagName), LeCurrentHeading$1);
82
82
  }
83
83
  break;
84
84
  } });
@@ -1 +1 @@
1
- {"file":"le-current-heading.js","mappings":";;AAAA,MAAM,mBAAmB,GAAG,kIAAkI;;MCoBjJA,kBAAgB,iBAAAC,kBAAA,CAAA,MAAA,gBAAA,SAAA,WAAA,CAAA;;;;;;;;;;IAIM,QAAQ,GAAW,EAAE;IAErC,UAAU,GAAkB,IAAI;IAEjD,iBAAiB,GAAA;QACf,IAAI,CAAC,iBAAiB,EAAE;;IAIhB,gBAAgB,GAAA;QACxB,IAAI,CAAC,iBAAiB,EAAE;;IAIhB,QAAQ,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;;IAIhB,QAAQ,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;;IAGlB,iBAAiB,GAAA;QACvB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE;QAC7C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB;;QAGF,IAAI,QAAQ,GAAc,EAAE;AAC5B,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;;AAC1D,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB;;;QAIF,IAAI,QAAQ,GAAkB,IAAI;AAClC,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,YAAA,MAAM,IAAI,GAAI,OAAuB,CAAC,qBAAqB,EAAE;AAC7D,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACvC,gBAAA,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;AAC5C,gBAAA,IAAI,CAAC;oBAAE,QAAQ,GAAG,CAAC;;;;AAKvB,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;IAI9B,MAAM,GAAA;QACJ,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACF,IAAI,CAAC,UAAU,IACd,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAA,EAC7B,IAAI,CAAC,UAAU,CACX,KAEP,CAAA,CAAA,MAAA,EAAA,IAAA,CAAa,CACd,CACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCurrentHeading","__stencil_proxyCustomElement"],"sources":["src/components/le-current-heading/le-current-heading.css?tag=le-current-heading&encapsulation=shadow","src/components/le-current-heading/le-current-heading.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n min-width: 0;\n}\n\n.title {\n font: inherit;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","import { Component, Element, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\n\n/**\n * Shows a \"smart\" header title based on what has scrolled out of view.\n *\n * When `selector` matches multiple elements, the title becomes the last element\n * (top-to-bottom) that has fully scrolled out above the viewport.\n *\n * @slot - Optional fallback content if no watched title is active\n *\n * @csspart title - The rendered title\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-current-heading',\n styleUrl: 'le-current-heading.css',\n shadow: true,\n})\nexport class LeCurrentHeading {\n @Element() el: HTMLElement;\n\n /** CSS selector for page title/headings to watch (e.g. `.page-title`, `main h2`). */\n @Prop({ attribute: 'selector' }) selector: string = '';\n\n @State() private activeText: string | null = null;\n\n componentWillLoad() {\n this.updateActiveTitle();\n }\n\n @Watch('selector')\n protected onSelectorChange() {\n this.updateActiveTitle();\n }\n\n @Listen('scroll', { target: 'window', passive: true })\n protected onScroll() {\n this.updateActiveTitle();\n }\n\n @Listen('resize', { target: 'window', passive: true })\n protected onResize() {\n this.updateActiveTitle();\n }\n\n private updateActiveTitle() {\n if (typeof window === 'undefined') return;\n const selector = (this.selector ?? '').trim();\n if (!selector) {\n this.activeText = null;\n return;\n }\n\n let elements: Element[] = [];\n try {\n elements = Array.from(document.querySelectorAll(selector));\n } catch {\n this.activeText = null;\n return;\n }\n\n // Pick the last element that is fully above the viewport.\n let nextText: string | null = null;\n for (const element of elements) {\n const rect = (element as HTMLElement).getBoundingClientRect();\n if (rect.height > 0 && rect.bottom <= 0) {\n const t = (element.textContent ?? '').trim();\n if (t) nextText = t;\n }\n }\n\n // Do not create oscillations: update only when the computed title changes.\n if (nextText !== this.activeText) {\n this.activeText = nextText;\n }\n }\n\n render() {\n return (\n <Host>\n {this.activeText ? (\n <span class=\"title\" part=\"title\">\n {this.activeText}\n </span>\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"le-current-heading.js","mappings":";;AAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,oMAAoM,CAAC;;MCoB3NA,kBAAgB,iBAAAC,kBAAA,CAAA,MAAA,gBAAA,SAAA,WAAA,CAAA;;;;;;;;;;IAIM,QAAQ,GAAW,EAAE;IAErC,UAAU,GAAkB,IAAI;IAEjD,iBAAiB,GAAA;QACf,IAAI,CAAC,iBAAiB,EAAE;;IAIhB,gBAAgB,GAAA;QACxB,IAAI,CAAC,iBAAiB,EAAE;;IAIhB,QAAQ,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;;IAIhB,QAAQ,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;;IAGlB,iBAAiB,GAAA;QACvB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE;QAC7C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB;;QAGF,IAAI,QAAQ,GAAc,EAAE;AAC5B,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;;AAC1D,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB;;;QAIF,IAAI,QAAQ,GAAkB,IAAI;AAClC,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,YAAA,MAAM,IAAI,GAAI,OAAuB,CAAC,qBAAqB,EAAE;AAC7D,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACvC,gBAAA,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;AAC5C,gBAAA,IAAI,CAAC;oBAAE,QAAQ,GAAG,CAAC;;;;AAKvB,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;IAI9B,MAAM,GAAA;QACJ,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACF,IAAI,CAAC,UAAU,IACd,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAA,EAC7B,IAAI,CAAC,UAAU,CACX,KAEP,CAAA,CAAA,MAAA,EAAA,IAAA,CAAa,CACd,CACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["LeCurrentHeading","__stencil_proxyCustomElement"],"sources":["src/components/le-current-heading/le-current-heading.css?tag=le-current-heading&encapsulation=shadow","src/components/le-current-heading/le-current-heading.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n min-width: 0;\n}\n\n.title {\n font: inherit;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--le-current-heading-color, var(--le-color-text-primary));\n}\n","import { Component, Element, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\n\n/**\n * Shows a \"smart\" header title based on what has scrolled out of view.\n *\n * When `selector` matches multiple elements, the title becomes the last element\n * (top-to-bottom) that has fully scrolled out above the viewport.\n *\n * @slot - Optional fallback content if no watched title is active\n *\n * @csspart title - The rendered title\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-current-heading',\n styleUrl: 'le-current-heading.css',\n shadow: true,\n})\nexport class LeCurrentHeading {\n @Element() el: HTMLElement;\n\n /** CSS selector for page title/headings to watch (e.g. `.page-title`, `main h2`). */\n @Prop({ attribute: 'selector' }) selector: string = '';\n\n @State() private activeText: string | null = null;\n\n componentWillLoad() {\n this.updateActiveTitle();\n }\n\n @Watch('selector')\n protected onSelectorChange() {\n this.updateActiveTitle();\n }\n\n @Listen('scroll', { target: 'window', passive: true })\n protected onScroll() {\n this.updateActiveTitle();\n }\n\n @Listen('resize', { target: 'window', passive: true })\n protected onResize() {\n this.updateActiveTitle();\n }\n\n private updateActiveTitle() {\n if (typeof window === 'undefined') return;\n const selector = (this.selector ?? '').trim();\n if (!selector) {\n this.activeText = null;\n return;\n }\n\n let elements: Element[] = [];\n try {\n elements = Array.from(document.querySelectorAll(selector));\n } catch {\n this.activeText = null;\n return;\n }\n\n // Pick the last element that is fully above the viewport.\n let nextText: string | null = null;\n for (const element of elements) {\n const rect = (element as HTMLElement).getBoundingClientRect();\n if (rect.height > 0 && rect.bottom <= 0) {\n const t = (element.textContent ?? '').trim();\n if (t) nextText = t;\n }\n }\n\n // Do not create oscillations: update only when the computed title changes.\n if (nextText !== this.activeText) {\n this.activeText = nextText;\n }\n }\n\n render() {\n return (\n <Host>\n {this.activeText ? (\n <span class=\"title\" part=\"title\">\n {this.activeText}\n </span>\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,8 +1,8 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host, transformTag } from '@stencil/core/internal/client';
2
2
  import { g as generateId } from './utils.js';
3
3
  import { d as defineCustomElement$1 } from './le-popover2.js';
4
4
 
5
- const leDropdownBaseCss = ":host{display:block;--le-dropdown-list-padding:var(--le-spacing-1);--le-dropdown-empty-padding:var(--le-spacing-4);--le-dropdown-option-radius:var(--le-radius-md);--le-dropdown-font-size:var(--le-font-size-sm);--le-dropdown-option-padding:var(--le-spacing-1) var(--le-spacing-2);--le-dropdown-group-padding:var(--le-spacing-2) var(--le-spacing-2) var(--le-spacing-1);--le-dropdown-group-font-size:var(--le-font-size-xs)}:host([disabled]){pointer-events:none;opacity:0.5}le-popover::part(content){overflow-y:auto;overflow-x:hidden;padding:var(--le-dropdown-list-padding, 0.25rem)}.dropdown-empty{padding:var(--le-dropdown-empty-padding);text-align:center;color:var(--le-color-text-secondary, #9ca3af);font-size:var(--le-dropdown-font-size)}.dropdown-group-header{padding:var(--le-dropdown-group-padding);font-size:var(--le-dropdown-group-font-size);font-weight:700;color:var(--le-color-text-secondary, #9ca3af);letter-spacing:0.05em}.dropdown-list{text-align:initial}.dropdown-separator{height:1px;margin:var(--le-dropdown-separator-margin, 0.25rem 0);background:var(--le-color-border, #e5e7eb)}.dropdown-option{display:flex;align-items:center;gap:var(--le-dropdown-option-gap, 0.5rem);padding:var(--le-dropdown-option-padding);font-size:var(--le-dropdown-font-size, 0.875rem);line-height:1.4;color:var(--le-color-text, #1f2937);border:1px solid transparent;border-radius:var(--le-dropdown-option-radius, 0.25rem);cursor:pointer;user-select:none;transition:background-color 0.1s ease}.dropdown-option:hover,.dropdown-option.is-focused{border-color:var(--le-color-border-hover, #d1d5db)}.dropdown-option.is-disabled{opacity:0.5;cursor:not-allowed}.dropdown-option.is-disabled:hover{background:transparent}.option-checkbox{display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;border:2px solid var(--le-color-border, #d1d5db);border-radius:0.25rem;background:var(--le-color-surface, #fff);flex-shrink:0}.is-selected .option-checkbox{background:var(--le-color-primary, #3b82f6);border-color:var(--le-color-primary, #3b82f6);color:white}.option-checkbox svg{width:0.75rem;height:0.75rem}.option-icon-start,.option-icon-end{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25rem;height:1.25rem}.option-icon-start img,.option-icon-end img{width:100%;height:100%;object-fit:contain}.option-content{flex:1;min-width:0;display:flex;flex-direction:column}.option-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-description{font-size:0.75rem;color:var(--le-color-text-muted, #6b7280);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-check{display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;color:var(--le-color-primary, #3b82f6);flex-shrink:0}.option-check svg{width:1rem;height:1rem}";
5
+ const leDropdownBaseCss = () => `:host{display:block;--le-dropdown-list-padding:var(--le-spacing-1);--le-dropdown-empty-padding:var(--le-spacing-4);--le-dropdown-option-radius:var(--le-radius-md);--le-dropdown-font-size:var(--le-font-size-sm);--le-dropdown-option-padding:var(--le-spacing-1) var(--le-spacing-2);--le-dropdown-group-padding:var(--le-spacing-2) var(--le-spacing-2) var(--le-spacing-1);--le-dropdown-group-font-size:var(--le-font-size-xs)}:host([disabled]){pointer-events:none;opacity:0.5}le-popover::part(content){overflow-y:auto;overflow-x:hidden;padding:var(--le-dropdown-list-padding, 0.25rem)}.dropdown-empty{padding:var(--le-dropdown-empty-padding);text-align:center;color:var(--le-color-text-secondary, #9ca3af);font-size:var(--le-dropdown-font-size)}.dropdown-group-header{padding:var(--le-dropdown-group-padding);font-size:var(--le-dropdown-group-font-size);font-weight:700;color:var(--le-color-text-secondary, #9ca3af);letter-spacing:0.05em}.dropdown-list{text-align:initial}.dropdown-separator{height:1px;margin:var(--le-dropdown-separator-margin, 0.25rem 0);background:var(--le-color-border, #e5e7eb)}.dropdown-option{display:flex;align-items:center;gap:var(--le-dropdown-option-gap, 0.5rem);padding:var(--le-dropdown-option-padding);font-size:var(--le-dropdown-font-size, 0.875rem);line-height:1.4;color:var(--le-color-text, #1f2937);border:1px solid transparent;border-radius:var(--le-dropdown-option-radius, 0.25rem);cursor:pointer;user-select:none;transition:background-color 0.1s ease}.dropdown-option:hover,.dropdown-option.is-focused{border-color:var(--le-color-border-hover, #d1d5db)}.dropdown-option.is-disabled{opacity:0.5;cursor:not-allowed}.dropdown-option.is-disabled:hover{background:transparent}.option-checkbox{display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;border:2px solid var(--le-color-border, #d1d5db);border-radius:0.25rem;background:var(--le-color-surface, #fff);flex-shrink:0}.is-selected .option-checkbox{background:var(--le-color-primary, #3b82f6);border-color:var(--le-color-primary, #3b82f6);color:white}.option-checkbox svg{width:0.75rem;height:0.75rem}.option-icon-start,.option-icon-end{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25rem;height:1.25rem}.option-icon-start img,.option-icon-end img{width:100%;height:100%;object-fit:contain}.option-content{flex:1;min-width:0;display:flex;flex-direction:column}.option-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-description{font-size:0.75rem;color:var(--le-color-text-muted, #6b7280);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-check{display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;color:var(--le-color-primary, #3b82f6);flex-shrink:0}.option-check svg{width:1rem;height:1rem}`;
6
6
 
7
7
  const LeDropdownBase = /*@__PURE__*/ proxyCustomElement(class LeDropdownBase extends HTMLElement {
8
8
  constructor(registerHost) {
@@ -344,7 +344,7 @@ const LeDropdownBase = /*@__PURE__*/ proxyCustomElement(class LeDropdownBase ext
344
344
  "options": ["handleOptionsChange"],
345
345
  "filterQuery": ["handleOptionsChange"]
346
346
  }; }
347
- static get style() { return leDropdownBaseCss; }
347
+ static get style() { return leDropdownBaseCss(); }
348
348
  }, [769, "le-dropdown-base", {
349
349
  "options": [16],
350
350
  "value": [8],
@@ -375,12 +375,12 @@ function defineCustomElement() {
375
375
  const components = ["le-dropdown-base", "le-popover"];
376
376
  components.forEach(tagName => { switch (tagName) {
377
377
  case "le-dropdown-base":
378
- if (!customElements.get(tagName)) {
379
- customElements.define(tagName, LeDropdownBase);
378
+ if (!customElements.get(transformTag(tagName))) {
379
+ customElements.define(transformTag(tagName), LeDropdownBase);
380
380
  }
381
381
  break;
382
382
  case "le-popover":
383
- if (!customElements.get(tagName)) {
383
+ if (!customElements.get(transformTag(tagName))) {
384
384
  defineCustomElement$1();
385
385
  }
386
386
  break;