le-kit 0.1.14 → 0.1.16

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 (568) hide show
  1. package/dist/{core/cjs/index-B0mg71He.js → cjs/index-CHzu3ydp.js} +10 -3
  2. package/dist/cjs/index-CHzu3ydp.js.map +1 -0
  3. package/dist/{core/cjs → cjs}/index.cjs.js +4 -3
  4. package/dist/cjs/index.cjs.js.map +1 -0
  5. package/dist/{core/cjs → cjs}/le-box.cjs.entry.js +3 -3
  6. package/dist/cjs/le-box.entry.cjs.js.map +1 -0
  7. 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 +1 -0
  8. package/dist/cjs/le-button_13.cjs.entry.js +2579 -0
  9. package/dist/cjs/le-card.cjs.entry.js +29 -0
  10. package/dist/cjs/le-card.entry.cjs.js.map +1 -0
  11. package/dist/cjs/le-combobox.cjs.entry.js +237 -0
  12. package/dist/cjs/le-combobox.entry.cjs.js.map +1 -0
  13. package/dist/cjs/le-header-placeholder.cjs.entry.js +18 -0
  14. package/dist/cjs/le-header-placeholder.entry.cjs.js.map +1 -0
  15. package/dist/cjs/le-kit.cjs.js +25 -0
  16. package/dist/cjs/le-multiselect.cjs.entry.js +306 -0
  17. package/dist/cjs/le-multiselect.entry.cjs.js.map +1 -0
  18. package/dist/{core/cjs → cjs}/le-number-input.cjs.entry.js +3 -3
  19. package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
  20. package/dist/{core/cjs → cjs}/le-round-progress.cjs.entry.js +2 -2
  21. package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
  22. package/dist/cjs/le-segmented-control.cjs.entry.js +245 -0
  23. package/dist/cjs/le-segmented-control.entry.cjs.js.map +1 -0
  24. package/dist/{core/cjs → cjs}/le-stack.cjs.entry.js +4 -4
  25. package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
  26. package/dist/cjs/le-tab-bar.cjs.entry.js +242 -0
  27. package/dist/cjs/le-tab-bar.entry.cjs.js.map +1 -0
  28. package/dist/cjs/le-tab-panel.cjs.entry.js +100 -0
  29. package/dist/cjs/le-tab-panel.entry.cjs.js.map +1 -0
  30. package/dist/cjs/le-tab.cjs.entry.js +133 -0
  31. package/dist/cjs/le-tab.entry.cjs.js.map +1 -0
  32. package/dist/cjs/le-tabs.cjs.entry.js +307 -0
  33. package/dist/cjs/le-tabs.entry.cjs.js.map +1 -0
  34. package/dist/cjs/le-tag.cjs.entry.js +68 -0
  35. package/dist/cjs/le-tag.entry.cjs.js.map +1 -0
  36. package/dist/{core/cjs → cjs}/le-text.cjs.entry.js +3 -3
  37. package/dist/cjs/le-text.entry.cjs.js.map +1 -0
  38. package/dist/{core/cjs → cjs}/le-turntable.cjs.entry.js +2 -2
  39. package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
  40. package/dist/cjs/loader.cjs.js +13 -0
  41. package/dist/{core/cjs/utils-jdqP71LP.js → cjs/utils-CYOKcOW8.js} +3 -3
  42. package/dist/cjs/utils-CYOKcOW8.js.map +1 -0
  43. package/dist/collection/collection-manifest.json +41 -0
  44. package/dist/{core/collection → collection}/components/le-box/le-box.js +1 -1
  45. package/dist/collection/components/le-box/le-box.js.map +1 -0
  46. package/dist/{core/collection/components/le-button/le-button.default.css → collection/components/le-button/le-button.css} +65 -38
  47. package/dist/{core/collection → collection}/components/le-button/le-button.js +106 -16
  48. package/dist/collection/components/le-button/le-button.js.map +1 -0
  49. package/dist/{core/collection → collection}/components/le-card/le-card.default.css +6 -6
  50. package/dist/{core/collection → collection}/components/le-card/le-card.js +2 -2
  51. package/dist/collection/components/le-card/le-card.js.map +1 -0
  52. package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.js +2 -2
  53. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  54. package/dist/collection/components/le-collapse/le-collapse.css +31 -0
  55. package/dist/collection/components/le-collapse/le-collapse.js +188 -0
  56. package/dist/collection/components/le-collapse/le-collapse.js.map +1 -0
  57. package/dist/collection/components/le-combobox/le-combobox.css +144 -0
  58. package/dist/collection/components/le-combobox/le-combobox.js +659 -0
  59. package/dist/collection/components/le-combobox/le-combobox.js.map +1 -0
  60. package/dist/collection/components/le-component/le-component.css +189 -0
  61. package/dist/{le-kit/le-component.entry.js → collection/components/le-component/le-component.js} +137 -17
  62. package/dist/collection/components/le-component/le-component.js.map +1 -0
  63. package/dist/collection/components/le-current-heading/le-current-heading.css +12 -0
  64. package/dist/collection/components/le-current-heading/le-current-heading.js +130 -0
  65. package/dist/collection/components/le-current-heading/le-current-heading.js.map +1 -0
  66. package/dist/collection/components/le-dropdown-base/le-dropdown-base.css +167 -0
  67. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +761 -0
  68. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -0
  69. package/dist/collection/components/le-header/le-header.css +120 -0
  70. package/dist/collection/components/le-header/le-header.js +508 -0
  71. package/dist/collection/components/le-header/le-header.js.map +1 -0
  72. package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +21 -0
  73. package/dist/collection/components/le-header-placeholder/le-header-placeholder.js.map +1 -0
  74. package/dist/collection/components/le-multiselect/le-multiselect.css +163 -0
  75. package/dist/collection/components/le-multiselect/le-multiselect.js +734 -0
  76. package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -0
  77. package/dist/{core/collection → collection}/components/le-number-input/le-number-input.js +2 -2
  78. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
  79. package/dist/{core/collection → collection}/components/le-popover/le-popover.css +20 -0
  80. package/dist/{core/collection → collection}/components/le-popover/le-popover.js +180 -20
  81. package/dist/collection/components/le-popover/le-popover.js.map +1 -0
  82. package/dist/{core/collection → collection}/components/le-popup/le-popup.api.js +2 -1
  83. package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
  84. package/dist/{core/collection → collection}/components/le-popup/le-popup.js +49 -19
  85. package/dist/collection/components/le-popup/le-popup.js.map +1 -0
  86. package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.js +1 -1
  87. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  88. package/dist/collection/components/le-scroll-progress/le-scroll-progress.css +29 -0
  89. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +186 -0
  90. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +1 -0
  91. package/dist/collection/components/le-segmented-control/le-segmented-control.css +78 -0
  92. package/dist/collection/components/le-segmented-control/le-segmented-control.js +445 -0
  93. package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -0
  94. package/dist/collection/components/le-select/le-select.css +121 -0
  95. package/dist/collection/components/le-select/le-select.js +578 -0
  96. package/dist/collection/components/le-select/le-select.js.map +1 -0
  97. package/dist/collection/components/le-slot/le-slot.default.css +222 -0
  98. package/dist/{le-kit/le-slot.entry.js → collection/components/le-slot/le-slot.js} +268 -17
  99. package/dist/collection/components/le-slot/le-slot.js.map +1 -0
  100. package/dist/{core/collection → collection}/components/le-stack/le-stack.js +2 -2
  101. package/dist/collection/components/le-stack/le-stack.js.map +1 -0
  102. package/dist/{core/collection → collection}/components/le-string-input/le-string-input.css +1 -1
  103. package/dist/{core/collection → collection}/components/le-string-input/le-string-input.js +60 -6
  104. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
  105. package/dist/collection/components/le-tab/le-tab.css +289 -0
  106. package/dist/collection/components/le-tab/le-tab.js +565 -0
  107. package/dist/collection/components/le-tab/le-tab.js.map +1 -0
  108. package/dist/collection/components/le-tab-bar/le-tab-bar.css +89 -0
  109. package/dist/collection/components/le-tab-bar/le-tab-bar.js +467 -0
  110. package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -0
  111. package/dist/collection/components/le-tab-panel/le-tab-panel.css +30 -0
  112. package/dist/collection/components/le-tab-panel/le-tab-panel.js +302 -0
  113. package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -0
  114. package/dist/collection/components/le-tabs/le-tabs.css +146 -0
  115. package/dist/collection/components/le-tabs/le-tabs.js +588 -0
  116. package/dist/collection/components/le-tabs/le-tabs.js.map +1 -0
  117. package/dist/collection/components/le-tag/le-tag.css +139 -0
  118. package/dist/collection/components/le-tag/le-tag.js +266 -0
  119. package/dist/collection/components/le-tag/le-tag.js.map +1 -0
  120. package/dist/{core/collection → collection}/components/le-text/le-text.js +1 -1
  121. package/dist/collection/components/le-text/le-text.js.map +1 -0
  122. package/dist/{core/collection → collection}/components/le-turntable/le-turntable.js +1 -1
  123. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
  124. package/dist/collection/dist/components/assets/.gitkeep +1 -0
  125. package/dist/collection/dist/components/assets/custom-elements.json +9234 -0
  126. package/dist/collection/dist/components/themes/base.css +89 -0
  127. package/dist/collection/dist/components/themes/dark.css +103 -0
  128. package/dist/collection/dist/components/themes/default.css +111 -0
  129. package/dist/collection/dist/components/themes/gradient.css +103 -0
  130. package/dist/collection/dist/components/themes/index.css +76 -0
  131. package/dist/collection/dist/components/themes/minimal.css +103 -0
  132. package/dist/collection/dist/components/themes/warm.css +103 -0
  133. package/dist/collection/global/app.js.map +1 -0
  134. package/dist/collection/index.js.map +1 -0
  135. package/dist/collection/types/blocks.js.map +1 -0
  136. package/dist/collection/types/options.js.map +1 -0
  137. package/dist/collection/utils/utils.js.map +1 -0
  138. package/dist/components/assets/.gitkeep +1 -0
  139. package/dist/components/assets/custom-elements.json +9234 -0
  140. package/dist/components/index.js +11 -0
  141. package/dist/components/index.js.map +1 -0
  142. package/dist/{core/components → components}/le-box.js +22 -6
  143. package/dist/components/le-box.js.map +1 -0
  144. package/dist/{core/components → components}/le-button.js +1 -1
  145. package/dist/{core/components → components}/le-button2.js +671 -35
  146. package/dist/components/le-button2.js.map +1 -0
  147. package/dist/{core/components → components}/le-card.js +22 -6
  148. package/dist/components/le-card.js.map +1 -0
  149. package/dist/{core/components → components}/le-checkbox.js +1 -1
  150. package/dist/components/le-collapse.d.ts +11 -0
  151. package/dist/components/le-collapse.js +144 -0
  152. package/dist/components/le-collapse.js.map +1 -0
  153. package/dist/components/le-combobox.d.ts +11 -0
  154. package/dist/components/le-combobox.js +326 -0
  155. package/dist/components/le-combobox.js.map +1 -0
  156. package/dist/{core/components → components}/le-component.js +1 -1
  157. package/dist/components/le-current-heading.d.ts +11 -0
  158. package/dist/components/le-current-heading.js +93 -0
  159. package/dist/components/le-current-heading.js.map +1 -0
  160. package/dist/components/le-dropdown-base.d.ts +11 -0
  161. package/dist/components/le-dropdown-base.js +9 -0
  162. package/dist/components/le-dropdown-base.js.map +1 -0
  163. package/dist/components/le-dropdown-base2.js +393 -0
  164. package/dist/components/le-dropdown-base2.js.map +1 -0
  165. package/dist/components/le-header-placeholder.d.ts +11 -0
  166. package/dist/components/le-header-placeholder.js +37 -0
  167. package/dist/components/le-header-placeholder.js.map +1 -0
  168. package/dist/components/le-header.d.ts +11 -0
  169. package/dist/components/le-header.js +347 -0
  170. package/dist/components/le-header.js.map +1 -0
  171. package/dist/components/le-multiselect.d.ts +11 -0
  172. package/dist/components/le-multiselect.js +405 -0
  173. package/dist/components/le-multiselect.js.map +1 -0
  174. package/dist/{core/components → components}/le-number-input.js +23 -7
  175. package/dist/components/le-number-input.js.map +1 -0
  176. package/dist/{core/components → components}/le-popover2.js +143 -21
  177. package/dist/components/le-popover2.js.map +1 -0
  178. package/dist/{core/components/index.js → components/le-popup.api.js} +5 -12
  179. package/dist/components/le-popup.api.js.map +1 -0
  180. package/dist/components/le-popup.js +9 -0
  181. package/dist/components/le-popup.js.map +1 -0
  182. package/dist/{core/components → components}/le-round-progress.js +1 -1
  183. package/dist/components/le-scroll-progress.d.ts +11 -0
  184. package/dist/components/le-scroll-progress.js +142 -0
  185. package/dist/components/le-scroll-progress.js.map +1 -0
  186. package/dist/components/le-segmented-control.d.ts +11 -0
  187. package/dist/components/le-segmented-control.js +331 -0
  188. package/dist/components/le-segmented-control.js.map +1 -0
  189. package/dist/components/le-select.d.ts +11 -0
  190. package/dist/components/le-select.js +9 -0
  191. package/dist/components/le-select.js.map +1 -0
  192. package/dist/{core/components → components}/le-slot.js +1 -1
  193. package/dist/{core/components → components}/le-stack.js +23 -7
  194. package/dist/components/le-stack.js.map +1 -0
  195. package/dist/{core/components → components}/le-string-input.js +1 -1
  196. package/dist/components/le-tab-bar.d.ts +11 -0
  197. package/dist/components/le-tab-bar.js +330 -0
  198. package/dist/components/le-tab-bar.js.map +1 -0
  199. package/dist/components/le-tab-panel.d.ts +11 -0
  200. package/dist/components/le-tab-panel.js +182 -0
  201. package/dist/components/le-tab-panel.js.map +1 -0
  202. package/dist/components/le-tab.d.ts +11 -0
  203. package/dist/components/le-tab.js +9 -0
  204. package/dist/components/le-tab.js.map +1 -0
  205. package/dist/components/le-tab2.js +217 -0
  206. package/dist/components/le-tab2.js.map +1 -0
  207. package/dist/components/le-tabs.d.ts +11 -0
  208. package/dist/components/le-tabs.js +397 -0
  209. package/dist/components/le-tabs.js.map +1 -0
  210. package/dist/components/le-tag.d.ts +11 -0
  211. package/dist/components/le-tag.js +9 -0
  212. package/dist/components/le-tag.js.map +1 -0
  213. package/dist/components/le-tag2.js +141 -0
  214. package/dist/components/le-tag2.js.map +1 -0
  215. package/dist/{core/components → components}/le-text.js +22 -6
  216. package/dist/components/le-text.js.map +1 -0
  217. package/dist/{core/components → components}/le-turntable.js +1 -1
  218. package/dist/components/themes/base.css +4 -4
  219. package/dist/components/themes/dark.css +4 -1
  220. package/dist/components/themes/default.css +4 -1
  221. package/dist/components/themes/gradient.css +4 -1
  222. package/dist/components/themes/index.css +4 -341
  223. package/dist/components/themes/minimal.css +4 -1
  224. package/dist/components/themes/warm.css +4 -1
  225. package/dist/docs.d.ts +443 -0
  226. package/dist/docs.json +11547 -0
  227. package/dist/{core/esm/index-SKsXnjWI.js → esm/index-hmBwv43R.js} +10 -4
  228. package/dist/esm/index-hmBwv43R.js.map +1 -0
  229. package/dist/{core/esm → esm}/index.js +4 -3
  230. package/dist/esm/index.js.map +1 -0
  231. package/dist/{le-kit → esm}/le-box.entry.js +3 -3
  232. package/dist/esm/le-box.entry.js.map +1 -0
  233. 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 +1 -0
  234. package/dist/esm/le-button_13.entry.js +2565 -0
  235. package/dist/{le-kit → esm}/le-card.entry.js +3 -3
  236. package/dist/esm/le-card.entry.js.map +1 -0
  237. package/dist/esm/le-combobox.entry.js +235 -0
  238. package/dist/esm/le-combobox.entry.js.map +1 -0
  239. package/dist/esm/le-header-placeholder.entry.js +16 -0
  240. package/dist/esm/le-header-placeholder.entry.js.map +1 -0
  241. package/dist/esm/le-kit.js +21 -0
  242. package/dist/esm/le-multiselect.entry.js +304 -0
  243. package/dist/esm/le-multiselect.entry.js.map +1 -0
  244. package/dist/{le-kit → esm}/le-number-input.entry.js +6 -6
  245. package/dist/esm/le-number-input.entry.js.map +1 -0
  246. package/dist/{core/esm → esm}/le-round-progress.entry.js +2 -2
  247. package/dist/esm/le-round-progress.entry.js.map +1 -0
  248. package/dist/esm/le-segmented-control.entry.js +243 -0
  249. package/dist/esm/le-segmented-control.entry.js.map +1 -0
  250. package/dist/{le-kit → esm}/le-stack.entry.js +4 -4
  251. package/dist/esm/le-stack.entry.js.map +1 -0
  252. package/dist/esm/le-tab-bar.entry.js +240 -0
  253. package/dist/esm/le-tab-bar.entry.js.map +1 -0
  254. package/dist/esm/le-tab-panel.entry.js +98 -0
  255. package/dist/esm/le-tab-panel.entry.js.map +1 -0
  256. package/dist/esm/le-tab.entry.js +131 -0
  257. package/dist/esm/le-tab.entry.js.map +1 -0
  258. package/dist/esm/le-tabs.entry.js +305 -0
  259. package/dist/esm/le-tabs.entry.js.map +1 -0
  260. package/dist/esm/le-tag.entry.js +66 -0
  261. package/dist/esm/le-tag.entry.js.map +1 -0
  262. package/dist/{le-kit → esm}/le-text.entry.js +3 -3
  263. package/dist/esm/le-text.entry.js.map +1 -0
  264. package/dist/{core/esm → esm}/le-turntable.entry.js +2 -2
  265. package/dist/esm/le-turntable.entry.js.map +1 -0
  266. package/dist/esm/loader.js +11 -0
  267. package/dist/{le-kit/utils-cwSNy7ZS.js → esm/utils-DRTFlnxz.js} +3 -3
  268. package/dist/{le-kit/utils-cwSNy7ZS.js.map → esm/utils-DRTFlnxz.js.map} +1 -1
  269. package/dist/le-kit/dist/components/assets/.gitkeep +1 -0
  270. package/dist/le-kit/dist/components/assets/custom-elements.json +9234 -0
  271. package/dist/le-kit/dist/components/themes/base.css +4 -4
  272. package/dist/le-kit/dist/components/themes/dark.css +4 -1
  273. package/dist/le-kit/dist/components/themes/default.css +4 -1
  274. package/dist/le-kit/dist/components/themes/gradient.css +4 -1
  275. package/dist/le-kit/dist/components/themes/index.css +4 -341
  276. package/dist/le-kit/dist/components/themes/minimal.css +4 -1
  277. package/dist/le-kit/dist/components/themes/warm.css +4 -1
  278. package/dist/le-kit/index.esm.js +2 -116
  279. package/dist/le-kit/index.esm.js.map +1 -1
  280. 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 +1 -0
  281. package/dist/le-kit/le-combobox.entry.esm.js.map +1 -0
  282. package/dist/le-kit/le-header-placeholder.entry.esm.js.map +1 -0
  283. package/dist/le-kit/le-kit.css +1 -1010
  284. package/dist/le-kit/le-kit.esm.js +2 -48
  285. package/dist/le-kit/le-kit.esm.js.map +1 -1
  286. package/dist/le-kit/le-multiselect.entry.esm.js.map +1 -0
  287. package/dist/le-kit/le-segmented-control.entry.esm.js.map +1 -0
  288. package/dist/le-kit/le-tab-bar.entry.esm.js.map +1 -0
  289. package/dist/le-kit/le-tab-panel.entry.esm.js.map +1 -0
  290. package/dist/le-kit/le-tab.entry.esm.js.map +1 -0
  291. package/dist/le-kit/le-tabs.entry.esm.js.map +1 -0
  292. package/dist/le-kit/le-tag.entry.esm.js.map +1 -0
  293. package/dist/le-kit/p-13a4dc1d.entry.js +2 -0
  294. package/dist/le-kit/p-13a4dc1d.entry.js.map +1 -0
  295. package/dist/{core/le-kit/p-55f70091.entry.js → le-kit/p-1a9e65d0.entry.js} +2 -2
  296. package/dist/le-kit/p-1a9e65d0.entry.js.map +1 -0
  297. package/dist/le-kit/p-2708dc65.entry.js +2 -0
  298. package/dist/le-kit/p-2708dc65.entry.js.map +1 -0
  299. package/dist/le-kit/p-2b96a5bd.entry.js +2 -0
  300. package/dist/le-kit/p-2b96a5bd.entry.js.map +1 -0
  301. package/dist/le-kit/p-32cbb683.entry.js +2 -0
  302. package/dist/le-kit/p-32cbb683.entry.js.map +1 -0
  303. package/dist/le-kit/p-476e1886.entry.js +2 -0
  304. package/dist/le-kit/p-476e1886.entry.js.map +1 -0
  305. package/dist/le-kit/p-67d702f9.entry.js +2 -0
  306. package/dist/le-kit/p-67d702f9.entry.js.map +1 -0
  307. package/dist/{core/le-kit/p-6e414a5c.entry.js → le-kit/p-6884e3e8.entry.js} +2 -2
  308. package/dist/le-kit/p-6884e3e8.entry.js.map +1 -0
  309. package/dist/le-kit/p-704ad5e0.entry.js +2 -0
  310. package/dist/le-kit/p-704ad5e0.entry.js.map +1 -0
  311. package/dist/le-kit/p-88f9aa40.entry.js +2 -0
  312. package/dist/le-kit/p-88f9aa40.entry.js.map +1 -0
  313. package/dist/le-kit/p-8dd8a487.entry.js +2 -0
  314. package/dist/le-kit/p-8dd8a487.entry.js.map +1 -0
  315. package/dist/le-kit/p-97b7658a.entry.js +2 -0
  316. package/dist/le-kit/p-97b7658a.entry.js.map +1 -0
  317. package/dist/le-kit/p-c0925e92.entry.js +2 -0
  318. package/dist/le-kit/p-c0925e92.entry.js.map +1 -0
  319. package/dist/le-kit/p-c2494a0d.entry.js +2 -0
  320. package/dist/le-kit/p-c2494a0d.entry.js.map +1 -0
  321. package/dist/le-kit/p-ded51018.entry.js +2 -0
  322. package/dist/le-kit/p-ded51018.entry.js.map +1 -0
  323. package/dist/{core/le-kit/p-a9d05ef6.entry.js → le-kit/p-e3db7974.entry.js} +2 -2
  324. package/dist/le-kit/p-e3db7974.entry.js.map +1 -0
  325. package/dist/{core/le-kit/p-4f133e72.entry.js → le-kit/p-f9b03aec.entry.js} +2 -2
  326. package/dist/le-kit/p-f9b03aec.entry.js.map +1 -0
  327. package/dist/le-kit/p-hmBwv43R.js +3 -0
  328. package/dist/le-kit/p-hmBwv43R.js.map +1 -0
  329. package/dist/le-kit/p-txKmCJHv.js +2 -0
  330. package/dist/le-kit/p-txKmCJHv.js.map +1 -0
  331. package/dist/themes/base.css +89 -0
  332. package/dist/themes/dark.css +103 -0
  333. package/dist/themes/default.css +111 -0
  334. package/dist/themes/gradient.css +103 -0
  335. package/dist/themes/index.css +76 -0
  336. package/dist/themes/minimal.css +103 -0
  337. package/dist/themes/warm.css +103 -0
  338. package/dist/types/components/le-button/le-button.d.ts +19 -4
  339. package/dist/types/components/le-collapse/le-collapse.d.ts +41 -0
  340. package/dist/types/components/le-combobox/le-combobox.d.ts +128 -0
  341. package/dist/types/components/le-current-heading/le-current-heading.d.ts +25 -0
  342. package/dist/types/components/le-dropdown-base/le-dropdown-base.d.ts +118 -0
  343. package/dist/types/components/le-header/le-header.d.ts +115 -0
  344. package/dist/types/components/le-header-placeholder/le-header-placeholder.d.ts +13 -0
  345. package/dist/types/components/le-multiselect/le-multiselect.d.ts +143 -0
  346. package/dist/types/components/le-popover/le-popover.d.ts +22 -2
  347. package/dist/types/components/le-popup/le-popup.d.ts +5 -0
  348. package/dist/types/components/le-scroll-progress/le-scroll-progress.d.ts +40 -0
  349. package/dist/types/components/le-segmented-control/le-segmented-control.d.ts +82 -0
  350. package/dist/types/components/le-select/le-select.d.ts +125 -0
  351. package/dist/types/components/le-string-input/le-string-input.d.ts +8 -0
  352. package/dist/types/components/le-tab/le-tab.d.ts +116 -0
  353. package/dist/types/components/le-tab-bar/le-tab-bar.d.ts +88 -0
  354. package/dist/types/components/le-tab-panel/le-tab-panel.d.ts +75 -0
  355. package/dist/types/components/le-tabs/le-tabs.d.ts +108 -0
  356. package/dist/types/components/le-tag/le-tag.d.ts +78 -0
  357. package/dist/types/components.d.ts +3061 -273
  358. package/dist/types/types/options.d.ts +9 -0
  359. package/package.json +3 -18
  360. package/dist/core/cjs/index-B0mg71He.js.map +0 -1
  361. package/dist/core/cjs/index.cjs.js.map +0 -1
  362. package/dist/core/cjs/le-box.entry.cjs.js.map +0 -1
  363. package/dist/core/cjs/le-button.cjs.entry.js +0 -92
  364. package/dist/core/cjs/le-button.entry.cjs.js.map +0 -1
  365. package/dist/core/cjs/le-card.cjs.entry.js +0 -29
  366. package/dist/core/cjs/le-card.entry.cjs.js.map +0 -1
  367. package/dist/core/cjs/le-checkbox.cjs.entry.js +0 -61
  368. package/dist/core/cjs/le-checkbox.entry.cjs.js.map +0 -1
  369. package/dist/core/cjs/le-kit.cjs.js +0 -25
  370. package/dist/core/cjs/le-number-input.entry.cjs.js.map +0 -1
  371. package/dist/core/cjs/le-popover.cjs.entry.js +0 -348
  372. package/dist/core/cjs/le-popover.entry.cjs.js.map +0 -1
  373. package/dist/core/cjs/le-popup.cjs.entry.js +0 -212
  374. package/dist/core/cjs/le-popup.entry.cjs.js.map +0 -1
  375. package/dist/core/cjs/le-round-progress.entry.cjs.js.map +0 -1
  376. package/dist/core/cjs/le-stack.entry.cjs.js.map +0 -1
  377. package/dist/core/cjs/le-string-input.cjs.entry.js +0 -95
  378. package/dist/core/cjs/le-string-input.entry.cjs.js.map +0 -1
  379. package/dist/core/cjs/le-text.entry.cjs.js.map +0 -1
  380. package/dist/core/cjs/le-turntable.entry.cjs.js.map +0 -1
  381. package/dist/core/cjs/loader.cjs.js +0 -13
  382. package/dist/core/cjs/utils-jdqP71LP.js.map +0 -1
  383. package/dist/core/collection/collection-manifest.json +0 -24
  384. package/dist/core/collection/components/le-box/le-box.js.map +0 -1
  385. package/dist/core/collection/components/le-button/le-button.js.map +0 -1
  386. package/dist/core/collection/components/le-card/le-card.js.map +0 -1
  387. package/dist/core/collection/components/le-checkbox/le-checkbox.js.map +0 -1
  388. package/dist/core/collection/components/le-number-input/le-number-input.js.map +0 -1
  389. package/dist/core/collection/components/le-popover/le-popover.js.map +0 -1
  390. package/dist/core/collection/components/le-popup/le-popup.api.js.map +0 -1
  391. package/dist/core/collection/components/le-popup/le-popup.js.map +0 -1
  392. package/dist/core/collection/components/le-round-progress/le-round-progress.js.map +0 -1
  393. package/dist/core/collection/components/le-stack/le-stack.js.map +0 -1
  394. package/dist/core/collection/components/le-string-input/le-string-input.js.map +0 -1
  395. package/dist/core/collection/components/le-text/le-text.js.map +0 -1
  396. package/dist/core/collection/components/le-turntable/le-turntable.js.map +0 -1
  397. package/dist/core/collection/global/app.js.map +0 -1
  398. package/dist/core/collection/index.js.map +0 -1
  399. package/dist/core/collection/types/blocks.js.map +0 -1
  400. package/dist/core/collection/types/options.js.map +0 -1
  401. package/dist/core/collection/utils/utils.js.map +0 -1
  402. package/dist/core/components/index.d.ts +0 -33
  403. package/dist/core/components/index.js.map +0 -1
  404. package/dist/core/components/le-box.d.ts +0 -11
  405. package/dist/core/components/le-box.js.map +0 -1
  406. package/dist/core/components/le-button.d.ts +0 -11
  407. package/dist/core/components/le-button2.js.map +0 -1
  408. package/dist/core/components/le-card.d.ts +0 -11
  409. package/dist/core/components/le-card.js.map +0 -1
  410. package/dist/core/components/le-checkbox.d.ts +0 -11
  411. package/dist/core/components/le-component.d.ts +0 -11
  412. package/dist/core/components/le-number-input.d.ts +0 -11
  413. package/dist/core/components/le-number-input.js.map +0 -1
  414. package/dist/core/components/le-popover.d.ts +0 -11
  415. package/dist/core/components/le-popover2.js.map +0 -1
  416. package/dist/core/components/le-popup.d.ts +0 -11
  417. package/dist/core/components/le-popup.js +0 -279
  418. package/dist/core/components/le-popup.js.map +0 -1
  419. package/dist/core/components/le-round-progress.d.ts +0 -11
  420. package/dist/core/components/le-slot.d.ts +0 -11
  421. package/dist/core/components/le-stack.d.ts +0 -11
  422. package/dist/core/components/le-stack.js.map +0 -1
  423. package/dist/core/components/le-string-input.d.ts +0 -11
  424. package/dist/core/components/le-text.d.ts +0 -11
  425. package/dist/core/components/le-text.js.map +0 -1
  426. package/dist/core/components/le-turntable.d.ts +0 -11
  427. package/dist/core/esm/index-SKsXnjWI.js.map +0 -1
  428. package/dist/core/esm/index.js.map +0 -1
  429. package/dist/core/esm/le-box.entry.js +0 -182
  430. package/dist/core/esm/le-box.entry.js.map +0 -1
  431. package/dist/core/esm/le-button.entry.js +0 -90
  432. package/dist/core/esm/le-button.entry.js.map +0 -1
  433. package/dist/core/esm/le-card.entry.js +0 -27
  434. package/dist/core/esm/le-card.entry.js.map +0 -1
  435. package/dist/core/esm/le-checkbox.entry.js +0 -59
  436. package/dist/core/esm/le-checkbox.entry.js.map +0 -1
  437. package/dist/core/esm/le-kit.js +0 -21
  438. package/dist/core/esm/le-number-input.entry.js +0 -200
  439. package/dist/core/esm/le-number-input.entry.js.map +0 -1
  440. package/dist/core/esm/le-popover.entry.js +0 -346
  441. package/dist/core/esm/le-popover.entry.js.map +0 -1
  442. package/dist/core/esm/le-popup.entry.js +0 -210
  443. package/dist/core/esm/le-popup.entry.js.map +0 -1
  444. package/dist/core/esm/le-round-progress.entry.js.map +0 -1
  445. package/dist/core/esm/le-stack.entry.js +0 -133
  446. package/dist/core/esm/le-stack.entry.js.map +0 -1
  447. package/dist/core/esm/le-string-input.entry.js +0 -93
  448. package/dist/core/esm/le-string-input.entry.js.map +0 -1
  449. package/dist/core/esm/le-text.entry.js +0 -333
  450. package/dist/core/esm/le-text.entry.js.map +0 -1
  451. package/dist/core/esm/le-turntable.entry.js.map +0 -1
  452. package/dist/core/esm/loader.js +0 -11
  453. package/dist/core/esm/utils-DZdP1JiG.js +0 -146
  454. package/dist/core/esm/utils-DZdP1JiG.js.map +0 -1
  455. package/dist/core/le-kit/index.esm.js +0 -2
  456. package/dist/core/le-kit/index.esm.js.map +0 -1
  457. package/dist/core/le-kit/le-box.entry.esm.js.map +0 -1
  458. package/dist/core/le-kit/le-button.entry.esm.js.map +0 -1
  459. package/dist/core/le-kit/le-card.entry.esm.js.map +0 -1
  460. package/dist/core/le-kit/le-checkbox.entry.esm.js.map +0 -1
  461. package/dist/core/le-kit/le-kit.css +0 -1
  462. package/dist/core/le-kit/le-kit.esm.js +0 -2
  463. package/dist/core/le-kit/le-kit.esm.js.map +0 -1
  464. package/dist/core/le-kit/le-number-input.entry.esm.js.map +0 -1
  465. package/dist/core/le-kit/le-popover.entry.esm.js.map +0 -1
  466. package/dist/core/le-kit/le-popup.entry.esm.js.map +0 -1
  467. package/dist/core/le-kit/le-round-progress.entry.esm.js.map +0 -1
  468. package/dist/core/le-kit/le-stack.entry.esm.js.map +0 -1
  469. package/dist/core/le-kit/le-string-input.entry.esm.js.map +0 -1
  470. package/dist/core/le-kit/le-text.entry.esm.js.map +0 -1
  471. package/dist/core/le-kit/le-turntable.entry.esm.js.map +0 -1
  472. package/dist/core/le-kit/loader.esm.js.map +0 -1
  473. package/dist/core/le-kit/p--VxUdzYV.js +0 -2
  474. package/dist/core/le-kit/p--VxUdzYV.js.map +0 -1
  475. package/dist/core/le-kit/p-189cb775.entry.js +0 -2
  476. package/dist/core/le-kit/p-189cb775.entry.js.map +0 -1
  477. package/dist/core/le-kit/p-35c1d413.entry.js +0 -2
  478. package/dist/core/le-kit/p-35c1d413.entry.js.map +0 -1
  479. package/dist/core/le-kit/p-4f133e72.entry.js.map +0 -1
  480. package/dist/core/le-kit/p-55f70091.entry.js.map +0 -1
  481. package/dist/core/le-kit/p-5fd7b23a.entry.js +0 -2
  482. package/dist/core/le-kit/p-5fd7b23a.entry.js.map +0 -1
  483. package/dist/core/le-kit/p-6e414a5c.entry.js.map +0 -1
  484. package/dist/core/le-kit/p-7b121ca7.entry.js +0 -2
  485. package/dist/core/le-kit/p-7b121ca7.entry.js.map +0 -1
  486. package/dist/core/le-kit/p-8c81fa95.entry.js +0 -2
  487. package/dist/core/le-kit/p-8c81fa95.entry.js.map +0 -1
  488. package/dist/core/le-kit/p-9aa81442.entry.js +0 -2
  489. package/dist/core/le-kit/p-9aa81442.entry.js.map +0 -1
  490. package/dist/core/le-kit/p-SKsXnjWI.js +0 -3
  491. package/dist/core/le-kit/p-SKsXnjWI.js.map +0 -1
  492. package/dist/core/le-kit/p-a9d05ef6.entry.js.map +0 -1
  493. package/dist/core/le-kit/p-b2bd2a80.entry.js +0 -2
  494. package/dist/core/le-kit/p-b2bd2a80.entry.js.map +0 -1
  495. package/dist/core/le-kit/p-ccac9611.entry.js +0 -2
  496. package/dist/core/le-kit/p-ccac9611.entry.js.map +0 -1
  497. package/dist/core/loader/cdn.js +0 -1
  498. package/dist/core/loader/index.cjs.js +0 -1
  499. package/dist/core/loader/index.d.ts +0 -24
  500. package/dist/core/loader/index.es2017.js +0 -1
  501. package/dist/core/loader/index.js +0 -2
  502. package/dist/core/types/components/le-box/le-box.d.ts +0 -111
  503. package/dist/core/types/components/le-button/le-button.d.ts +0 -78
  504. package/dist/core/types/components/le-card/le-card.d.ts +0 -37
  505. package/dist/core/types/components/le-checkbox/le-checkbox.d.ts +0 -46
  506. package/dist/core/types/components/le-number-input/le-number-input.d.ts +0 -106
  507. package/dist/core/types/components/le-popover/le-popover.d.ts +0 -109
  508. package/dist/core/types/components/le-popup/le-popup.api.d.ts +0 -73
  509. package/dist/core/types/components/le-popup/le-popup.d.ts +0 -122
  510. package/dist/core/types/components/le-round-progress/le-round-progress.d.ts +0 -37
  511. package/dist/core/types/components/le-stack/le-stack.d.ts +0 -73
  512. package/dist/core/types/components/le-string-input/le-string-input.d.ts +0 -83
  513. package/dist/core/types/components/le-text/le-text.d.ts +0 -141
  514. package/dist/core/types/components/le-turntable/le-turntable.d.ts +0 -55
  515. package/dist/core/types/components.d.ts +0 -1752
  516. package/dist/core/types/global/app.d.ts +0 -73
  517. package/dist/core/types/index.d.ts +0 -15
  518. package/dist/core/types/stencil-public-runtime.d.ts +0 -1756
  519. package/dist/core/types/types/blocks.d.ts +0 -136
  520. package/dist/core/types/types/options.d.ts +0 -124
  521. package/dist/core/types/utils/utils.d.ts +0 -54
  522. package/dist/le-kit/assets/custom-elements.json +0 -4305
  523. package/dist/le-kit/index-CAY3Hk_i.js +0 -4559
  524. package/dist/le-kit/index-CAY3Hk_i.js.map +0 -1
  525. package/dist/le-kit/le-button.entry.esm.js.map +0 -1
  526. package/dist/le-kit/le-button.entry.js +0 -90
  527. package/dist/le-kit/le-checkbox.entry.esm.js.map +0 -1
  528. package/dist/le-kit/le-checkbox.entry.js +0 -59
  529. package/dist/le-kit/le-component.entry.esm.js.map +0 -1
  530. package/dist/le-kit/le-popover.entry.esm.js.map +0 -1
  531. package/dist/le-kit/le-popover.entry.js +0 -346
  532. package/dist/le-kit/le-popup.entry.esm.js.map +0 -1
  533. package/dist/le-kit/le-popup.entry.js +0 -210
  534. package/dist/le-kit/le-round-progress.entry.js +0 -104
  535. package/dist/le-kit/le-slot.entry.esm.js.map +0 -1
  536. package/dist/le-kit/le-string-input.entry.esm.js.map +0 -1
  537. package/dist/le-kit/le-string-input.entry.js +0 -93
  538. package/dist/le-kit/le-turntable.entry.js +0 -137
  539. /package/dist/{core/cjs → cjs}/le-kit.cjs.js.map +0 -0
  540. /package/dist/{core/cjs → cjs}/loader.cjs.js.map +0 -0
  541. /package/dist/{core/collection → collection}/components/le-box/le-box.default.css +0 -0
  542. /package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.css +0 -0
  543. /package/dist/{core/collection → collection}/components/le-number-input/le-number-input.css +0 -0
  544. /package/dist/{core/collection → collection}/components/le-popup/le-popup.css +0 -0
  545. /package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.css +0 -0
  546. /package/dist/{core/collection → collection}/components/le-stack/le-stack.default.css +0 -0
  547. /package/dist/{core/collection → collection}/components/le-text/le-text.default.css +0 -0
  548. /package/dist/{core/collection → collection}/components/le-turntable/le-turntable.css +0 -0
  549. /package/dist/{core/collection → collection}/global/app.js +0 -0
  550. /package/dist/{core/collection → collection}/index.js +0 -0
  551. /package/dist/{core/collection → collection}/types/blocks.js +0 -0
  552. /package/dist/{core/collection → collection}/types/options.js +0 -0
  553. /package/dist/{core/collection → collection}/utils/utils.js +0 -0
  554. /package/dist/{core/components → components}/le-button.js.map +0 -0
  555. /package/dist/{core/components → components}/le-checkbox.js.map +0 -0
  556. /package/dist/{core/components → components}/le-component.js.map +0 -0
  557. /package/dist/{core/components → components}/le-popover.js +0 -0
  558. /package/dist/{core/components → components}/le-popover.js.map +0 -0
  559. /package/dist/{core/components → components}/le-round-progress.js.map +0 -0
  560. /package/dist/{core/components → components}/le-slot.js.map +0 -0
  561. /package/dist/{core/components → components}/le-string-input.js.map +0 -0
  562. /package/dist/{core/components → components}/le-turntable.js.map +0 -0
  563. /package/dist/{core/components → components}/utils.js +0 -0
  564. /package/dist/{core/components → components}/utils.js.map +0 -0
  565. /package/dist/{core/esm → esm}/le-kit.js.map +0 -0
  566. /package/dist/{core/esm → esm}/loader.js.map +0 -0
  567. /package/dist/{core/index.cjs.js → index.cjs.js} +0 -0
  568. /package/dist/{core/index.js → index.js} +0 -0
@@ -5,7 +5,11 @@
5
5
  * It contains typing information for all components that exist in this project.
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
+ import { LeMultiOptionSelectDetail, LeOption, LeOptionSelectDetail, LeOptionValue } from "./types/options";
9
+ import { LeKitMode } from "./global/app";
8
10
  import { PopupPosition, PopupResult, PopupType } from "./components/le-popup/le-popup";
11
+ export { LeMultiOptionSelectDetail, LeOption, LeOptionSelectDetail, LeOptionValue } from "./types/options";
12
+ export { LeKitMode } from "./global/app";
9
13
  export { PopupPosition, PopupResult, PopupType } from "./components/le-popup/le-popup";
10
14
  export namespace Components {
11
15
  /**
@@ -125,10 +129,18 @@ export namespace Components {
125
129
  * @cssprop --le-button-padding-y - Button vertical padding
126
130
  * @csspart button - The native button element
127
131
  * @csspart content - The button content wrapper
132
+ * @csspart icon-start - The start icon slot
133
+ * @csspart icon-end - The end icon slot
128
134
  * @cmsEditable true
129
135
  * @cmsCategory Actions
130
136
  */
131
137
  interface LeButton {
138
+ /**
139
+ * Alignment of the button label without the end icon
140
+ * @allowedValues start | center | space-between | end
141
+ * @default 'center'
142
+ */
143
+ "align": 'start' | 'center' | 'space-between' | 'end';
132
144
  /**
133
145
  * Button color theme (uses theme semantic colors)
134
146
  * @allowedValues primary | secondary | success | warning | danger | info
@@ -150,10 +162,17 @@ export namespace Components {
150
162
  */
151
163
  "href"?: string;
152
164
  /**
153
- * Whether the button displays only an icon (square aspect ratio)
154
- * @default false
165
+ * End icon image or emoji
166
+ */
167
+ "iconEnd"?: string | Node;
168
+ /**
169
+ * Icon only button image or emoji if this prop is set, the button will render only the icon slot
170
+ */
171
+ "iconOnly"?: string | Node;
172
+ /**
173
+ * Start icon image or emoji
155
174
  */
156
- "iconOnly": boolean;
175
+ "iconStart"?: string | Node;
157
176
  /**
158
177
  * Mode of the popover should be 'default' for internal use
159
178
  */
@@ -246,6 +265,132 @@ export namespace Components {
246
265
  */
247
266
  "value": string;
248
267
  }
268
+ /**
269
+ * Animated show/hide wrapper.
270
+ * Supports height collapse (auto->0) and/or fading.
271
+ * Can optionally listen to the nearest `le-header` shrink events.
272
+ * @cssprop --le-collapse-duration - Transition duration
273
+ * @csspart region - Collapsible region
274
+ * @csspart content - Inner content
275
+ * @cmsEditable true
276
+ * @cmsCategory Layout
277
+ */
278
+ interface LeCollapse {
279
+ /**
280
+ * If true, collapse/expand based on the nearest header shrink event.
281
+ * @default false
282
+ */
283
+ "collapseOnHeaderShrink": boolean;
284
+ /**
285
+ * Stop fading the content when collapsing/expanding.
286
+ * @default false
287
+ */
288
+ "noFading": boolean;
289
+ /**
290
+ * Whether the content should be shown.
291
+ * @default true
292
+ */
293
+ "open": boolean;
294
+ /**
295
+ * Whether the content should scroll down from the top when open.
296
+ * @default false
297
+ */
298
+ "scrollDown": boolean;
299
+ }
300
+ /**
301
+ * A combobox component with searchable dropdown.
302
+ * Combines a text input with a dropdown list, allowing users to
303
+ * filter options by typing or select from the list.
304
+ * @cmsEditable true
305
+ * @cmsCategory Form
306
+ * @example Basic combobox
307
+ * ```html
308
+ * <le-combobox
309
+ * placeholder="Search..."
310
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
311
+ * ></le-combobox>
312
+ * ```
313
+ * @example Allow custom values
314
+ * ```html
315
+ * <le-combobox
316
+ * placeholder="Type or select..."
317
+ * allow-custom
318
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
319
+ * ></le-combobox>
320
+ * ```
321
+ */
322
+ interface LeCombobox {
323
+ /**
324
+ * Whether to allow custom values not in the options list.
325
+ * @default false
326
+ */
327
+ "allowCustom": boolean;
328
+ /**
329
+ * Whether the combobox is disabled.
330
+ * @default false
331
+ */
332
+ "disabled": boolean;
333
+ /**
334
+ * Text to show when no options match the search.
335
+ * @default 'No results found'
336
+ */
337
+ "emptyText": string;
338
+ /**
339
+ * Focuses the input element.
340
+ */
341
+ "focusInput": () => Promise<void>;
342
+ /**
343
+ * Whether the multiselect should take full width of its container.
344
+ * @default false
345
+ */
346
+ "fullWidth": boolean;
347
+ /**
348
+ * Closes the dropdown.
349
+ */
350
+ "hideDropdown": () => Promise<void>;
351
+ /**
352
+ * Minimum characters before showing filtered results.
353
+ * @default 0
354
+ */
355
+ "minSearchLength": number;
356
+ /**
357
+ * Name attribute for form submission.
358
+ */
359
+ "name"?: string;
360
+ /**
361
+ * Whether the dropdown is currently open.
362
+ * @default false
363
+ */
364
+ "open": boolean;
365
+ /**
366
+ * The options to display in the dropdown.
367
+ * @default []
368
+ */
369
+ "options": LeOption[] | string;
370
+ /**
371
+ * Placeholder text for the input.
372
+ * @default 'Type to search...'
373
+ */
374
+ "placeholder": string;
375
+ /**
376
+ * Whether selection is required.
377
+ * @default false
378
+ */
379
+ "required": boolean;
380
+ /**
381
+ * Opens the dropdown.
382
+ */
383
+ "showDropdown": () => Promise<void>;
384
+ /**
385
+ * Size variant of the combobox.
386
+ * @default 'medium'
387
+ */
388
+ "size": 'small' | 'medium' | 'large';
389
+ /**
390
+ * The currently selected value.
391
+ */
392
+ "value"?: LeOptionValue;
393
+ }
249
394
  /**
250
395
  * Component wrapper for admin mode editing.
251
396
  * This component is used internally by other components to provide admin-mode
@@ -285,6 +430,285 @@ export namespace Components {
285
430
  */
286
431
  "hostStyle"?: { [key: string]: string };
287
432
  }
433
+ /**
434
+ * Shows a "smart" header title based on what has scrolled out of view.
435
+ * When `selector` matches multiple elements, the title becomes the last element
436
+ * (top-to-bottom) that has fully scrolled out above the viewport.
437
+ * @csspart title - The rendered title
438
+ * @cmsEditable true
439
+ * @cmsCategory Layout
440
+ */
441
+ interface LeCurrentHeading {
442
+ /**
443
+ * CSS selector for page title/headings to watch (e.g. `.page-title`, `main h2`).
444
+ * @default ''
445
+ */
446
+ "selector": string;
447
+ }
448
+ /**
449
+ * Internal dropdown base component that provides shared functionality
450
+ * for select, combobox, and multiselect components.
451
+ * Wraps le-popover for positioning and provides:
452
+ * - Option list rendering with groups
453
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
454
+ * - Option filtering support
455
+ * - Single and multi-select modes
456
+ * @cmsInternal true
457
+ * @cmsCategory System
458
+ */
459
+ interface LeDropdownBase {
460
+ /**
461
+ * Whether to close the dropdown when clicking outside. (used to support combobox with input focus)
462
+ * @default true
463
+ */
464
+ "closeOnClickOutside": boolean;
465
+ /**
466
+ * Whether the dropdown is disabled.
467
+ * @default false
468
+ */
469
+ "disabled": boolean;
470
+ /**
471
+ * Placeholder text when no options match filter.
472
+ * @default 'No options'
473
+ */
474
+ "emptyText": string;
475
+ /**
476
+ * Filter function for options. Return true to include the option.
477
+ */
478
+ "filterFn"?: (option: LeOption, query: string) => boolean;
479
+ /**
480
+ * Current filter query string.
481
+ * @default ''
482
+ */
483
+ "filterQuery": string;
484
+ /**
485
+ * Sets the dropdown to full width of the trigger.
486
+ * @default false
487
+ */
488
+ "fullWidth": boolean;
489
+ /**
490
+ * Closes the dropdown.
491
+ */
492
+ "hide": () => Promise<void>;
493
+ /**
494
+ * Maximum height of the dropdown list.
495
+ * @default '300px'
496
+ */
497
+ "maxHeight": string;
498
+ /**
499
+ * Whether multiple selection is allowed.
500
+ * @default false
501
+ */
502
+ "multiple": boolean;
503
+ /**
504
+ * Whether the dropdown is open.
505
+ * @default false
506
+ */
507
+ "open": boolean;
508
+ /**
509
+ * The options to display in the dropdown.
510
+ * @default []
511
+ */
512
+ "options": LeOption[];
513
+ /**
514
+ * Opens the dropdown.
515
+ */
516
+ "show": () => Promise<void>;
517
+ /**
518
+ * Whether to show checkboxes for multiselect mode.
519
+ * @default true
520
+ */
521
+ "showCheckboxes": boolean;
522
+ /**
523
+ * Toggles the dropdown.
524
+ */
525
+ "toggle": () => Promise<void>;
526
+ /**
527
+ * Current value(s) - single value or array for multiselect.
528
+ */
529
+ "value"?: LeOptionValue | LeOptionValue[];
530
+ /**
531
+ * Width of the dropdown. If not set, matches trigger width.
532
+ */
533
+ "width"?: string;
534
+ }
535
+ /**
536
+ * A functional page header with scroll-aware behaviors.
537
+ * Features:
538
+ * - Static (default), sticky, or fixed positioning
539
+ * - Optional shrink-on-scroll behavior via `shrink-offset`
540
+ * - Optional reveal-on-scroll-up via `reveal-on-scroll` (sticky only)
541
+ * Slots:
542
+ * - `start`: left side (logo/back button)
543
+ * - `title`: centered/primary title content
544
+ * - `end`: right side actions
545
+ * - default: extra content row (e.g., tabs/search) rendered below main row
546
+ * @cssprop --le-header-bg - Background (color/gradient)
547
+ * @cssprop --le-header-color - Text color
548
+ * @cssprop --le-header-border - Border (e.g. 1px solid ...)
549
+ * @cssprop --le-header-shadow - Shadow/elevation
550
+ * @cssprop --le-header-max-width - Inner content max width
551
+ * @cssprop --le-header-padding-x - Horizontal padding
552
+ * @cssprop --le-header-padding-y - Vertical padding
553
+ * @cssprop --le-header-gap - Gap between zones
554
+ * @cssprop --le-header-height - Base height (main row)
555
+ * @cssprop --le-header-height-condensed - Condensed height when shrunk
556
+ * @cssprop --le-header-transition - Transition timing
557
+ * @cssprop --le-header-z - Z-index (fixed mode)
558
+ * @csspart header - The header container
559
+ * @csspart inner - Inner max-width container
560
+ * @csspart row - Main row
561
+ * @csspart start - Start zone
562
+ * @csspart title - Title zone
563
+ * @csspart end - End zone
564
+ * @csspart secondary - Secondary row
565
+ * @cmsEditable true
566
+ * @cmsCategory Layout
567
+ */
568
+ interface LeHeader {
569
+ /**
570
+ * If true, expand the header when hovered
571
+ * @default false
572
+ */
573
+ "expandOnHover": boolean;
574
+ /**
575
+ * Fixed positioning (out-of-flow). Takes precedence over `sticky`/`static`.
576
+ * @default false
577
+ */
578
+ "fixed": boolean;
579
+ /**
580
+ * Force static positioning (default). Ignored if `sticky` or `fixed` are true.
581
+ * @default false
582
+ */
583
+ "isStatic": boolean;
584
+ /**
585
+ * Sticky-only reveal behavior (hide on scroll down, show on scroll up). - missing/false: disabled - true/empty attribute: enabled with default threshold (16) - number (as string): enabled and used as threshold
586
+ */
587
+ "revealOnScroll"?: string;
588
+ /**
589
+ * Shrink trigger. - missing/0: disabled - number (px): shrink when scrollY >= that value (but never before header height) - css var name (e.g. --foo): shrink when scrollY >= resolved var value - selector (e.g. .page-title): shrink when that element scrolls out of view above the viewport
590
+ */
591
+ "shrinkOffset"?: string;
592
+ /**
593
+ * Sticky positioning (in-flow). Ignored if `fixed` is true.
594
+ * @default false
595
+ */
596
+ "sticky": boolean;
597
+ }
598
+ /**
599
+ * Placeholder for `le-header`.
600
+ * Reserves space using the global CSS variable `--le-header-height`.
601
+ * The header component updates that variable when it renders.
602
+ * @cssprop --le-header-height - Published header height (px)
603
+ * @cmsInternal true
604
+ */
605
+ interface LeHeaderPlaceholder {
606
+ }
607
+ /**
608
+ * A multiselect component for selecting multiple options.
609
+ * Displays selected items as tags with optional search filtering.
610
+ * @cmsEditable true
611
+ * @cmsCategory Form
612
+ * @example Basic multiselect
613
+ * ```html
614
+ * <le-multiselect
615
+ * placeholder="Select options..."
616
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
617
+ * ></le-multiselect>
618
+ * ```
619
+ * @example With max selections
620
+ * ```html
621
+ * <le-multiselect
622
+ * max-selections="3"
623
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
624
+ * ></le-multiselect>
625
+ * ```
626
+ * @example With search
627
+ * ```html
628
+ * <le-multiselect
629
+ * searchable
630
+ * placeholder="Search and select..."
631
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
632
+ * ></le-multiselect>
633
+ * ```
634
+ */
635
+ interface LeMultiselect {
636
+ /**
637
+ * Clears all selections.
638
+ */
639
+ "clearSelection": () => Promise<void>;
640
+ /**
641
+ * Whether the multiselect is disabled.
642
+ * @default false
643
+ */
644
+ "disabled": boolean;
645
+ /**
646
+ * Text to show when no options match the search.
647
+ * @default 'No results found'
648
+ */
649
+ "emptyText": string;
650
+ /**
651
+ * Whether the multiselect should take full width of its container.
652
+ * @default false
653
+ */
654
+ "fullWidth": boolean;
655
+ /**
656
+ * Closes the dropdown.
657
+ */
658
+ "hideDropdown": () => Promise<void>;
659
+ /**
660
+ * Maximum number of selections allowed.
661
+ */
662
+ "maxSelections"?: number;
663
+ /**
664
+ * Name attribute for form submission.
665
+ */
666
+ "name"?: string;
667
+ /**
668
+ * Whether the dropdown is currently open.
669
+ * @default false
670
+ */
671
+ "open": boolean;
672
+ /**
673
+ * The options to display in the dropdown.
674
+ * @default []
675
+ */
676
+ "options": LeOption[] | string;
677
+ /**
678
+ * Placeholder text when no options are selected.
679
+ * @default 'Select options...'
680
+ */
681
+ "placeholder": string;
682
+ /**
683
+ * Whether selection is required.
684
+ * @default false
685
+ */
686
+ "required": boolean;
687
+ /**
688
+ * Whether the input is searchable.
689
+ * @default false
690
+ */
691
+ "searchable": boolean;
692
+ /**
693
+ * Opens the dropdown.
694
+ */
695
+ "showDropdown": () => Promise<void>;
696
+ /**
697
+ * Whether to show a "Select All" option. Also accepts a string or array of strings to customize the label(s).
698
+ * @default false
699
+ */
700
+ "showSelectAll": boolean | string | string[];
701
+ /**
702
+ * Size variant of the multiselect.
703
+ * @default 'medium'
704
+ */
705
+ "size": 'small' | 'medium' | 'large';
706
+ /**
707
+ * The currently selected values.
708
+ * @default []
709
+ */
710
+ "value": LeOptionValue[];
711
+ }
288
712
  /**
289
713
  * A number input component with validation, keyboard controls, and custom spinners.
290
714
  * @cssprop --le-input-bg - Input background color
@@ -358,6 +782,8 @@ export namespace Components {
358
782
  * A popover component for displaying floating content.
359
783
  * Uses the native HTML Popover API for proper layering with dialogs
360
784
  * and other top-layer elements. Falls back gracefully in older browsers.
785
+ * @csspart trigger - The popover trigger element
786
+ * @csspart content - The popover content wrapper
361
787
  * @cmsInternal true
362
788
  * @cmsCategory System
363
789
  */
@@ -426,6 +852,15 @@ export namespace Components {
426
852
  * Toggles the popover
427
853
  */
428
854
  "toggle": () => Promise<void>;
855
+ /**
856
+ * Should the popover's trigger take full width of its container
857
+ * @default false
858
+ */
859
+ "triggerFullWidth": boolean;
860
+ /**
861
+ * Method to update the popover position from a parent component
862
+ */
863
+ "updatePosition": () => Promise<void>;
429
864
  /**
430
865
  * Fixed width for the popover (e.g., '300px', '20rem')
431
866
  */
@@ -434,7 +869,7 @@ export namespace Components {
434
869
  /**
435
870
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
436
871
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
437
- * and focus management. Can be used declaratively in HTML or programmatically
872
+ * and focus management. Can be used declaratively in HTML or programmatically
438
873
  * via leAlert(), leConfirm(), lePrompt().
439
874
  * @cmsInternal true
440
875
  * @cmsCategory System
@@ -473,6 +908,11 @@ export namespace Components {
473
908
  * @default true
474
909
  */
475
910
  "modal": boolean;
911
+ /**
912
+ * The mode of the Le Kit (e.g., 'default' or 'admin')
913
+ * @default 'default'
914
+ */
915
+ "mode": LeKitMode;
476
916
  /**
477
917
  * Whether the popup is currently visible
478
918
  * @default false
@@ -514,40 +954,207 @@ export namespace Components {
514
954
  "value": number;
515
955
  }
516
956
  /**
517
- * Slot placeholder component for admin/CMS mode.
518
- * This component renders a visual placeholder for slots when in admin mode,
519
- * allowing CMS systems to show available drop zones for content or inline editing.
520
- * In non-admin mode, this component renders nothing and acts as a passthrough.
521
- * @cmsInternal true
522
- * @cmsCategory System
957
+ * Displays scroll progress as a simple bar.
958
+ * If `track-scroll-progress` is present without a value, tracks the full document.
959
+ * If it is a selector string, tracks progress within the matched element.
960
+ * @cssprop --le-scroll-progress-height - Bar height
961
+ * @cssprop --le-scroll-progress-bg - Track background
962
+ * @cssprop --le-scroll-progress-fill - Fill color
963
+ * @cssprop --le-scroll-progress-sticky-top - If sticky, stop position to parent top
964
+ * @cssprop --le-scroll-progress-fixed-top - If fixed, distance from window top
965
+ * @cssprop --le-scroll-progress-fixed-left - If fixed, distance from window left
966
+ * @cssprop --le-scroll-progress-fixed-right - If fixed, distance from window right
967
+ * @cssprop --le-scroll-progress-z - Z-index of the progress bar (1001 by default, above header)
968
+ * @csspart track - Outer track
969
+ * @csspart fill - Inner fill
970
+ * @cmsEditable true
971
+ * @cmsCategory Layout
523
972
  */
524
- interface LeSlot {
973
+ interface LeScrollProgress {
525
974
  /**
526
- * Comma-separated list of allowed component tags for this slot. Used by CMS to filter available components.
527
- * @example "le-card,le-button,le-text"
975
+ * Boolean or selector string.
528
976
  */
529
- "allowedComponents"?: string;
977
+ "trackScrollProgress"?: string;
978
+ }
979
+ /**
980
+ * A segmented control component (iOS-style toggle buttons).
981
+ * Perfect for toggling between a small set of related options.
982
+ * @cssprop --le-segmented-bg - Background color of the control
983
+ * @cssprop --le-segmented-padding - Padding around segments
984
+ * @cssprop --le-segmented-gap - Gap between segments
985
+ * @cssprop --le-segmented-radius - Border radius of the control
986
+ * @csspart container - The main container
987
+ * @csspart segment - Individual segment buttons
988
+ * @csspart segment-active - The currently active segment
989
+ * @cmsEditable true
990
+ * @cmsCategory Form
991
+ */
992
+ interface LeSegmentedControl {
530
993
  /**
531
- * Description of what content this slot accepts. Shown in admin mode to guide content editors.
994
+ * Whether the control is disabled.
995
+ * @default false
532
996
  */
533
- "description"?: string;
997
+ "disabled": boolean;
534
998
  /**
535
- * Label to display in admin mode. If not provided, the slot name will be used.
999
+ * Whether the control should take full width.
1000
+ * @default false
536
1001
  */
537
- "label"?: string;
1002
+ "fullWidth": boolean;
538
1003
  /**
539
- * Whether multiple components can be dropped in this slot.
540
- * @default true
1004
+ * Array of options for the segmented control.
1005
+ * @default []
541
1006
  */
542
- "multiple": boolean;
1007
+ "options": LeOption[];
543
1008
  /**
544
- * The name of the slot this placeholder represents. Should match the slot name in the parent component.
545
- * @default ''
1009
+ * Scroll behavior for overflowing tabs.
1010
+ * @allowedValues auto | hidden | visible | scroll
1011
+ * @default 'auto'
546
1012
  */
547
- "name": string;
1013
+ "overflow": 'auto' | 'hidden' | 'visible' | 'scroll';
548
1014
  /**
549
- * Placeholder text for text/textarea inputs in admin mode.
550
- */
1015
+ * Size of the control.
1016
+ * @allowedValues small | medium | large
1017
+ * @default 'medium'
1018
+ */
1019
+ "size": 'small' | 'medium' | 'large';
1020
+ /**
1021
+ * The value of the currently selected option.
1022
+ */
1023
+ "value"?: LeOptionValue;
1024
+ }
1025
+ /**
1026
+ * A select dropdown component for single selection.
1027
+ * @cmsEditable true
1028
+ * @cmsCategory Form
1029
+ * @example Basic select
1030
+ * ```html
1031
+ * <le-select
1032
+ * placeholder="Choose an option"
1033
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
1034
+ * ></le-select>
1035
+ * ```
1036
+ * @example With icons
1037
+ * ```html
1038
+ * <le-select
1039
+ * options='[
1040
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
1041
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
1042
+ * ]'
1043
+ * ></le-select>
1044
+ * ```
1045
+ * @example Grouped options
1046
+ * ```html
1047
+ * <le-select
1048
+ * options='[
1049
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
1050
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
1051
+ * ]'
1052
+ * ></le-select>
1053
+ * ```
1054
+ */
1055
+ interface LeSelect {
1056
+ /**
1057
+ * Whether the select is disabled.
1058
+ * @default false
1059
+ */
1060
+ "disabled": boolean;
1061
+ /**
1062
+ * Text to show when no options match the search.
1063
+ * @default 'No results found'
1064
+ */
1065
+ "emptyText": string;
1066
+ /**
1067
+ * Whether the select should take full width of its container.
1068
+ * @default false
1069
+ */
1070
+ "fullWidth": boolean;
1071
+ /**
1072
+ * Closes the dropdown.
1073
+ */
1074
+ "hideDropdown": () => Promise<void>;
1075
+ /**
1076
+ * Name attribute for form submission.
1077
+ */
1078
+ "name"?: string;
1079
+ /**
1080
+ * Whether the dropdown is currently open.
1081
+ * @default false
1082
+ */
1083
+ "open": boolean;
1084
+ /**
1085
+ * The options to display in the dropdown.
1086
+ * @default []
1087
+ */
1088
+ "options": LeOption[] | string;
1089
+ /**
1090
+ * Placeholder text when no option is selected.
1091
+ * @default 'Select an option'
1092
+ */
1093
+ "placeholder": string;
1094
+ /**
1095
+ * Whether selection is required.
1096
+ * @default false
1097
+ */
1098
+ "required": boolean;
1099
+ /**
1100
+ * Whether the input is searchable.
1101
+ * @default false
1102
+ */
1103
+ "searchable": boolean;
1104
+ /**
1105
+ * Opens the dropdown.
1106
+ */
1107
+ "showDropdown": () => Promise<void>;
1108
+ /**
1109
+ * Size variant of the select.
1110
+ * @default 'medium'
1111
+ */
1112
+ "size": 'small' | 'medium' | 'large';
1113
+ /**
1114
+ * The currently selected value.
1115
+ */
1116
+ "value"?: LeOptionValue;
1117
+ /**
1118
+ * Visual variant of the select.
1119
+ * @default 'default'
1120
+ */
1121
+ "variant": 'default' | 'outlined' | 'solid';
1122
+ }
1123
+ /**
1124
+ * Slot placeholder component for admin/CMS mode.
1125
+ * This component renders a visual placeholder for slots when in admin mode,
1126
+ * allowing CMS systems to show available drop zones for content or inline editing.
1127
+ * In non-admin mode, this component renders nothing and acts as a passthrough.
1128
+ * @cmsInternal true
1129
+ * @cmsCategory System
1130
+ */
1131
+ interface LeSlot {
1132
+ /**
1133
+ * Comma-separated list of allowed component tags for this slot. Used by CMS to filter available components.
1134
+ * @example "le-card,le-button,le-text"
1135
+ */
1136
+ "allowedComponents"?: string;
1137
+ /**
1138
+ * Description of what content this slot accepts. Shown in admin mode to guide content editors.
1139
+ */
1140
+ "description"?: string;
1141
+ /**
1142
+ * Label to display in admin mode. If not provided, the slot name will be used.
1143
+ */
1144
+ "label"?: string;
1145
+ /**
1146
+ * Whether multiple components can be dropped in this slot.
1147
+ * @default true
1148
+ */
1149
+ "multiple": boolean;
1150
+ /**
1151
+ * The name of the slot this placeholder represents. Should match the slot name in the parent component.
1152
+ * @default ''
1153
+ */
1154
+ "name": string;
1155
+ /**
1156
+ * Placeholder text for text/textarea inputs in admin mode.
1157
+ */
551
1158
  "placeholder"?: string;
552
1159
  /**
553
1160
  * Whether this slot is required to have content.
@@ -658,6 +1265,11 @@ export namespace Components {
658
1265
  * External ID for linking with external systems
659
1266
  */
660
1267
  "externalId": string;
1268
+ /**
1269
+ * Hide description slot
1270
+ * @default false
1271
+ */
1272
+ "hideDescription": boolean;
661
1273
  /**
662
1274
  * Icon for the end icon
663
1275
  */
@@ -666,6 +1278,10 @@ export namespace Components {
666
1278
  * Icon for the start icon
667
1279
  */
668
1280
  "iconStart": string;
1281
+ /**
1282
+ * Pass the ref of the input element to the parent component
1283
+ */
1284
+ "inputRef"?: (el: HTMLInputElement) => void;
669
1285
  /**
670
1286
  * Label for the input
671
1287
  */
@@ -698,128 +1314,508 @@ export namespace Components {
698
1314
  "value": string;
699
1315
  }
700
1316
  /**
701
- * A text component with rich text editing capabilities in admin mode.
702
- * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
703
- * and provides a Notion-like rich text editor in admin mode with formatting
704
- * toolbar for bold, italic, links, and paragraph type selection.
705
- * @cssprop --le-text-color - Text color
706
- * @cssprop --le-text-font-size - Font size
707
- * @cssprop --le-text-line-height - Line height
708
- * @cssprop --le-text-font-weight - Font weight
709
- * @csspart text - The text container element
1317
+ * A flexible tab component with multiple variants and states.
1318
+ * @cssprop --le-tab-bg - Tab background color
1319
+ * @cssprop --le-tab-color - Tab text color
1320
+ * @cssprop --le-tab-border-radius - Tab border radius
1321
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
1322
+ * @cssprop --le-tab-padding-y - Tab vertical padding
1323
+ * @csspart button - The native button element
1324
+ * @csspart content - The tab content wrapper
1325
+ * @csspart icon-start - The start icon slot
1326
+ * @csspart icon-end - The end icon slot
710
1327
  * @cmsEditable true
711
- * @cmsCategory Content
1328
+ * @cmsCategory Actions
712
1329
  */
713
- interface LeText {
1330
+ interface LeTab {
714
1331
  /**
715
- * Text alignment
716
- * @allowedValues left | center | right | justify
717
- * @default 'left'
1332
+ * Alignment of the tab label without the end icon
1333
+ * @allowedValues start | center | space-between | end
1334
+ * @default 'center'
718
1335
  */
719
- "align": 'left' | 'center' | 'right' | 'justify';
1336
+ "align": 'start' | 'center' | 'space-between' | 'end';
720
1337
  /**
721
- * Text color (CSS value or theme token)
1338
+ * Whether the tab is disabled
1339
+ * @default false
722
1340
  */
723
- "color"?: string;
1341
+ "disabled": boolean;
724
1342
  /**
725
- * Maximum number of lines before truncating (requires truncate=true)
1343
+ * Whether the tab can get focus needed for accessibility when used in custom tab implementations
1344
+ * @default true
726
1345
  */
727
- "maxLines"?: number;
1346
+ "focusable": boolean;
728
1347
  /**
729
- * Whether the text should truncate with ellipsis
1348
+ * Whether the tab takes full width of its container
730
1349
  * @default false
731
1350
  */
732
- "truncate": boolean;
1351
+ "fullWidth": boolean;
733
1352
  /**
734
- * The semantic variant/type of text element
735
- * @allowedValues p | h1 | h2 | h3 | h4 | h5 | h6 | code | quote | label | small
736
- * @default 'p'
1353
+ * Get tab configuration for parent component
737
1354
  */
738
- "variant": 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'code' | 'quote' | 'label' | 'small';
739
- }
740
- interface LeTurntable {
1355
+ "getTabConfig": () => Promise<{ label: string; value: string; icon: string | Node; iconStart?: string | Node; iconEnd?: string | Node; disabled: boolean; }>;
741
1356
  /**
742
- * @default 'center'
1357
+ * Optional href to make the tab act as a link
743
1358
  */
744
- "center": string;
1359
+ "href"?: string;
745
1360
  /**
746
- * @default 0
1361
+ * Icon only tab image or emoji if this prop is set, the tab will render only the icon slot
747
1362
  */
748
- "value": number;
1363
+ "icon"?: string | Node;
1364
+ /**
1365
+ * End icon image or emoji
1366
+ */
1367
+ "iconEnd"?: string | Node;
1368
+ /**
1369
+ * Start icon image or emoji
1370
+ */
1371
+ "iconStart"?: string | Node;
1372
+ /**
1373
+ * Label if it is not provided via slot
1374
+ */
1375
+ "label"?: string;
1376
+ /**
1377
+ * Mode of the popover should be 'default' for internal use
1378
+ */
1379
+ "mode": 'default' | 'admin';
1380
+ /**
1381
+ * Position of the tabs when used within a le-tabs component
1382
+ * @allowedValues top | bottom | start | end
1383
+ * @default 'top'
1384
+ */
1385
+ "position": 'top' | 'bottom' | 'start' | 'end';
1386
+ /**
1387
+ * Whether the tab is in a selected/active state
1388
+ * @default false
1389
+ */
1390
+ "selected": boolean;
1391
+ /**
1392
+ * Whether to show the label when in icon-only mode
1393
+ * @default false
1394
+ */
1395
+ "showLabel": boolean;
1396
+ /**
1397
+ * Tab size
1398
+ * @allowedValues small | medium | large
1399
+ * @default 'medium'
1400
+ */
1401
+ "size": 'small' | 'medium' | 'large';
1402
+ /**
1403
+ * Link target when href is set
1404
+ */
1405
+ "target"?: string;
1406
+ /**
1407
+ * Value of the tab, defaults to label if not provided
1408
+ */
1409
+ "value"?: string;
1410
+ /**
1411
+ * Tab variant style
1412
+ * @allowedValues solid | underlined | clear | enclosed | icon-only
1413
+ * @default 'underlined'
1414
+ */
1415
+ "variant": 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
749
1416
  }
750
- }
751
- export interface LeButtonCustomEvent<T> extends CustomEvent<T> {
752
- detail: T;
753
- target: HTMLLeButtonElement;
754
- }
755
- export interface LeCheckboxCustomEvent<T> extends CustomEvent<T> {
756
- detail: T;
757
- target: HTMLLeCheckboxElement;
758
- }
759
- export interface LeNumberInputCustomEvent<T> extends CustomEvent<T> {
760
- detail: T;
761
- target: HTMLLeNumberInputElement;
762
- }
763
- export interface LePopoverCustomEvent<T> extends CustomEvent<T> {
764
- detail: T;
765
- target: HTMLLePopoverElement;
766
- }
767
- export interface LePopupCustomEvent<T> extends CustomEvent<T> {
768
- detail: T;
769
- target: HTMLLePopupElement;
770
- }
771
- export interface LeSlotCustomEvent<T> extends CustomEvent<T> {
772
- detail: T;
773
- target: HTMLLeSlotElement;
774
- }
775
- export interface LeStringInputCustomEvent<T> extends CustomEvent<T> {
776
- detail: T;
777
- target: HTMLLeStringInputElement;
778
- }
779
- declare global {
780
1417
  /**
781
- * A flexible box component for use as a flex item within le-stack.
782
- * `le-box` wraps content and provides flex item properties like grow, shrink,
783
- * basis, and self-alignment. It can also control its internal content alignment.
784
- * @cssprop --le-box-bg - Background color
785
- * @cssprop --le-box-padding - Padding inside the box
786
- * @cssprop --le-box-border-radius - Border radius
787
- * @csspart box - The main box container
788
- * @csspart content - The inner content wrapper
1418
+ * A presentational tab bar component without panels.
1419
+ * Use this for navigation/routing scenarios where you manage the content
1420
+ * externally based on the selection events. For tabs with built-in panels,
1421
+ * use `le-tabs` instead.
1422
+ * @cssprop --le-tab-bar-border-color - Border color
1423
+ * @cssprop --le-tab-bar-gap - Gap between tabs
1424
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
1425
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
1426
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
1427
+ * @csspart tablist - The tab button container
1428
+ * @csspart tab - Individual tab buttons
1429
+ * @csspart tab-active - The currently active tab
789
1430
  * @cmsEditable true
790
- * @cmsCategory Layout
1431
+ * @cmsCategory Navigation
791
1432
  */
792
- interface HTMLLeBoxElement extends Components.LeBox, HTMLStencilElement {
793
- }
794
- var HTMLLeBoxElement: {
795
- prototype: HTMLLeBoxElement;
796
- new (): HTMLLeBoxElement;
797
- };
798
- interface HTMLLeButtonElementEventMap {
799
- "click": PointerEvent;
1433
+ interface LeTabBar {
1434
+ /**
1435
+ * Whether to show a border below the tab bar.
1436
+ * @default true
1437
+ */
1438
+ "bordered": boolean;
1439
+ /**
1440
+ * Whether tabs should stretch to fill available width.
1441
+ * @default true
1442
+ */
1443
+ "fullWidth": boolean;
1444
+ /**
1445
+ * Position of the tab bar.
1446
+ * @allowedValues top | bottom
1447
+ * @default 'top'
1448
+ */
1449
+ "position": 'top' | 'bottom';
1450
+ /**
1451
+ * The value of the currently selected tab.
1452
+ */
1453
+ "selected"?: LeOptionValue;
1454
+ /**
1455
+ * Whether to show labels in icon-only mode.
1456
+ * @default false
1457
+ */
1458
+ "showLabels": boolean;
1459
+ /**
1460
+ * Size of the tabs.
1461
+ * @allowedValues small | medium | large
1462
+ * @default 'medium'
1463
+ */
1464
+ "size": 'small' | 'medium' | 'large';
1465
+ /**
1466
+ * Array of tab options defining the tabs to display.
1467
+ * @default []
1468
+ */
1469
+ "tabs": LeOption[];
800
1470
  }
801
1471
  /**
802
- * A flexible button component with multiple variants and states.
803
- * @cssprop --le-button-bg - Button background color
804
- * @cssprop --le-button-color - Button text color
805
- * @cssprop --le-button-border-radius - Button border radius
806
- * @cssprop --le-button-padding-x - Button horizontal padding
807
- * @cssprop --le-button-padding-y - Button vertical padding
808
- * @csspart button - The native button element
809
- * @csspart content - The button content wrapper
1472
+ * A tab panel component used as a child of le-tabs.
1473
+ * Each le-tab-panel defines both the tab button label and the panel content.
1474
+ * The parent le-tabs component automatically reads these panels and creates
1475
+ * the tab interface.
810
1476
  * @cmsEditable true
811
- * @cmsCategory Actions
1477
+ * @cmsCategory Navigation
812
1478
  */
813
- interface HTMLLeButtonElement extends Components.LeButton, HTMLStencilElement {
814
- addEventListener<K extends keyof HTMLLeButtonElementEventMap>(type: K, listener: (this: HTMLLeButtonElement, ev: LeButtonCustomEvent<HTMLLeButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
815
- addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
816
- addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
817
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
818
- removeEventListener<K extends keyof HTMLLeButtonElementEventMap>(type: K, listener: (this: HTMLLeButtonElement, ev: LeButtonCustomEvent<HTMLLeButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
819
- removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
820
- removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
821
- removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
822
- }
1479
+ interface LeTabPanel {
1480
+ /**
1481
+ * Whether this tab is disabled.
1482
+ * @default false
1483
+ */
1484
+ "disabled": boolean;
1485
+ /**
1486
+ * Get tab configuration for parent component
1487
+ */
1488
+ "getTabConfig": () => Promise<{ label: string; value: string; iconStart?: string; iconEnd?: string; disabled: boolean; }>;
1489
+ /**
1490
+ * Get the effective value (value or label as fallback)
1491
+ */
1492
+ "getValue": () => Promise<string>;
1493
+ /**
1494
+ * Icon displayed at the end of the tab button.
1495
+ */
1496
+ "iconEnd"?: string;
1497
+ /**
1498
+ * Icon displayed at the start of the tab button. Can be an emoji, URL, or icon class.
1499
+ */
1500
+ "iconStart"?: string;
1501
+ /**
1502
+ * The label displayed in the tab button.
1503
+ */
1504
+ "label": string;
1505
+ /**
1506
+ * Whether to render the panel content only when active (lazy loading). When true, content is not rendered until the tab is first selected. When false (default), content is always in DOM but hidden when inactive.
1507
+ * @default false
1508
+ */
1509
+ "lazy": boolean;
1510
+ /**
1511
+ * Set the active state (called by parent le-tabs)
1512
+ */
1513
+ "setActive": (isActive: boolean) => Promise<void>;
1514
+ /**
1515
+ * The value used to identify this tab. Defaults to the label if not provided.
1516
+ */
1517
+ "value"?: string;
1518
+ }
1519
+ /**
1520
+ * A flexible tabs component for organizing content into tabbed panels.
1521
+ * Supports two modes:
1522
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
1523
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
1524
+ * Full keyboard navigation and ARIA support included.
1525
+ * @cssprop --le-tabs-border-color - Border color for tab list
1526
+ * @cssprop --le-tabs-gap - Gap between tabs
1527
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
1528
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
1529
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
1530
+ * @csspart tablist - The tab button container (role="tablist")
1531
+ * @csspart tab - Individual tab buttons
1532
+ * @csspart tab-active - The currently active tab
1533
+ * @csspart panels - Container for panel content
1534
+ * @csspart panel - Individual panel containers
1535
+ * @cmsEditable true
1536
+ * @cmsCategory Navigation
1537
+ */
1538
+ interface LeTabs {
1539
+ /**
1540
+ * Whether tabs should stretch to fill available width.
1541
+ * @default false
1542
+ */
1543
+ "fullWidth": boolean;
1544
+ /**
1545
+ * Orientation of the tabs.
1546
+ * @allowedValues horizontal | vertical
1547
+ * @default 'horizontal'
1548
+ */
1549
+ "orientation": 'horizontal' | 'vertical';
1550
+ /**
1551
+ * Scroll behavior for overflowing tabs.
1552
+ * @allowedValues auto | hidden | visible | scroll
1553
+ * @default 'auto'
1554
+ */
1555
+ "overflow": 'auto' | 'hidden' | 'visible' | 'scroll';
1556
+ /**
1557
+ * Position of the tabs relative to the panels.
1558
+ * @allowedValues start | end
1559
+ * @default 'start'
1560
+ */
1561
+ "position": 'start' | 'end';
1562
+ /**
1563
+ * The value of the currently selected tab. If not provided, defaults to the first tab.
1564
+ */
1565
+ "selected"?: LeOptionValue;
1566
+ /**
1567
+ * Size of the tabs.
1568
+ * @allowedValues sm | md | lg
1569
+ * @default 'medium'
1570
+ */
1571
+ "size": 'small' | 'medium' | 'large';
1572
+ /**
1573
+ * Array of tab options (programmatic mode). If le-tab-panel children exist, they take precedence.
1574
+ * @default []
1575
+ */
1576
+ "tabs": LeOption[];
1577
+ /**
1578
+ * Tab variant style.
1579
+ * @allowedValues underlined | solid | pills | enclosed | icon-only
1580
+ * @default 'underlined'
1581
+ */
1582
+ "variant": 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
1583
+ /**
1584
+ * Wrap the tabs if they exceed container width.
1585
+ * @default false
1586
+ */
1587
+ "wrap": boolean;
1588
+ }
1589
+ /**
1590
+ * A tag/chip component for displaying labels with optional dismiss functionality.
1591
+ * @cmsEditable false
1592
+ * @cmsCategory Form
1593
+ * @example Basic tag
1594
+ * ```html
1595
+ * <le-tag label="JavaScript"></le-tag>
1596
+ * ```
1597
+ * @example Dismissible tag
1598
+ * ```html
1599
+ * <le-tag label="Remove me" dismissible></le-tag>
1600
+ * ```
1601
+ * @example With icon
1602
+ * ```html
1603
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
1604
+ * ```
1605
+ * @example Different sizes
1606
+ * ```html
1607
+ * <le-tag label="Small" size="small"></le-tag>
1608
+ * <le-tag label="Medium" size="medium"></le-tag>
1609
+ * <le-tag label="Large" size="large"></le-tag>
1610
+ * ```
1611
+ * @example Different variants
1612
+ * ```html
1613
+ * <le-tag label="Default" variant="default"></le-tag>
1614
+ * <le-tag label="Primary" variant="primary"></le-tag>
1615
+ * <le-tag label="Success" variant="success"></le-tag>
1616
+ * <le-tag label="Warning" variant="warning"></le-tag>
1617
+ * <le-tag label="Danger" variant="danger"></le-tag>
1618
+ * ```
1619
+ */
1620
+ interface LeTag {
1621
+ /**
1622
+ * Whether the tag is disabled.
1623
+ * @default false
1624
+ */
1625
+ "disabled": boolean;
1626
+ /**
1627
+ * Whether the tag can be dismissed (shows close button).
1628
+ * @default false
1629
+ */
1630
+ "dismissible": boolean;
1631
+ /**
1632
+ * Icon to display before the label. Can be an emoji, URL, or icon name.
1633
+ */
1634
+ "icon"?: string;
1635
+ /**
1636
+ * The text label to display in the tag.
1637
+ */
1638
+ "label": string;
1639
+ /**
1640
+ * Mode of the popover should be 'default' for internal use
1641
+ */
1642
+ "mode": 'default' | 'admin';
1643
+ /**
1644
+ * The size of the tag.
1645
+ * @default 'medium'
1646
+ */
1647
+ "size": 'small' | 'medium' | 'large';
1648
+ /**
1649
+ * The visual variant of the tag.
1650
+ * @default 'default'
1651
+ */
1652
+ "variant": 'default' | 'primary' | 'success' | 'warning' | 'danger';
1653
+ }
1654
+ /**
1655
+ * A text component with rich text editing capabilities in admin mode.
1656
+ * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
1657
+ * and provides a Notion-like rich text editor in admin mode with formatting
1658
+ * toolbar for bold, italic, links, and paragraph type selection.
1659
+ * @cssprop --le-text-color - Text color
1660
+ * @cssprop --le-text-font-size - Font size
1661
+ * @cssprop --le-text-line-height - Line height
1662
+ * @cssprop --le-text-font-weight - Font weight
1663
+ * @csspart text - The text container element
1664
+ * @cmsEditable true
1665
+ * @cmsCategory Content
1666
+ */
1667
+ interface LeText {
1668
+ /**
1669
+ * Text alignment
1670
+ * @allowedValues left | center | right | justify
1671
+ * @default 'left'
1672
+ */
1673
+ "align": 'left' | 'center' | 'right' | 'justify';
1674
+ /**
1675
+ * Text color (CSS value or theme token)
1676
+ */
1677
+ "color"?: string;
1678
+ /**
1679
+ * Maximum number of lines before truncating (requires truncate=true)
1680
+ */
1681
+ "maxLines"?: number;
1682
+ /**
1683
+ * Whether the text should truncate with ellipsis
1684
+ * @default false
1685
+ */
1686
+ "truncate": boolean;
1687
+ /**
1688
+ * The semantic variant/type of text element
1689
+ * @allowedValues p | h1 | h2 | h3 | h4 | h5 | h6 | code | quote | label | small
1690
+ * @default 'p'
1691
+ */
1692
+ "variant": 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'code' | 'quote' | 'label' | 'small';
1693
+ }
1694
+ interface LeTurntable {
1695
+ /**
1696
+ * @default 'center'
1697
+ */
1698
+ "center": string;
1699
+ /**
1700
+ * @default 0
1701
+ */
1702
+ "value": number;
1703
+ }
1704
+ }
1705
+ export interface LeButtonCustomEvent<T> extends CustomEvent<T> {
1706
+ detail: T;
1707
+ target: HTMLLeButtonElement;
1708
+ }
1709
+ export interface LeCheckboxCustomEvent<T> extends CustomEvent<T> {
1710
+ detail: T;
1711
+ target: HTMLLeCheckboxElement;
1712
+ }
1713
+ export interface LeComboboxCustomEvent<T> extends CustomEvent<T> {
1714
+ detail: T;
1715
+ target: HTMLLeComboboxElement;
1716
+ }
1717
+ export interface LeDropdownBaseCustomEvent<T> extends CustomEvent<T> {
1718
+ detail: T;
1719
+ target: HTMLLeDropdownBaseElement;
1720
+ }
1721
+ export interface LeHeaderCustomEvent<T> extends CustomEvent<T> {
1722
+ detail: T;
1723
+ target: HTMLLeHeaderElement;
1724
+ }
1725
+ export interface LeMultiselectCustomEvent<T> extends CustomEvent<T> {
1726
+ detail: T;
1727
+ target: HTMLLeMultiselectElement;
1728
+ }
1729
+ export interface LeNumberInputCustomEvent<T> extends CustomEvent<T> {
1730
+ detail: T;
1731
+ target: HTMLLeNumberInputElement;
1732
+ }
1733
+ export interface LePopoverCustomEvent<T> extends CustomEvent<T> {
1734
+ detail: T;
1735
+ target: HTMLLePopoverElement;
1736
+ }
1737
+ export interface LePopupCustomEvent<T> extends CustomEvent<T> {
1738
+ detail: T;
1739
+ target: HTMLLePopupElement;
1740
+ }
1741
+ export interface LeSegmentedControlCustomEvent<T> extends CustomEvent<T> {
1742
+ detail: T;
1743
+ target: HTMLLeSegmentedControlElement;
1744
+ }
1745
+ export interface LeSelectCustomEvent<T> extends CustomEvent<T> {
1746
+ detail: T;
1747
+ target: HTMLLeSelectElement;
1748
+ }
1749
+ export interface LeSlotCustomEvent<T> extends CustomEvent<T> {
1750
+ detail: T;
1751
+ target: HTMLLeSlotElement;
1752
+ }
1753
+ export interface LeStringInputCustomEvent<T> extends CustomEvent<T> {
1754
+ detail: T;
1755
+ target: HTMLLeStringInputElement;
1756
+ }
1757
+ export interface LeTabCustomEvent<T> extends CustomEvent<T> {
1758
+ detail: T;
1759
+ target: HTMLLeTabElement;
1760
+ }
1761
+ export interface LeTabBarCustomEvent<T> extends CustomEvent<T> {
1762
+ detail: T;
1763
+ target: HTMLLeTabBarElement;
1764
+ }
1765
+ export interface LeTabsCustomEvent<T> extends CustomEvent<T> {
1766
+ detail: T;
1767
+ target: HTMLLeTabsElement;
1768
+ }
1769
+ export interface LeTagCustomEvent<T> extends CustomEvent<T> {
1770
+ detail: T;
1771
+ target: HTMLLeTagElement;
1772
+ }
1773
+ declare global {
1774
+ /**
1775
+ * A flexible box component for use as a flex item within le-stack.
1776
+ * `le-box` wraps content and provides flex item properties like grow, shrink,
1777
+ * basis, and self-alignment. It can also control its internal content alignment.
1778
+ * @cssprop --le-box-bg - Background color
1779
+ * @cssprop --le-box-padding - Padding inside the box
1780
+ * @cssprop --le-box-border-radius - Border radius
1781
+ * @csspart box - The main box container
1782
+ * @csspart content - The inner content wrapper
1783
+ * @cmsEditable true
1784
+ * @cmsCategory Layout
1785
+ */
1786
+ interface HTMLLeBoxElement extends Components.LeBox, HTMLStencilElement {
1787
+ }
1788
+ var HTMLLeBoxElement: {
1789
+ prototype: HTMLLeBoxElement;
1790
+ new (): HTMLLeBoxElement;
1791
+ };
1792
+ interface HTMLLeButtonElementEventMap {
1793
+ "click": PointerEvent;
1794
+ }
1795
+ /**
1796
+ * A flexible button component with multiple variants and states.
1797
+ * @cssprop --le-button-bg - Button background color
1798
+ * @cssprop --le-button-color - Button text color
1799
+ * @cssprop --le-button-border-radius - Button border radius
1800
+ * @cssprop --le-button-padding-x - Button horizontal padding
1801
+ * @cssprop --le-button-padding-y - Button vertical padding
1802
+ * @csspart button - The native button element
1803
+ * @csspart content - The button content wrapper
1804
+ * @csspart icon-start - The start icon slot
1805
+ * @csspart icon-end - The end icon slot
1806
+ * @cmsEditable true
1807
+ * @cmsCategory Actions
1808
+ */
1809
+ interface HTMLLeButtonElement extends Components.LeButton, HTMLStencilElement {
1810
+ addEventListener<K extends keyof HTMLLeButtonElementEventMap>(type: K, listener: (this: HTMLLeButtonElement, ev: LeButtonCustomEvent<HTMLLeButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1811
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1812
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1813
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1814
+ removeEventListener<K extends keyof HTMLLeButtonElementEventMap>(type: K, listener: (this: HTMLLeButtonElement, ev: LeButtonCustomEvent<HTMLLeButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1815
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1816
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1817
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1818
+ }
823
1819
  var HTMLLeButtonElement: {
824
1820
  prototype: HTMLLeButtonElement;
825
1821
  new (): HTMLLeButtonElement;
@@ -870,6 +1866,64 @@ declare global {
870
1866
  prototype: HTMLLeCheckboxElement;
871
1867
  new (): HTMLLeCheckboxElement;
872
1868
  };
1869
+ /**
1870
+ * Animated show/hide wrapper.
1871
+ * Supports height collapse (auto->0) and/or fading.
1872
+ * Can optionally listen to the nearest `le-header` shrink events.
1873
+ * @cssprop --le-collapse-duration - Transition duration
1874
+ * @csspart region - Collapsible region
1875
+ * @csspart content - Inner content
1876
+ * @cmsEditable true
1877
+ * @cmsCategory Layout
1878
+ */
1879
+ interface HTMLLeCollapseElement extends Components.LeCollapse, HTMLStencilElement {
1880
+ }
1881
+ var HTMLLeCollapseElement: {
1882
+ prototype: HTMLLeCollapseElement;
1883
+ new (): HTMLLeCollapseElement;
1884
+ };
1885
+ interface HTMLLeComboboxElementEventMap {
1886
+ "leChange": LeOptionSelectDetail;
1887
+ "leInput": { value: string };
1888
+ "leOpen": void;
1889
+ "leClose": void;
1890
+ }
1891
+ /**
1892
+ * A combobox component with searchable dropdown.
1893
+ * Combines a text input with a dropdown list, allowing users to
1894
+ * filter options by typing or select from the list.
1895
+ * @cmsEditable true
1896
+ * @cmsCategory Form
1897
+ * @example Basic combobox
1898
+ * ```html
1899
+ * <le-combobox
1900
+ * placeholder="Search..."
1901
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
1902
+ * ></le-combobox>
1903
+ * ```
1904
+ * @example Allow custom values
1905
+ * ```html
1906
+ * <le-combobox
1907
+ * placeholder="Type or select..."
1908
+ * allow-custom
1909
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
1910
+ * ></le-combobox>
1911
+ * ```
1912
+ */
1913
+ interface HTMLLeComboboxElement extends Components.LeCombobox, HTMLStencilElement {
1914
+ addEventListener<K extends keyof HTMLLeComboboxElementEventMap>(type: K, listener: (this: HTMLLeComboboxElement, ev: LeComboboxCustomEvent<HTMLLeComboboxElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1915
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1916
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1917
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1918
+ removeEventListener<K extends keyof HTMLLeComboboxElementEventMap>(type: K, listener: (this: HTMLLeComboboxElement, ev: LeComboboxCustomEvent<HTMLLeComboboxElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1919
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1920
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1921
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1922
+ }
1923
+ var HTMLLeComboboxElement: {
1924
+ prototype: HTMLLeComboboxElement;
1925
+ new (): HTMLLeComboboxElement;
1926
+ };
873
1927
  /**
874
1928
  * Component wrapper for admin mode editing.
875
1929
  * This component is used internally by other components to provide admin-mode
@@ -897,9 +1951,170 @@ declare global {
897
1951
  prototype: HTMLLeComponentElement;
898
1952
  new (): HTMLLeComponentElement;
899
1953
  };
900
- interface HTMLLeNumberInputElementEventMap {
901
- "leChange": { value: number; name: string; externalId: string; isValid: boolean };
902
- "leInput": { value: number; name: string; externalId: string; isValid: boolean };
1954
+ /**
1955
+ * Shows a "smart" header title based on what has scrolled out of view.
1956
+ * When `selector` matches multiple elements, the title becomes the last element
1957
+ * (top-to-bottom) that has fully scrolled out above the viewport.
1958
+ * @csspart title - The rendered title
1959
+ * @cmsEditable true
1960
+ * @cmsCategory Layout
1961
+ */
1962
+ interface HTMLLeCurrentHeadingElement extends Components.LeCurrentHeading, HTMLStencilElement {
1963
+ }
1964
+ var HTMLLeCurrentHeadingElement: {
1965
+ prototype: HTMLLeCurrentHeadingElement;
1966
+ new (): HTMLLeCurrentHeadingElement;
1967
+ };
1968
+ interface HTMLLeDropdownBaseElementEventMap {
1969
+ "leOptionSelect": LeOptionSelectDetail;
1970
+ "leDropdownOpen": void;
1971
+ "leDropdownClose": void;
1972
+ }
1973
+ /**
1974
+ * Internal dropdown base component that provides shared functionality
1975
+ * for select, combobox, and multiselect components.
1976
+ * Wraps le-popover for positioning and provides:
1977
+ * - Option list rendering with groups
1978
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
1979
+ * - Option filtering support
1980
+ * - Single and multi-select modes
1981
+ * @cmsInternal true
1982
+ * @cmsCategory System
1983
+ */
1984
+ interface HTMLLeDropdownBaseElement extends Components.LeDropdownBase, HTMLStencilElement {
1985
+ addEventListener<K extends keyof HTMLLeDropdownBaseElementEventMap>(type: K, listener: (this: HTMLLeDropdownBaseElement, ev: LeDropdownBaseCustomEvent<HTMLLeDropdownBaseElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1986
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1987
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1988
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1989
+ removeEventListener<K extends keyof HTMLLeDropdownBaseElementEventMap>(type: K, listener: (this: HTMLLeDropdownBaseElement, ev: LeDropdownBaseCustomEvent<HTMLLeDropdownBaseElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1990
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1991
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1992
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1993
+ }
1994
+ var HTMLLeDropdownBaseElement: {
1995
+ prototype: HTMLLeDropdownBaseElement;
1996
+ new (): HTMLLeDropdownBaseElement;
1997
+ };
1998
+ interface HTMLLeHeaderElementEventMap {
1999
+ "leHeaderState": {
2000
+ y: number;
2001
+ direction: 'up' | 'down';
2002
+ revealed: boolean;
2003
+ shrunk: boolean;
2004
+ };
2005
+ "leHeaderShrinkChange": { shrunk: boolean; y: number };
2006
+ "leHeaderVisibilityChange": { visible: boolean; y: number };
2007
+ }
2008
+ /**
2009
+ * A functional page header with scroll-aware behaviors.
2010
+ * Features:
2011
+ * - Static (default), sticky, or fixed positioning
2012
+ * - Optional shrink-on-scroll behavior via `shrink-offset`
2013
+ * - Optional reveal-on-scroll-up via `reveal-on-scroll` (sticky only)
2014
+ * Slots:
2015
+ * - `start`: left side (logo/back button)
2016
+ * - `title`: centered/primary title content
2017
+ * - `end`: right side actions
2018
+ * - default: extra content row (e.g., tabs/search) rendered below main row
2019
+ * @cssprop --le-header-bg - Background (color/gradient)
2020
+ * @cssprop --le-header-color - Text color
2021
+ * @cssprop --le-header-border - Border (e.g. 1px solid ...)
2022
+ * @cssprop --le-header-shadow - Shadow/elevation
2023
+ * @cssprop --le-header-max-width - Inner content max width
2024
+ * @cssprop --le-header-padding-x - Horizontal padding
2025
+ * @cssprop --le-header-padding-y - Vertical padding
2026
+ * @cssprop --le-header-gap - Gap between zones
2027
+ * @cssprop --le-header-height - Base height (main row)
2028
+ * @cssprop --le-header-height-condensed - Condensed height when shrunk
2029
+ * @cssprop --le-header-transition - Transition timing
2030
+ * @cssprop --le-header-z - Z-index (fixed mode)
2031
+ * @csspart header - The header container
2032
+ * @csspart inner - Inner max-width container
2033
+ * @csspart row - Main row
2034
+ * @csspart start - Start zone
2035
+ * @csspart title - Title zone
2036
+ * @csspart end - End zone
2037
+ * @csspart secondary - Secondary row
2038
+ * @cmsEditable true
2039
+ * @cmsCategory Layout
2040
+ */
2041
+ interface HTMLLeHeaderElement extends Components.LeHeader, HTMLStencilElement {
2042
+ addEventListener<K extends keyof HTMLLeHeaderElementEventMap>(type: K, listener: (this: HTMLLeHeaderElement, ev: LeHeaderCustomEvent<HTMLLeHeaderElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2043
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2044
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2045
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2046
+ removeEventListener<K extends keyof HTMLLeHeaderElementEventMap>(type: K, listener: (this: HTMLLeHeaderElement, ev: LeHeaderCustomEvent<HTMLLeHeaderElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2047
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2048
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2049
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2050
+ }
2051
+ var HTMLLeHeaderElement: {
2052
+ prototype: HTMLLeHeaderElement;
2053
+ new (): HTMLLeHeaderElement;
2054
+ };
2055
+ /**
2056
+ * Placeholder for `le-header`.
2057
+ * Reserves space using the global CSS variable `--le-header-height`.
2058
+ * The header component updates that variable when it renders.
2059
+ * @cssprop --le-header-height - Published header height (px)
2060
+ * @cmsInternal true
2061
+ */
2062
+ interface HTMLLeHeaderPlaceholderElement extends Components.LeHeaderPlaceholder, HTMLStencilElement {
2063
+ }
2064
+ var HTMLLeHeaderPlaceholderElement: {
2065
+ prototype: HTMLLeHeaderPlaceholderElement;
2066
+ new (): HTMLLeHeaderPlaceholderElement;
2067
+ };
2068
+ interface HTMLLeMultiselectElementEventMap {
2069
+ "leChange": LeMultiOptionSelectDetail;
2070
+ "leOpen": void;
2071
+ "leClose": void;
2072
+ }
2073
+ /**
2074
+ * A multiselect component for selecting multiple options.
2075
+ * Displays selected items as tags with optional search filtering.
2076
+ * @cmsEditable true
2077
+ * @cmsCategory Form
2078
+ * @example Basic multiselect
2079
+ * ```html
2080
+ * <le-multiselect
2081
+ * placeholder="Select options..."
2082
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
2083
+ * ></le-multiselect>
2084
+ * ```
2085
+ * @example With max selections
2086
+ * ```html
2087
+ * <le-multiselect
2088
+ * max-selections="3"
2089
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
2090
+ * ></le-multiselect>
2091
+ * ```
2092
+ * @example With search
2093
+ * ```html
2094
+ * <le-multiselect
2095
+ * searchable
2096
+ * placeholder="Search and select..."
2097
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
2098
+ * ></le-multiselect>
2099
+ * ```
2100
+ */
2101
+ interface HTMLLeMultiselectElement extends Components.LeMultiselect, HTMLStencilElement {
2102
+ addEventListener<K extends keyof HTMLLeMultiselectElementEventMap>(type: K, listener: (this: HTMLLeMultiselectElement, ev: LeMultiselectCustomEvent<HTMLLeMultiselectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2103
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2104
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2105
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2106
+ removeEventListener<K extends keyof HTMLLeMultiselectElementEventMap>(type: K, listener: (this: HTMLLeMultiselectElement, ev: LeMultiselectCustomEvent<HTMLLeMultiselectElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2107
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2108
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2109
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2110
+ }
2111
+ var HTMLLeMultiselectElement: {
2112
+ prototype: HTMLLeMultiselectElement;
2113
+ new (): HTMLLeMultiselectElement;
2114
+ };
2115
+ interface HTMLLeNumberInputElementEventMap {
2116
+ "leChange": { value: number; name: string; externalId: string; isValid: boolean };
2117
+ "leInput": { value: number; name: string; externalId: string; isValid: boolean };
903
2118
  }
904
2119
  /**
905
2120
  * A number input component with validation, keyboard controls, and custom spinners.
@@ -933,6 +2148,8 @@ declare global {
933
2148
  * A popover component for displaying floating content.
934
2149
  * Uses the native HTML Popover API for proper layering with dialogs
935
2150
  * and other top-layer elements. Falls back gracefully in older browsers.
2151
+ * @csspart trigger - The popover trigger element
2152
+ * @csspart content - The popover content wrapper
936
2153
  * @cmsInternal true
937
2154
  * @cmsCategory System
938
2155
  */
@@ -959,7 +2176,7 @@ declare global {
959
2176
  /**
960
2177
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
961
2178
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
962
- * and focus management. Can be used declaratively in HTML or programmatically
2179
+ * and focus management. Can be used declaratively in HTML or programmatically
963
2180
  * via leAlert(), leConfirm(), lePrompt().
964
2181
  * @cmsInternal true
965
2182
  * @cmsCategory System
@@ -984,6 +2201,108 @@ declare global {
984
2201
  prototype: HTMLLeRoundProgressElement;
985
2202
  new (): HTMLLeRoundProgressElement;
986
2203
  };
2204
+ /**
2205
+ * Displays scroll progress as a simple bar.
2206
+ * If `track-scroll-progress` is present without a value, tracks the full document.
2207
+ * If it is a selector string, tracks progress within the matched element.
2208
+ * @cssprop --le-scroll-progress-height - Bar height
2209
+ * @cssprop --le-scroll-progress-bg - Track background
2210
+ * @cssprop --le-scroll-progress-fill - Fill color
2211
+ * @cssprop --le-scroll-progress-sticky-top - If sticky, stop position to parent top
2212
+ * @cssprop --le-scroll-progress-fixed-top - If fixed, distance from window top
2213
+ * @cssprop --le-scroll-progress-fixed-left - If fixed, distance from window left
2214
+ * @cssprop --le-scroll-progress-fixed-right - If fixed, distance from window right
2215
+ * @cssprop --le-scroll-progress-z - Z-index of the progress bar (1001 by default, above header)
2216
+ * @csspart track - Outer track
2217
+ * @csspart fill - Inner fill
2218
+ * @cmsEditable true
2219
+ * @cmsCategory Layout
2220
+ */
2221
+ interface HTMLLeScrollProgressElement extends Components.LeScrollProgress, HTMLStencilElement {
2222
+ }
2223
+ var HTMLLeScrollProgressElement: {
2224
+ prototype: HTMLLeScrollProgressElement;
2225
+ new (): HTMLLeScrollProgressElement;
2226
+ };
2227
+ interface HTMLLeSegmentedControlElementEventMap {
2228
+ "leChange": LeOptionSelectDetail;
2229
+ }
2230
+ /**
2231
+ * A segmented control component (iOS-style toggle buttons).
2232
+ * Perfect for toggling between a small set of related options.
2233
+ * @cssprop --le-segmented-bg - Background color of the control
2234
+ * @cssprop --le-segmented-padding - Padding around segments
2235
+ * @cssprop --le-segmented-gap - Gap between segments
2236
+ * @cssprop --le-segmented-radius - Border radius of the control
2237
+ * @csspart container - The main container
2238
+ * @csspart segment - Individual segment buttons
2239
+ * @csspart segment-active - The currently active segment
2240
+ * @cmsEditable true
2241
+ * @cmsCategory Form
2242
+ */
2243
+ interface HTMLLeSegmentedControlElement extends Components.LeSegmentedControl, HTMLStencilElement {
2244
+ addEventListener<K extends keyof HTMLLeSegmentedControlElementEventMap>(type: K, listener: (this: HTMLLeSegmentedControlElement, ev: LeSegmentedControlCustomEvent<HTMLLeSegmentedControlElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2245
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2246
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2247
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2248
+ removeEventListener<K extends keyof HTMLLeSegmentedControlElementEventMap>(type: K, listener: (this: HTMLLeSegmentedControlElement, ev: LeSegmentedControlCustomEvent<HTMLLeSegmentedControlElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2249
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2250
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2251
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2252
+ }
2253
+ var HTMLLeSegmentedControlElement: {
2254
+ prototype: HTMLLeSegmentedControlElement;
2255
+ new (): HTMLLeSegmentedControlElement;
2256
+ };
2257
+ interface HTMLLeSelectElementEventMap {
2258
+ "leChange": LeOptionSelectDetail;
2259
+ "leOpen": void;
2260
+ "leClose": void;
2261
+ }
2262
+ /**
2263
+ * A select dropdown component for single selection.
2264
+ * @cmsEditable true
2265
+ * @cmsCategory Form
2266
+ * @example Basic select
2267
+ * ```html
2268
+ * <le-select
2269
+ * placeholder="Choose an option"
2270
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
2271
+ * ></le-select>
2272
+ * ```
2273
+ * @example With icons
2274
+ * ```html
2275
+ * <le-select
2276
+ * options='[
2277
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
2278
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
2279
+ * ]'
2280
+ * ></le-select>
2281
+ * ```
2282
+ * @example Grouped options
2283
+ * ```html
2284
+ * <le-select
2285
+ * options='[
2286
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
2287
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
2288
+ * ]'
2289
+ * ></le-select>
2290
+ * ```
2291
+ */
2292
+ interface HTMLLeSelectElement extends Components.LeSelect, HTMLStencilElement {
2293
+ addEventListener<K extends keyof HTMLLeSelectElementEventMap>(type: K, listener: (this: HTMLLeSelectElement, ev: LeSelectCustomEvent<HTMLLeSelectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2294
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2295
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2296
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2297
+ removeEventListener<K extends keyof HTMLLeSelectElementEventMap>(type: K, listener: (this: HTMLLeSelectElement, ev: LeSelectCustomEvent<HTMLLeSelectElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2298
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2299
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2300
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2301
+ }
2302
+ var HTMLLeSelectElement: {
2303
+ prototype: HTMLLeSelectElement;
2304
+ new (): HTMLLeSelectElement;
2305
+ };
987
2306
  interface HTMLLeSlotElementEventMap {
988
2307
  "leSlotChange": { name: string; value: string; isValid: boolean };
989
2308
  }
@@ -1026,8 +2345,16 @@ declare global {
1026
2345
  new (): HTMLLeStackElement;
1027
2346
  };
1028
2347
  interface HTMLLeStringInputElementEventMap {
1029
- "change": { value: string; name: string; externalId: string };
1030
- "input": { value: string; name: string; externalId: string };
2348
+ "change": {
2349
+ value: string;
2350
+ name: string;
2351
+ externalId: string;
2352
+ };
2353
+ "input": {
2354
+ value: string;
2355
+ name: string;
2356
+ externalId: string;
2357
+ };
1031
2358
  }
1032
2359
  /**
1033
2360
  * A text input component with support for labels, descriptions, icons, and external IDs.
@@ -1052,6 +2379,168 @@ declare global {
1052
2379
  prototype: HTMLLeStringInputElement;
1053
2380
  new (): HTMLLeStringInputElement;
1054
2381
  };
2382
+ interface HTMLLeTabElementEventMap {
2383
+ "click": PointerEvent;
2384
+ }
2385
+ /**
2386
+ * A flexible tab component with multiple variants and states.
2387
+ * @cssprop --le-tab-bg - Tab background color
2388
+ * @cssprop --le-tab-color - Tab text color
2389
+ * @cssprop --le-tab-border-radius - Tab border radius
2390
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
2391
+ * @cssprop --le-tab-padding-y - Tab vertical padding
2392
+ * @csspart button - The native button element
2393
+ * @csspart content - The tab content wrapper
2394
+ * @csspart icon-start - The start icon slot
2395
+ * @csspart icon-end - The end icon slot
2396
+ * @cmsEditable true
2397
+ * @cmsCategory Actions
2398
+ */
2399
+ interface HTMLLeTabElement extends Components.LeTab, HTMLStencilElement {
2400
+ addEventListener<K extends keyof HTMLLeTabElementEventMap>(type: K, listener: (this: HTMLLeTabElement, ev: LeTabCustomEvent<HTMLLeTabElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2401
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2402
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2403
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2404
+ removeEventListener<K extends keyof HTMLLeTabElementEventMap>(type: K, listener: (this: HTMLLeTabElement, ev: LeTabCustomEvent<HTMLLeTabElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2405
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2406
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2407
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2408
+ }
2409
+ var HTMLLeTabElement: {
2410
+ prototype: HTMLLeTabElement;
2411
+ new (): HTMLLeTabElement;
2412
+ };
2413
+ interface HTMLLeTabBarElementEventMap {
2414
+ "leTabChange": LeOptionSelectDetail;
2415
+ }
2416
+ /**
2417
+ * A presentational tab bar component without panels.
2418
+ * Use this for navigation/routing scenarios where you manage the content
2419
+ * externally based on the selection events. For tabs with built-in panels,
2420
+ * use `le-tabs` instead.
2421
+ * @cssprop --le-tab-bar-border-color - Border color
2422
+ * @cssprop --le-tab-bar-gap - Gap between tabs
2423
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
2424
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
2425
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
2426
+ * @csspart tablist - The tab button container
2427
+ * @csspart tab - Individual tab buttons
2428
+ * @csspart tab-active - The currently active tab
2429
+ * @cmsEditable true
2430
+ * @cmsCategory Navigation
2431
+ */
2432
+ interface HTMLLeTabBarElement extends Components.LeTabBar, HTMLStencilElement {
2433
+ addEventListener<K extends keyof HTMLLeTabBarElementEventMap>(type: K, listener: (this: HTMLLeTabBarElement, ev: LeTabBarCustomEvent<HTMLLeTabBarElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2434
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2435
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2436
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2437
+ removeEventListener<K extends keyof HTMLLeTabBarElementEventMap>(type: K, listener: (this: HTMLLeTabBarElement, ev: LeTabBarCustomEvent<HTMLLeTabBarElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2438
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2439
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2440
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2441
+ }
2442
+ var HTMLLeTabBarElement: {
2443
+ prototype: HTMLLeTabBarElement;
2444
+ new (): HTMLLeTabBarElement;
2445
+ };
2446
+ /**
2447
+ * A tab panel component used as a child of le-tabs.
2448
+ * Each le-tab-panel defines both the tab button label and the panel content.
2449
+ * The parent le-tabs component automatically reads these panels and creates
2450
+ * the tab interface.
2451
+ * @cmsEditable true
2452
+ * @cmsCategory Navigation
2453
+ */
2454
+ interface HTMLLeTabPanelElement extends Components.LeTabPanel, HTMLStencilElement {
2455
+ }
2456
+ var HTMLLeTabPanelElement: {
2457
+ prototype: HTMLLeTabPanelElement;
2458
+ new (): HTMLLeTabPanelElement;
2459
+ };
2460
+ interface HTMLLeTabsElementEventMap {
2461
+ "leTabChange": LeOptionSelectDetail;
2462
+ }
2463
+ /**
2464
+ * A flexible tabs component for organizing content into tabbed panels.
2465
+ * Supports two modes:
2466
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
2467
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
2468
+ * Full keyboard navigation and ARIA support included.
2469
+ * @cssprop --le-tabs-border-color - Border color for tab list
2470
+ * @cssprop --le-tabs-gap - Gap between tabs
2471
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
2472
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
2473
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
2474
+ * @csspart tablist - The tab button container (role="tablist")
2475
+ * @csspart tab - Individual tab buttons
2476
+ * @csspart tab-active - The currently active tab
2477
+ * @csspart panels - Container for panel content
2478
+ * @csspart panel - Individual panel containers
2479
+ * @cmsEditable true
2480
+ * @cmsCategory Navigation
2481
+ */
2482
+ interface HTMLLeTabsElement extends Components.LeTabs, HTMLStencilElement {
2483
+ addEventListener<K extends keyof HTMLLeTabsElementEventMap>(type: K, listener: (this: HTMLLeTabsElement, ev: LeTabsCustomEvent<HTMLLeTabsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2484
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2485
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2486
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2487
+ removeEventListener<K extends keyof HTMLLeTabsElementEventMap>(type: K, listener: (this: HTMLLeTabsElement, ev: LeTabsCustomEvent<HTMLLeTabsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2488
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2489
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2490
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2491
+ }
2492
+ var HTMLLeTabsElement: {
2493
+ prototype: HTMLLeTabsElement;
2494
+ new (): HTMLLeTabsElement;
2495
+ };
2496
+ interface HTMLLeTagElementEventMap {
2497
+ "leDismiss": void;
2498
+ }
2499
+ /**
2500
+ * A tag/chip component for displaying labels with optional dismiss functionality.
2501
+ * @cmsEditable false
2502
+ * @cmsCategory Form
2503
+ * @example Basic tag
2504
+ * ```html
2505
+ * <le-tag label="JavaScript"></le-tag>
2506
+ * ```
2507
+ * @example Dismissible tag
2508
+ * ```html
2509
+ * <le-tag label="Remove me" dismissible></le-tag>
2510
+ * ```
2511
+ * @example With icon
2512
+ * ```html
2513
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
2514
+ * ```
2515
+ * @example Different sizes
2516
+ * ```html
2517
+ * <le-tag label="Small" size="small"></le-tag>
2518
+ * <le-tag label="Medium" size="medium"></le-tag>
2519
+ * <le-tag label="Large" size="large"></le-tag>
2520
+ * ```
2521
+ * @example Different variants
2522
+ * ```html
2523
+ * <le-tag label="Default" variant="default"></le-tag>
2524
+ * <le-tag label="Primary" variant="primary"></le-tag>
2525
+ * <le-tag label="Success" variant="success"></le-tag>
2526
+ * <le-tag label="Warning" variant="warning"></le-tag>
2527
+ * <le-tag label="Danger" variant="danger"></le-tag>
2528
+ * ```
2529
+ */
2530
+ interface HTMLLeTagElement extends Components.LeTag, HTMLStencilElement {
2531
+ addEventListener<K extends keyof HTMLLeTagElementEventMap>(type: K, listener: (this: HTMLLeTagElement, ev: LeTagCustomEvent<HTMLLeTagElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2532
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2533
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2534
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2535
+ removeEventListener<K extends keyof HTMLLeTagElementEventMap>(type: K, listener: (this: HTMLLeTagElement, ev: LeTagCustomEvent<HTMLLeTagElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2536
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2537
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2538
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2539
+ }
2540
+ var HTMLLeTagElement: {
2541
+ prototype: HTMLLeTagElement;
2542
+ new (): HTMLLeTagElement;
2543
+ };
1055
2544
  /**
1056
2545
  * A text component with rich text editing capabilities in admin mode.
1057
2546
  * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
@@ -1082,14 +2571,29 @@ declare global {
1082
2571
  "le-button": HTMLLeButtonElement;
1083
2572
  "le-card": HTMLLeCardElement;
1084
2573
  "le-checkbox": HTMLLeCheckboxElement;
2574
+ "le-collapse": HTMLLeCollapseElement;
2575
+ "le-combobox": HTMLLeComboboxElement;
1085
2576
  "le-component": HTMLLeComponentElement;
2577
+ "le-current-heading": HTMLLeCurrentHeadingElement;
2578
+ "le-dropdown-base": HTMLLeDropdownBaseElement;
2579
+ "le-header": HTMLLeHeaderElement;
2580
+ "le-header-placeholder": HTMLLeHeaderPlaceholderElement;
2581
+ "le-multiselect": HTMLLeMultiselectElement;
1086
2582
  "le-number-input": HTMLLeNumberInputElement;
1087
2583
  "le-popover": HTMLLePopoverElement;
1088
2584
  "le-popup": HTMLLePopupElement;
1089
2585
  "le-round-progress": HTMLLeRoundProgressElement;
2586
+ "le-scroll-progress": HTMLLeScrollProgressElement;
2587
+ "le-segmented-control": HTMLLeSegmentedControlElement;
2588
+ "le-select": HTMLLeSelectElement;
1090
2589
  "le-slot": HTMLLeSlotElement;
1091
2590
  "le-stack": HTMLLeStackElement;
1092
2591
  "le-string-input": HTMLLeStringInputElement;
2592
+ "le-tab": HTMLLeTabElement;
2593
+ "le-tab-bar": HTMLLeTabBarElement;
2594
+ "le-tab-panel": HTMLLeTabPanelElement;
2595
+ "le-tabs": HTMLLeTabsElement;
2596
+ "le-tag": HTMLLeTagElement;
1093
2597
  "le-text": HTMLLeTextElement;
1094
2598
  "le-turntable": HTMLLeTurntableElement;
1095
2599
  }
@@ -1177,208 +2681,649 @@ declare namespace LocalJSX {
1177
2681
  */
1178
2682
  "maxWidth"?: string;
1179
2683
  /**
1180
- * Minimum height constraint
2684
+ * Minimum height constraint
2685
+ */
2686
+ "minHeight"?: string;
2687
+ /**
2688
+ * Minimum width constraint
2689
+ */
2690
+ "minWidth"?: string;
2691
+ /**
2692
+ * Order in the flex container (lower values come first)
2693
+ */
2694
+ "order"?: number;
2695
+ /**
2696
+ * Padding inside the box (CSS value like '8px', '1rem')
2697
+ */
2698
+ "padding"?: string;
2699
+ /**
2700
+ * Flex shrink factor - how much the item should shrink relative to siblings
2701
+ * @min 0
2702
+ * @default 1
2703
+ */
2704
+ "shrink"?: number;
2705
+ /**
2706
+ * Width of the box (CSS value like '100px', '50%', 'auto')
2707
+ */
2708
+ "width"?: string;
2709
+ }
2710
+ /**
2711
+ * A flexible button component with multiple variants and states.
2712
+ * @cssprop --le-button-bg - Button background color
2713
+ * @cssprop --le-button-color - Button text color
2714
+ * @cssprop --le-button-border-radius - Button border radius
2715
+ * @cssprop --le-button-padding-x - Button horizontal padding
2716
+ * @cssprop --le-button-padding-y - Button vertical padding
2717
+ * @csspart button - The native button element
2718
+ * @csspart content - The button content wrapper
2719
+ * @csspart icon-start - The start icon slot
2720
+ * @csspart icon-end - The end icon slot
2721
+ * @cmsEditable true
2722
+ * @cmsCategory Actions
2723
+ */
2724
+ interface LeButton {
2725
+ /**
2726
+ * Alignment of the button label without the end icon
2727
+ * @allowedValues start | center | space-between | end
2728
+ * @default 'center'
2729
+ */
2730
+ "align"?: 'start' | 'center' | 'space-between' | 'end';
2731
+ /**
2732
+ * Button color theme (uses theme semantic colors)
2733
+ * @allowedValues primary | secondary | success | warning | danger | info
2734
+ * @default 'primary'
2735
+ */
2736
+ "color"?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
2737
+ /**
2738
+ * Whether the button is disabled
2739
+ * @default false
2740
+ */
2741
+ "disabled"?: boolean;
2742
+ /**
2743
+ * Whether the button takes full width of its container
2744
+ * @default false
2745
+ */
2746
+ "fullWidth"?: boolean;
2747
+ /**
2748
+ * Optional href to make the button act as a link
2749
+ */
2750
+ "href"?: string;
2751
+ /**
2752
+ * End icon image or emoji
2753
+ */
2754
+ "iconEnd"?: string | Node;
2755
+ /**
2756
+ * Icon only button image or emoji if this prop is set, the button will render only the icon slot
2757
+ */
2758
+ "iconOnly"?: string | Node;
2759
+ /**
2760
+ * Start icon image or emoji
2761
+ */
2762
+ "iconStart"?: string | Node;
2763
+ /**
2764
+ * Mode of the popover should be 'default' for internal use
2765
+ */
2766
+ "mode"?: 'default' | 'admin';
2767
+ /**
2768
+ * Emitted when the button is clicked. This is a custom event that wraps the native click but ensures the target is the le-button.
2769
+ */
2770
+ "onClick"?: (event: LeButtonCustomEvent<PointerEvent>) => void;
2771
+ /**
2772
+ * Whether the button is in a selected/active state
2773
+ * @default false
2774
+ */
2775
+ "selected"?: boolean;
2776
+ /**
2777
+ * Button size
2778
+ * @allowedValues small | medium | large
2779
+ * @default 'medium'
2780
+ */
2781
+ "size"?: 'small' | 'medium' | 'large';
2782
+ /**
2783
+ * Link target when href is set
2784
+ */
2785
+ "target"?: string;
2786
+ /**
2787
+ * The button type attribute
2788
+ * @allowedValues button | submit | reset
2789
+ * @default 'button'
2790
+ */
2791
+ "type"?: 'button' | 'submit' | 'reset';
2792
+ /**
2793
+ * Button variant style
2794
+ * @allowedValues solid | outlined | clear
2795
+ * @default 'solid'
2796
+ */
2797
+ "variant"?: 'solid' | 'outlined' | 'clear' | 'system';
2798
+ }
2799
+ /**
2800
+ * A flexible card component with header, content, and footer slots.
2801
+ * The card uses le-slot wrappers for each slot area. In admin mode,
2802
+ * le-slot shows placeholders for CMS editing. In default mode,
2803
+ * le-slot acts as a transparent passthrough.
2804
+ * @cssprop --le-card-bg - Card background color
2805
+ * @cssprop --le-card-border-radius - Card border radius
2806
+ * @cssprop --le-card-shadow - Card box shadow
2807
+ * @cssprop --le-card-padding - Card content padding
2808
+ * @csspart card - The main card container
2809
+ * @csspart header - The card header section
2810
+ * @csspart content - The card content section
2811
+ * @csspart footer - The card footer section
2812
+ * @cmsEditable true
2813
+ * @cmsCategory Layout
2814
+ */
2815
+ interface LeCard {
2816
+ /**
2817
+ * Whether the card is interactive (clickable)
2818
+ * @default false
2819
+ */
2820
+ "interactive"?: boolean;
2821
+ /**
2822
+ * Card variant style
2823
+ * @allowedValues default | outlined | elevated
2824
+ * @default 'default'
2825
+ */
2826
+ "variant"?: 'default' | 'outlined' | 'elevated';
2827
+ }
2828
+ /**
2829
+ * A checkbox component with support for labels, descriptions, and external IDs.
2830
+ * @cssprop --le-checkbox-size - Size of the checkbox input
2831
+ * @cssprop --le-checkbox-color - Color of the checkbox when checked
2832
+ * @cssprop --le-checkbox-label-color - Color of the label text
2833
+ * @cssprop --le-checkbox-desc-color - Color of the description text
2834
+ */
2835
+ interface LeCheckbox {
2836
+ /**
2837
+ * Whether the checkbox is checked
2838
+ * @default false
2839
+ */
2840
+ "checked"?: boolean;
2841
+ /**
2842
+ * Whether the checkbox is disabled
2843
+ * @default false
2844
+ */
2845
+ "disabled"?: boolean;
2846
+ /**
2847
+ * External ID for linking with external systems (e.g. database ID, PDF form field ID)
2848
+ */
2849
+ "externalId"?: string;
2850
+ /**
2851
+ * The name of the checkbox input
2852
+ */
2853
+ "name"?: string;
2854
+ /**
2855
+ * Emitted when the checked state changes
2856
+ */
2857
+ "onChange"?: (event: LeCheckboxCustomEvent<{ checked: boolean; value: string; name: string; externalId: string }>) => void;
2858
+ /**
2859
+ * The value of the checkbox input
2860
+ */
2861
+ "value"?: string;
2862
+ }
2863
+ /**
2864
+ * Animated show/hide wrapper.
2865
+ * Supports height collapse (auto->0) and/or fading.
2866
+ * Can optionally listen to the nearest `le-header` shrink events.
2867
+ * @cssprop --le-collapse-duration - Transition duration
2868
+ * @csspart region - Collapsible region
2869
+ * @csspart content - Inner content
2870
+ * @cmsEditable true
2871
+ * @cmsCategory Layout
2872
+ */
2873
+ interface LeCollapse {
2874
+ /**
2875
+ * If true, collapse/expand based on the nearest header shrink event.
2876
+ * @default false
2877
+ */
2878
+ "collapseOnHeaderShrink"?: boolean;
2879
+ /**
2880
+ * Stop fading the content when collapsing/expanding.
2881
+ * @default false
2882
+ */
2883
+ "noFading"?: boolean;
2884
+ /**
2885
+ * Whether the content should be shown.
2886
+ * @default true
2887
+ */
2888
+ "open"?: boolean;
2889
+ /**
2890
+ * Whether the content should scroll down from the top when open.
2891
+ * @default false
2892
+ */
2893
+ "scrollDown"?: boolean;
2894
+ }
2895
+ /**
2896
+ * A combobox component with searchable dropdown.
2897
+ * Combines a text input with a dropdown list, allowing users to
2898
+ * filter options by typing or select from the list.
2899
+ * @cmsEditable true
2900
+ * @cmsCategory Form
2901
+ * @example Basic combobox
2902
+ * ```html
2903
+ * <le-combobox
2904
+ * placeholder="Search..."
2905
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
2906
+ * ></le-combobox>
2907
+ * ```
2908
+ * @example Allow custom values
2909
+ * ```html
2910
+ * <le-combobox
2911
+ * placeholder="Type or select..."
2912
+ * allow-custom
2913
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
2914
+ * ></le-combobox>
2915
+ * ```
2916
+ */
2917
+ interface LeCombobox {
2918
+ /**
2919
+ * Whether to allow custom values not in the options list.
2920
+ * @default false
2921
+ */
2922
+ "allowCustom"?: boolean;
2923
+ /**
2924
+ * Whether the combobox is disabled.
2925
+ * @default false
2926
+ */
2927
+ "disabled"?: boolean;
2928
+ /**
2929
+ * Text to show when no options match the search.
2930
+ * @default 'No results found'
2931
+ */
2932
+ "emptyText"?: string;
2933
+ /**
2934
+ * Whether the multiselect should take full width of its container.
2935
+ * @default false
2936
+ */
2937
+ "fullWidth"?: boolean;
2938
+ /**
2939
+ * Minimum characters before showing filtered results.
2940
+ * @default 0
2941
+ */
2942
+ "minSearchLength"?: number;
2943
+ /**
2944
+ * Name attribute for form submission.
2945
+ */
2946
+ "name"?: string;
2947
+ /**
2948
+ * Emitted when the selected value changes.
2949
+ */
2950
+ "onLeChange"?: (event: LeComboboxCustomEvent<LeOptionSelectDetail>) => void;
2951
+ /**
2952
+ * Emitted when the dropdown closes.
2953
+ */
2954
+ "onLeClose"?: (event: LeComboboxCustomEvent<void>) => void;
2955
+ /**
2956
+ * Emitted when the input value changes (for custom values).
2957
+ */
2958
+ "onLeInput"?: (event: LeComboboxCustomEvent<{ value: string }>) => void;
2959
+ /**
2960
+ * Emitted when the dropdown opens.
2961
+ */
2962
+ "onLeOpen"?: (event: LeComboboxCustomEvent<void>) => void;
2963
+ /**
2964
+ * Whether the dropdown is currently open.
2965
+ * @default false
2966
+ */
2967
+ "open"?: boolean;
2968
+ /**
2969
+ * The options to display in the dropdown.
2970
+ * @default []
2971
+ */
2972
+ "options"?: LeOption[] | string;
2973
+ /**
2974
+ * Placeholder text for the input.
2975
+ * @default 'Type to search...'
2976
+ */
2977
+ "placeholder"?: string;
2978
+ /**
2979
+ * Whether selection is required.
2980
+ * @default false
2981
+ */
2982
+ "required"?: boolean;
2983
+ /**
2984
+ * Size variant of the combobox.
2985
+ * @default 'medium'
2986
+ */
2987
+ "size"?: 'small' | 'medium' | 'large';
2988
+ /**
2989
+ * The currently selected value.
2990
+ */
2991
+ "value"?: LeOptionValue;
2992
+ }
2993
+ /**
2994
+ * Component wrapper for admin mode editing.
2995
+ * This component is used internally by other components to provide admin-mode
2996
+ * editing capabilities. It wraps the component's rendered output and shows
2997
+ * a settings popover for editing properties.
2998
+ * In default mode, it acts as a simple passthrough (display: contents).
2999
+ * In admin mode, it shows a border, component name header, and settings popover.
3000
+ * The host element is found automatically by traversing up through the shadow DOM.
3001
+ * Usage inside a component's render method:
3002
+ * ```tsx
3003
+ * render() {
3004
+ * return (
3005
+ * <le-component component="le-card">
3006
+ * <Host>...</Host>
3007
+ * </le-component>
3008
+ * );
3009
+ * }
3010
+ * ```
3011
+ * @cmsInternal true
3012
+ * @cmsCategory System
3013
+ */
3014
+ interface LeComponent {
3015
+ /**
3016
+ * The tag name of the component (e.g., 'le-card'). Used to look up property metadata and display the component name.
3017
+ */
3018
+ "component": string;
3019
+ /**
3020
+ * Optional display name for the component. If not provided, the tag name will be formatted as the display name.
3021
+ */
3022
+ "displayName"?: string;
3023
+ /**
3024
+ * Classes to apply to the host element. Allows parent components to pass their styling classes.
3025
+ */
3026
+ "hostClass"?: string;
3027
+ /**
3028
+ * Inline styles to apply to the host element. Allows parent components to pass dynamic styles (e.g., flex properties).
3029
+ */
3030
+ "hostStyle"?: { [key: string]: string };
3031
+ }
3032
+ /**
3033
+ * Shows a "smart" header title based on what has scrolled out of view.
3034
+ * When `selector` matches multiple elements, the title becomes the last element
3035
+ * (top-to-bottom) that has fully scrolled out above the viewport.
3036
+ * @csspart title - The rendered title
3037
+ * @cmsEditable true
3038
+ * @cmsCategory Layout
3039
+ */
3040
+ interface LeCurrentHeading {
3041
+ /**
3042
+ * CSS selector for page title/headings to watch (e.g. `.page-title`, `main h2`).
3043
+ * @default ''
3044
+ */
3045
+ "selector"?: string;
3046
+ }
3047
+ /**
3048
+ * Internal dropdown base component that provides shared functionality
3049
+ * for select, combobox, and multiselect components.
3050
+ * Wraps le-popover for positioning and provides:
3051
+ * - Option list rendering with groups
3052
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
3053
+ * - Option filtering support
3054
+ * - Single and multi-select modes
3055
+ * @cmsInternal true
3056
+ * @cmsCategory System
3057
+ */
3058
+ interface LeDropdownBase {
3059
+ /**
3060
+ * Whether to close the dropdown when clicking outside. (used to support combobox with input focus)
3061
+ * @default true
3062
+ */
3063
+ "closeOnClickOutside"?: boolean;
3064
+ /**
3065
+ * Whether the dropdown is disabled.
3066
+ * @default false
3067
+ */
3068
+ "disabled"?: boolean;
3069
+ /**
3070
+ * Placeholder text when no options match filter.
3071
+ * @default 'No options'
3072
+ */
3073
+ "emptyText"?: string;
3074
+ /**
3075
+ * Filter function for options. Return true to include the option.
3076
+ */
3077
+ "filterFn"?: (option: LeOption, query: string) => boolean;
3078
+ /**
3079
+ * Current filter query string.
3080
+ * @default ''
3081
+ */
3082
+ "filterQuery"?: string;
3083
+ /**
3084
+ * Sets the dropdown to full width of the trigger.
3085
+ * @default false
3086
+ */
3087
+ "fullWidth"?: boolean;
3088
+ /**
3089
+ * Maximum height of the dropdown list.
3090
+ * @default '300px'
3091
+ */
3092
+ "maxHeight"?: string;
3093
+ /**
3094
+ * Whether multiple selection is allowed.
3095
+ * @default false
3096
+ */
3097
+ "multiple"?: boolean;
3098
+ /**
3099
+ * Emitted when the dropdown closes.
3100
+ */
3101
+ "onLeDropdownClose"?: (event: LeDropdownBaseCustomEvent<void>) => void;
3102
+ /**
3103
+ * Emitted when the dropdown opens.
3104
+ */
3105
+ "onLeDropdownOpen"?: (event: LeDropdownBaseCustomEvent<void>) => void;
3106
+ /**
3107
+ * Emitted when an option is selected.
1181
3108
  */
1182
- "minHeight"?: string;
3109
+ "onLeOptionSelect"?: (event: LeDropdownBaseCustomEvent<LeOptionSelectDetail>) => void;
1183
3110
  /**
1184
- * Minimum width constraint
3111
+ * Whether the dropdown is open.
3112
+ * @default false
1185
3113
  */
1186
- "minWidth"?: string;
3114
+ "open"?: boolean;
1187
3115
  /**
1188
- * Order in the flex container (lower values come first)
3116
+ * The options to display in the dropdown.
3117
+ * @default []
1189
3118
  */
1190
- "order"?: number;
3119
+ "options"?: LeOption[];
1191
3120
  /**
1192
- * Padding inside the box (CSS value like '8px', '1rem')
3121
+ * Whether to show checkboxes for multiselect mode.
3122
+ * @default true
1193
3123
  */
1194
- "padding"?: string;
3124
+ "showCheckboxes"?: boolean;
1195
3125
  /**
1196
- * Flex shrink factor - how much the item should shrink relative to siblings
1197
- * @min 0
1198
- * @default 1
3126
+ * Current value(s) - single value or array for multiselect.
1199
3127
  */
1200
- "shrink"?: number;
3128
+ "value"?: LeOptionValue | LeOptionValue[];
1201
3129
  /**
1202
- * Width of the box (CSS value like '100px', '50%', 'auto')
3130
+ * Width of the dropdown. If not set, matches trigger width.
1203
3131
  */
1204
3132
  "width"?: string;
1205
3133
  }
1206
3134
  /**
1207
- * A flexible button component with multiple variants and states.
1208
- * @cssprop --le-button-bg - Button background color
1209
- * @cssprop --le-button-color - Button text color
1210
- * @cssprop --le-button-border-radius - Button border radius
1211
- * @cssprop --le-button-padding-x - Button horizontal padding
1212
- * @cssprop --le-button-padding-y - Button vertical padding
1213
- * @csspart button - The native button element
1214
- * @csspart content - The button content wrapper
3135
+ * A functional page header with scroll-aware behaviors.
3136
+ * Features:
3137
+ * - Static (default), sticky, or fixed positioning
3138
+ * - Optional shrink-on-scroll behavior via `shrink-offset`
3139
+ * - Optional reveal-on-scroll-up via `reveal-on-scroll` (sticky only)
3140
+ * Slots:
3141
+ * - `start`: left side (logo/back button)
3142
+ * - `title`: centered/primary title content
3143
+ * - `end`: right side actions
3144
+ * - default: extra content row (e.g., tabs/search) rendered below main row
3145
+ * @cssprop --le-header-bg - Background (color/gradient)
3146
+ * @cssprop --le-header-color - Text color
3147
+ * @cssprop --le-header-border - Border (e.g. 1px solid ...)
3148
+ * @cssprop --le-header-shadow - Shadow/elevation
3149
+ * @cssprop --le-header-max-width - Inner content max width
3150
+ * @cssprop --le-header-padding-x - Horizontal padding
3151
+ * @cssprop --le-header-padding-y - Vertical padding
3152
+ * @cssprop --le-header-gap - Gap between zones
3153
+ * @cssprop --le-header-height - Base height (main row)
3154
+ * @cssprop --le-header-height-condensed - Condensed height when shrunk
3155
+ * @cssprop --le-header-transition - Transition timing
3156
+ * @cssprop --le-header-z - Z-index (fixed mode)
3157
+ * @csspart header - The header container
3158
+ * @csspart inner - Inner max-width container
3159
+ * @csspart row - Main row
3160
+ * @csspart start - Start zone
3161
+ * @csspart title - Title zone
3162
+ * @csspart end - End zone
3163
+ * @csspart secondary - Secondary row
1215
3164
  * @cmsEditable true
1216
- * @cmsCategory Actions
3165
+ * @cmsCategory Layout
1217
3166
  */
1218
- interface LeButton {
1219
- /**
1220
- * Button color theme (uses theme semantic colors)
1221
- * @allowedValues primary | secondary | success | warning | danger | info
1222
- * @default 'primary'
1223
- */
1224
- "color"?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
3167
+ interface LeHeader {
1225
3168
  /**
1226
- * Whether the button is disabled
3169
+ * If true, expand the header when hovered
1227
3170
  * @default false
1228
3171
  */
1229
- "disabled"?: boolean;
3172
+ "expandOnHover"?: boolean;
1230
3173
  /**
1231
- * Whether the button takes full width of its container
3174
+ * Fixed positioning (out-of-flow). Takes precedence over `sticky`/`static`.
1232
3175
  * @default false
1233
3176
  */
1234
- "fullWidth"?: boolean;
1235
- /**
1236
- * Optional href to make the button act as a link
1237
- */
1238
- "href"?: string;
3177
+ "fixed"?: boolean;
1239
3178
  /**
1240
- * Whether the button displays only an icon (square aspect ratio)
3179
+ * Force static positioning (default). Ignored if `sticky` or `fixed` are true.
1241
3180
  * @default false
1242
3181
  */
1243
- "iconOnly"?: boolean;
1244
- /**
1245
- * Mode of the popover should be 'default' for internal use
1246
- */
1247
- "mode"?: 'default' | 'admin';
3182
+ "isStatic"?: boolean;
1248
3183
  /**
1249
- * Emitted when the button is clicked. This is a custom event that wraps the native click but ensures the target is the le-button.
3184
+ * Emits when the header shrinks/expands (only on change).
1250
3185
  */
1251
- "onClick"?: (event: LeButtonCustomEvent<PointerEvent>) => void;
3186
+ "onLeHeaderShrinkChange"?: (event: LeHeaderCustomEvent<{ shrunk: boolean; y: number }>) => void;
1252
3187
  /**
1253
- * Whether the button is in a selected/active state
1254
- * @default false
3188
+ * Emits whenever scroll-driven state changes.
1255
3189
  */
1256
- "selected"?: boolean;
3190
+ "onLeHeaderState"?: (event: LeHeaderCustomEvent<{
3191
+ y: number;
3192
+ direction: 'up' | 'down';
3193
+ revealed: boolean;
3194
+ shrunk: boolean;
3195
+ }>) => void;
1257
3196
  /**
1258
- * Button size
1259
- * @allowedValues small | medium | large
1260
- * @default 'medium'
3197
+ * Emits when the header hides/shows (only on change).
1261
3198
  */
1262
- "size"?: 'small' | 'medium' | 'large';
3199
+ "onLeHeaderVisibilityChange"?: (event: LeHeaderCustomEvent<{ visible: boolean; y: number }>) => void;
1263
3200
  /**
1264
- * Link target when href is set
3201
+ * Sticky-only reveal behavior (hide on scroll down, show on scroll up). - missing/false: disabled - true/empty attribute: enabled with default threshold (16) - number (as string): enabled and used as threshold
1265
3202
  */
1266
- "target"?: string;
3203
+ "revealOnScroll"?: string;
1267
3204
  /**
1268
- * The button type attribute
1269
- * @allowedValues button | submit | reset
1270
- * @default 'button'
3205
+ * Shrink trigger. - missing/0: disabled - number (px): shrink when scrollY >= that value (but never before header height) - css var name (e.g. --foo): shrink when scrollY >= resolved var value - selector (e.g. .page-title): shrink when that element scrolls out of view above the viewport
1271
3206
  */
1272
- "type"?: 'button' | 'submit' | 'reset';
3207
+ "shrinkOffset"?: string;
1273
3208
  /**
1274
- * Button variant style
1275
- * @allowedValues solid | outlined | clear
1276
- * @default 'solid'
3209
+ * Sticky positioning (in-flow). Ignored if `fixed` is true.
3210
+ * @default false
1277
3211
  */
1278
- "variant"?: 'solid' | 'outlined' | 'clear' | 'system';
3212
+ "sticky"?: boolean;
1279
3213
  }
1280
3214
  /**
1281
- * A flexible card component with header, content, and footer slots.
1282
- * The card uses le-slot wrappers for each slot area. In admin mode,
1283
- * le-slot shows placeholders for CMS editing. In default mode,
1284
- * le-slot acts as a transparent passthrough.
1285
- * @cssprop --le-card-bg - Card background color
1286
- * @cssprop --le-card-border-radius - Card border radius
1287
- * @cssprop --le-card-shadow - Card box shadow
1288
- * @cssprop --le-card-padding - Card content padding
1289
- * @csspart card - The main card container
1290
- * @csspart header - The card header section
1291
- * @csspart content - The card content section
1292
- * @csspart footer - The card footer section
3215
+ * Placeholder for `le-header`.
3216
+ * Reserves space using the global CSS variable `--le-header-height`.
3217
+ * The header component updates that variable when it renders.
3218
+ * @cssprop --le-header-height - Published header height (px)
3219
+ * @cmsInternal true
3220
+ */
3221
+ interface LeHeaderPlaceholder {
3222
+ }
3223
+ /**
3224
+ * A multiselect component for selecting multiple options.
3225
+ * Displays selected items as tags with optional search filtering.
1293
3226
  * @cmsEditable true
1294
- * @cmsCategory Layout
3227
+ * @cmsCategory Form
3228
+ * @example Basic multiselect
3229
+ * ```html
3230
+ * <le-multiselect
3231
+ * placeholder="Select options..."
3232
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
3233
+ * ></le-multiselect>
3234
+ * ```
3235
+ * @example With max selections
3236
+ * ```html
3237
+ * <le-multiselect
3238
+ * max-selections="3"
3239
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
3240
+ * ></le-multiselect>
3241
+ * ```
3242
+ * @example With search
3243
+ * ```html
3244
+ * <le-multiselect
3245
+ * searchable
3246
+ * placeholder="Search and select..."
3247
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
3248
+ * ></le-multiselect>
3249
+ * ```
1295
3250
  */
1296
- interface LeCard {
3251
+ interface LeMultiselect {
1297
3252
  /**
1298
- * Whether the card is interactive (clickable)
3253
+ * Whether the multiselect is disabled.
1299
3254
  * @default false
1300
3255
  */
1301
- "interactive"?: boolean;
3256
+ "disabled"?: boolean;
1302
3257
  /**
1303
- * Card variant style
1304
- * @allowedValues default | outlined | elevated
1305
- * @default 'default'
3258
+ * Text to show when no options match the search.
3259
+ * @default 'No results found'
1306
3260
  */
1307
- "variant"?: 'default' | 'outlined' | 'elevated';
1308
- }
1309
- /**
1310
- * A checkbox component with support for labels, descriptions, and external IDs.
1311
- * @cssprop --le-checkbox-size - Size of the checkbox input
1312
- * @cssprop --le-checkbox-color - Color of the checkbox when checked
1313
- * @cssprop --le-checkbox-label-color - Color of the label text
1314
- * @cssprop --le-checkbox-desc-color - Color of the description text
1315
- */
1316
- interface LeCheckbox {
3261
+ "emptyText"?: string;
1317
3262
  /**
1318
- * Whether the checkbox is checked
3263
+ * Whether the multiselect should take full width of its container.
1319
3264
  * @default false
1320
3265
  */
1321
- "checked"?: boolean;
3266
+ "fullWidth"?: boolean;
1322
3267
  /**
1323
- * Whether the checkbox is disabled
1324
- * @default false
3268
+ * Maximum number of selections allowed.
1325
3269
  */
1326
- "disabled"?: boolean;
3270
+ "maxSelections"?: number;
1327
3271
  /**
1328
- * External ID for linking with external systems (e.g. database ID, PDF form field ID)
3272
+ * Name attribute for form submission.
1329
3273
  */
1330
- "externalId"?: string;
3274
+ "name"?: string;
1331
3275
  /**
1332
- * The name of the checkbox input
3276
+ * Emitted when the selected values change.
1333
3277
  */
1334
- "name"?: string;
3278
+ "onLeChange"?: (event: LeMultiselectCustomEvent<LeMultiOptionSelectDetail>) => void;
1335
3279
  /**
1336
- * Emitted when the checked state changes
3280
+ * Emitted when the dropdown closes.
1337
3281
  */
1338
- "onChange"?: (event: LeCheckboxCustomEvent<{ checked: boolean; value: string; name: string; externalId: string }>) => void;
3282
+ "onLeClose"?: (event: LeMultiselectCustomEvent<void>) => void;
1339
3283
  /**
1340
- * The value of the checkbox input
3284
+ * Emitted when the dropdown opens.
1341
3285
  */
1342
- "value"?: string;
1343
- }
1344
- /**
1345
- * Component wrapper for admin mode editing.
1346
- * This component is used internally by other components to provide admin-mode
1347
- * editing capabilities. It wraps the component's rendered output and shows
1348
- * a settings popover for editing properties.
1349
- * In default mode, it acts as a simple passthrough (display: contents).
1350
- * In admin mode, it shows a border, component name header, and settings popover.
1351
- * The host element is found automatically by traversing up through the shadow DOM.
1352
- * Usage inside a component's render method:
1353
- * ```tsx
1354
- * render() {
1355
- * return (
1356
- * <le-component component="le-card">
1357
- * <Host>...</Host>
1358
- * </le-component>
1359
- * );
1360
- * }
1361
- * ```
1362
- * @cmsInternal true
1363
- * @cmsCategory System
1364
- */
1365
- interface LeComponent {
3286
+ "onLeOpen"?: (event: LeMultiselectCustomEvent<void>) => void;
1366
3287
  /**
1367
- * The tag name of the component (e.g., 'le-card'). Used to look up property metadata and display the component name.
3288
+ * Whether the dropdown is currently open.
3289
+ * @default false
1368
3290
  */
1369
- "component": string;
3291
+ "open"?: boolean;
1370
3292
  /**
1371
- * Optional display name for the component. If not provided, the tag name will be formatted as the display name.
3293
+ * The options to display in the dropdown.
3294
+ * @default []
1372
3295
  */
1373
- "displayName"?: string;
3296
+ "options"?: LeOption[] | string;
1374
3297
  /**
1375
- * Classes to apply to the host element. Allows parent components to pass their styling classes.
3298
+ * Placeholder text when no options are selected.
3299
+ * @default 'Select options...'
1376
3300
  */
1377
- "hostClass"?: string;
3301
+ "placeholder"?: string;
1378
3302
  /**
1379
- * Inline styles to apply to the host element. Allows parent components to pass dynamic styles (e.g., flex properties).
3303
+ * Whether selection is required.
3304
+ * @default false
1380
3305
  */
1381
- "hostStyle"?: { [key: string]: string };
3306
+ "required"?: boolean;
3307
+ /**
3308
+ * Whether the input is searchable.
3309
+ * @default false
3310
+ */
3311
+ "searchable"?: boolean;
3312
+ /**
3313
+ * Whether to show a "Select All" option. Also accepts a string or array of strings to customize the label(s).
3314
+ * @default false
3315
+ */
3316
+ "showSelectAll"?: boolean | string | string[];
3317
+ /**
3318
+ * Size variant of the multiselect.
3319
+ * @default 'medium'
3320
+ */
3321
+ "size"?: 'small' | 'medium' | 'large';
3322
+ /**
3323
+ * The currently selected values.
3324
+ * @default []
3325
+ */
3326
+ "value"?: LeOptionValue[];
1382
3327
  }
1383
3328
  /**
1384
3329
  * A number input component with validation, keyboard controls, and custom spinners.
@@ -1461,6 +3406,8 @@ declare namespace LocalJSX {
1461
3406
  * A popover component for displaying floating content.
1462
3407
  * Uses the native HTML Popover API for proper layering with dialogs
1463
3408
  * and other top-layer elements. Falls back gracefully in older browsers.
3409
+ * @csspart trigger - The popover trigger element
3410
+ * @csspart content - The popover content wrapper
1464
3411
  * @cmsInternal true
1465
3412
  * @cmsCategory System
1466
3413
  */
@@ -1525,6 +3472,11 @@ declare namespace LocalJSX {
1525
3472
  * @default true
1526
3473
  */
1527
3474
  "showClose"?: boolean;
3475
+ /**
3476
+ * Should the popover's trigger take full width of its container
3477
+ * @default false
3478
+ */
3479
+ "triggerFullWidth"?: boolean;
1528
3480
  /**
1529
3481
  * Fixed width for the popover (e.g., '300px', '20rem')
1530
3482
  */
@@ -1533,7 +3485,7 @@ declare namespace LocalJSX {
1533
3485
  /**
1534
3486
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
1535
3487
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
1536
- * and focus management. Can be used declaratively in HTML or programmatically
3488
+ * and focus management. Can be used declaratively in HTML or programmatically
1537
3489
  * via leAlert(), leConfirm(), lePrompt().
1538
3490
  * @cmsInternal true
1539
3491
  * @cmsCategory System
@@ -1568,6 +3520,11 @@ declare namespace LocalJSX {
1568
3520
  * @default true
1569
3521
  */
1570
3522
  "modal"?: boolean;
3523
+ /**
3524
+ * The mode of the Le Kit (e.g., 'default' or 'admin')
3525
+ * @default 'default'
3526
+ */
3527
+ "mode"?: LeKitMode;
1571
3528
  /**
1572
3529
  * Emitted when the popup is cancelled (Cancel clicked or dismissed)
1573
3530
  */
@@ -1611,14 +3568,189 @@ declare namespace LocalJSX {
1611
3568
  }
1612
3569
  interface LeRoundProgress {
1613
3570
  /**
1614
- * @default 0
3571
+ * @default 0
3572
+ */
3573
+ "padding"?: number;
3574
+ "paths"?: string;
3575
+ /**
3576
+ * @default 0
3577
+ */
3578
+ "value"?: number;
3579
+ }
3580
+ /**
3581
+ * Displays scroll progress as a simple bar.
3582
+ * If `track-scroll-progress` is present without a value, tracks the full document.
3583
+ * If it is a selector string, tracks progress within the matched element.
3584
+ * @cssprop --le-scroll-progress-height - Bar height
3585
+ * @cssprop --le-scroll-progress-bg - Track background
3586
+ * @cssprop --le-scroll-progress-fill - Fill color
3587
+ * @cssprop --le-scroll-progress-sticky-top - If sticky, stop position to parent top
3588
+ * @cssprop --le-scroll-progress-fixed-top - If fixed, distance from window top
3589
+ * @cssprop --le-scroll-progress-fixed-left - If fixed, distance from window left
3590
+ * @cssprop --le-scroll-progress-fixed-right - If fixed, distance from window right
3591
+ * @cssprop --le-scroll-progress-z - Z-index of the progress bar (1001 by default, above header)
3592
+ * @csspart track - Outer track
3593
+ * @csspart fill - Inner fill
3594
+ * @cmsEditable true
3595
+ * @cmsCategory Layout
3596
+ */
3597
+ interface LeScrollProgress {
3598
+ /**
3599
+ * Boolean or selector string.
3600
+ */
3601
+ "trackScrollProgress"?: string;
3602
+ }
3603
+ /**
3604
+ * A segmented control component (iOS-style toggle buttons).
3605
+ * Perfect for toggling between a small set of related options.
3606
+ * @cssprop --le-segmented-bg - Background color of the control
3607
+ * @cssprop --le-segmented-padding - Padding around segments
3608
+ * @cssprop --le-segmented-gap - Gap between segments
3609
+ * @cssprop --le-segmented-radius - Border radius of the control
3610
+ * @csspart container - The main container
3611
+ * @csspart segment - Individual segment buttons
3612
+ * @csspart segment-active - The currently active segment
3613
+ * @cmsEditable true
3614
+ * @cmsCategory Form
3615
+ */
3616
+ interface LeSegmentedControl {
3617
+ /**
3618
+ * Whether the control is disabled.
3619
+ * @default false
3620
+ */
3621
+ "disabled"?: boolean;
3622
+ /**
3623
+ * Whether the control should take full width.
3624
+ * @default false
3625
+ */
3626
+ "fullWidth"?: boolean;
3627
+ /**
3628
+ * Emitted when the selection changes.
3629
+ */
3630
+ "onLeChange"?: (event: LeSegmentedControlCustomEvent<LeOptionSelectDetail>) => void;
3631
+ /**
3632
+ * Array of options for the segmented control.
3633
+ * @default []
3634
+ */
3635
+ "options"?: LeOption[];
3636
+ /**
3637
+ * Scroll behavior for overflowing tabs.
3638
+ * @allowedValues auto | hidden | visible | scroll
3639
+ * @default 'auto'
3640
+ */
3641
+ "overflow"?: 'auto' | 'hidden' | 'visible' | 'scroll';
3642
+ /**
3643
+ * Size of the control.
3644
+ * @allowedValues small | medium | large
3645
+ * @default 'medium'
3646
+ */
3647
+ "size"?: 'small' | 'medium' | 'large';
3648
+ /**
3649
+ * The value of the currently selected option.
3650
+ */
3651
+ "value"?: LeOptionValue;
3652
+ }
3653
+ /**
3654
+ * A select dropdown component for single selection.
3655
+ * @cmsEditable true
3656
+ * @cmsCategory Form
3657
+ * @example Basic select
3658
+ * ```html
3659
+ * <le-select
3660
+ * placeholder="Choose an option"
3661
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
3662
+ * ></le-select>
3663
+ * ```
3664
+ * @example With icons
3665
+ * ```html
3666
+ * <le-select
3667
+ * options='[
3668
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
3669
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
3670
+ * ]'
3671
+ * ></le-select>
3672
+ * ```
3673
+ * @example Grouped options
3674
+ * ```html
3675
+ * <le-select
3676
+ * options='[
3677
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
3678
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
3679
+ * ]'
3680
+ * ></le-select>
3681
+ * ```
3682
+ */
3683
+ interface LeSelect {
3684
+ /**
3685
+ * Whether the select is disabled.
3686
+ * @default false
3687
+ */
3688
+ "disabled"?: boolean;
3689
+ /**
3690
+ * Text to show when no options match the search.
3691
+ * @default 'No results found'
3692
+ */
3693
+ "emptyText"?: string;
3694
+ /**
3695
+ * Whether the select should take full width of its container.
3696
+ * @default false
3697
+ */
3698
+ "fullWidth"?: boolean;
3699
+ /**
3700
+ * Name attribute for form submission.
3701
+ */
3702
+ "name"?: string;
3703
+ /**
3704
+ * Emitted when the selected value changes.
3705
+ */
3706
+ "onLeChange"?: (event: LeSelectCustomEvent<LeOptionSelectDetail>) => void;
3707
+ /**
3708
+ * Emitted when the dropdown closes.
3709
+ */
3710
+ "onLeClose"?: (event: LeSelectCustomEvent<void>) => void;
3711
+ /**
3712
+ * Emitted when the dropdown opens.
3713
+ */
3714
+ "onLeOpen"?: (event: LeSelectCustomEvent<void>) => void;
3715
+ /**
3716
+ * Whether the dropdown is currently open.
3717
+ * @default false
3718
+ */
3719
+ "open"?: boolean;
3720
+ /**
3721
+ * The options to display in the dropdown.
3722
+ * @default []
3723
+ */
3724
+ "options"?: LeOption[] | string;
3725
+ /**
3726
+ * Placeholder text when no option is selected.
3727
+ * @default 'Select an option'
3728
+ */
3729
+ "placeholder"?: string;
3730
+ /**
3731
+ * Whether selection is required.
3732
+ * @default false
3733
+ */
3734
+ "required"?: boolean;
3735
+ /**
3736
+ * Whether the input is searchable.
3737
+ * @default false
3738
+ */
3739
+ "searchable"?: boolean;
3740
+ /**
3741
+ * Size variant of the select.
3742
+ * @default 'medium'
3743
+ */
3744
+ "size"?: 'small' | 'medium' | 'large';
3745
+ /**
3746
+ * The currently selected value.
1615
3747
  */
1616
- "padding"?: number;
1617
- "paths"?: string;
3748
+ "value"?: LeOptionValue;
1618
3749
  /**
1619
- * @default 0
3750
+ * Visual variant of the select.
3751
+ * @default 'default'
1620
3752
  */
1621
- "value"?: number;
3753
+ "variant"?: 'default' | 'outlined' | 'solid';
1622
3754
  }
1623
3755
  /**
1624
3756
  * Slot placeholder component for admin/CMS mode.
@@ -1769,6 +3901,11 @@ declare namespace LocalJSX {
1769
3901
  * External ID for linking with external systems
1770
3902
  */
1771
3903
  "externalId"?: string;
3904
+ /**
3905
+ * Hide description slot
3906
+ * @default false
3907
+ */
3908
+ "hideDescription"?: boolean;
1772
3909
  /**
1773
3910
  * Icon for the end icon
1774
3911
  */
@@ -1777,6 +3914,10 @@ declare namespace LocalJSX {
1777
3914
  * Icon for the start icon
1778
3915
  */
1779
3916
  "iconStart"?: string;
3917
+ /**
3918
+ * Pass the ref of the input element to the parent component
3919
+ */
3920
+ "inputRef"?: (el: HTMLInputElement) => void;
1780
3921
  /**
1781
3922
  * Label for the input
1782
3923
  */
@@ -1792,11 +3933,19 @@ declare namespace LocalJSX {
1792
3933
  /**
1793
3934
  * Emitted when the value changes (on blur or Enter)
1794
3935
  */
1795
- "onChange"?: (event: LeStringInputCustomEvent<{ value: string; name: string; externalId: string }>) => void;
3936
+ "onChange"?: (event: LeStringInputCustomEvent<{
3937
+ value: string;
3938
+ name: string;
3939
+ externalId: string;
3940
+ }>) => void;
1796
3941
  /**
1797
3942
  * Emitted when the input value changes (on keystroke)
1798
3943
  */
1799
- "onInput"?: (event: LeStringInputCustomEvent<{ value: string; name: string; externalId: string }>) => void;
3944
+ "onInput"?: (event: LeStringInputCustomEvent<{
3945
+ value: string;
3946
+ name: string;
3947
+ externalId: string;
3948
+ }>) => void;
1800
3949
  /**
1801
3950
  * Placeholder text
1802
3951
  */
@@ -1816,6 +3965,344 @@ declare namespace LocalJSX {
1816
3965
  */
1817
3966
  "value"?: string;
1818
3967
  }
3968
+ /**
3969
+ * A flexible tab component with multiple variants and states.
3970
+ * @cssprop --le-tab-bg - Tab background color
3971
+ * @cssprop --le-tab-color - Tab text color
3972
+ * @cssprop --le-tab-border-radius - Tab border radius
3973
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
3974
+ * @cssprop --le-tab-padding-y - Tab vertical padding
3975
+ * @csspart button - The native button element
3976
+ * @csspart content - The tab content wrapper
3977
+ * @csspart icon-start - The start icon slot
3978
+ * @csspart icon-end - The end icon slot
3979
+ * @cmsEditable true
3980
+ * @cmsCategory Actions
3981
+ */
3982
+ interface LeTab {
3983
+ /**
3984
+ * Alignment of the tab label without the end icon
3985
+ * @allowedValues start | center | space-between | end
3986
+ * @default 'center'
3987
+ */
3988
+ "align"?: 'start' | 'center' | 'space-between' | 'end';
3989
+ /**
3990
+ * Whether the tab is disabled
3991
+ * @default false
3992
+ */
3993
+ "disabled"?: boolean;
3994
+ /**
3995
+ * Whether the tab can get focus needed for accessibility when used in custom tab implementations
3996
+ * @default true
3997
+ */
3998
+ "focusable"?: boolean;
3999
+ /**
4000
+ * Whether the tab takes full width of its container
4001
+ * @default false
4002
+ */
4003
+ "fullWidth"?: boolean;
4004
+ /**
4005
+ * Optional href to make the tab act as a link
4006
+ */
4007
+ "href"?: string;
4008
+ /**
4009
+ * Icon only tab image or emoji if this prop is set, the tab will render only the icon slot
4010
+ */
4011
+ "icon"?: string | Node;
4012
+ /**
4013
+ * End icon image or emoji
4014
+ */
4015
+ "iconEnd"?: string | Node;
4016
+ /**
4017
+ * Start icon image or emoji
4018
+ */
4019
+ "iconStart"?: string | Node;
4020
+ /**
4021
+ * Label if it is not provided via slot
4022
+ */
4023
+ "label"?: string;
4024
+ /**
4025
+ * Mode of the popover should be 'default' for internal use
4026
+ */
4027
+ "mode"?: 'default' | 'admin';
4028
+ /**
4029
+ * Emitted when the tab is clicked. This is a custom event that wraps the native click but ensures the target is the le-tab.
4030
+ */
4031
+ "onClick"?: (event: LeTabCustomEvent<PointerEvent>) => void;
4032
+ /**
4033
+ * Position of the tabs when used within a le-tabs component
4034
+ * @allowedValues top | bottom | start | end
4035
+ * @default 'top'
4036
+ */
4037
+ "position"?: 'top' | 'bottom' | 'start' | 'end';
4038
+ /**
4039
+ * Whether the tab is in a selected/active state
4040
+ * @default false
4041
+ */
4042
+ "selected"?: boolean;
4043
+ /**
4044
+ * Whether to show the label when in icon-only mode
4045
+ * @default false
4046
+ */
4047
+ "showLabel"?: boolean;
4048
+ /**
4049
+ * Tab size
4050
+ * @allowedValues small | medium | large
4051
+ * @default 'medium'
4052
+ */
4053
+ "size"?: 'small' | 'medium' | 'large';
4054
+ /**
4055
+ * Link target when href is set
4056
+ */
4057
+ "target"?: string;
4058
+ /**
4059
+ * Value of the tab, defaults to label if not provided
4060
+ */
4061
+ "value"?: string;
4062
+ /**
4063
+ * Tab variant style
4064
+ * @allowedValues solid | underlined | clear | enclosed | icon-only
4065
+ * @default 'underlined'
4066
+ */
4067
+ "variant"?: 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
4068
+ }
4069
+ /**
4070
+ * A presentational tab bar component without panels.
4071
+ * Use this for navigation/routing scenarios where you manage the content
4072
+ * externally based on the selection events. For tabs with built-in panels,
4073
+ * use `le-tabs` instead.
4074
+ * @cssprop --le-tab-bar-border-color - Border color
4075
+ * @cssprop --le-tab-bar-gap - Gap between tabs
4076
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
4077
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
4078
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
4079
+ * @csspart tablist - The tab button container
4080
+ * @csspart tab - Individual tab buttons
4081
+ * @csspart tab-active - The currently active tab
4082
+ * @cmsEditable true
4083
+ * @cmsCategory Navigation
4084
+ */
4085
+ interface LeTabBar {
4086
+ /**
4087
+ * Whether to show a border below the tab bar.
4088
+ * @default true
4089
+ */
4090
+ "bordered"?: boolean;
4091
+ /**
4092
+ * Whether tabs should stretch to fill available width.
4093
+ * @default true
4094
+ */
4095
+ "fullWidth"?: boolean;
4096
+ /**
4097
+ * Emitted when the selected tab changes.
4098
+ */
4099
+ "onLeTabChange"?: (event: LeTabBarCustomEvent<LeOptionSelectDetail>) => void;
4100
+ /**
4101
+ * Position of the tab bar.
4102
+ * @allowedValues top | bottom
4103
+ * @default 'top'
4104
+ */
4105
+ "position"?: 'top' | 'bottom';
4106
+ /**
4107
+ * The value of the currently selected tab.
4108
+ */
4109
+ "selected"?: LeOptionValue;
4110
+ /**
4111
+ * Whether to show labels in icon-only mode.
4112
+ * @default false
4113
+ */
4114
+ "showLabels"?: boolean;
4115
+ /**
4116
+ * Size of the tabs.
4117
+ * @allowedValues small | medium | large
4118
+ * @default 'medium'
4119
+ */
4120
+ "size"?: 'small' | 'medium' | 'large';
4121
+ /**
4122
+ * Array of tab options defining the tabs to display.
4123
+ * @default []
4124
+ */
4125
+ "tabs"?: LeOption[];
4126
+ }
4127
+ /**
4128
+ * A tab panel component used as a child of le-tabs.
4129
+ * Each le-tab-panel defines both the tab button label and the panel content.
4130
+ * The parent le-tabs component automatically reads these panels and creates
4131
+ * the tab interface.
4132
+ * @cmsEditable true
4133
+ * @cmsCategory Navigation
4134
+ */
4135
+ interface LeTabPanel {
4136
+ /**
4137
+ * Whether this tab is disabled.
4138
+ * @default false
4139
+ */
4140
+ "disabled"?: boolean;
4141
+ /**
4142
+ * Icon displayed at the end of the tab button.
4143
+ */
4144
+ "iconEnd"?: string;
4145
+ /**
4146
+ * Icon displayed at the start of the tab button. Can be an emoji, URL, or icon class.
4147
+ */
4148
+ "iconStart"?: string;
4149
+ /**
4150
+ * The label displayed in the tab button.
4151
+ */
4152
+ "label": string;
4153
+ /**
4154
+ * Whether to render the panel content only when active (lazy loading). When true, content is not rendered until the tab is first selected. When false (default), content is always in DOM but hidden when inactive.
4155
+ * @default false
4156
+ */
4157
+ "lazy"?: boolean;
4158
+ /**
4159
+ * The value used to identify this tab. Defaults to the label if not provided.
4160
+ */
4161
+ "value"?: string;
4162
+ }
4163
+ /**
4164
+ * A flexible tabs component for organizing content into tabbed panels.
4165
+ * Supports two modes:
4166
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
4167
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
4168
+ * Full keyboard navigation and ARIA support included.
4169
+ * @cssprop --le-tabs-border-color - Border color for tab list
4170
+ * @cssprop --le-tabs-gap - Gap between tabs
4171
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
4172
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
4173
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
4174
+ * @csspart tablist - The tab button container (role="tablist")
4175
+ * @csspart tab - Individual tab buttons
4176
+ * @csspart tab-active - The currently active tab
4177
+ * @csspart panels - Container for panel content
4178
+ * @csspart panel - Individual panel containers
4179
+ * @cmsEditable true
4180
+ * @cmsCategory Navigation
4181
+ */
4182
+ interface LeTabs {
4183
+ /**
4184
+ * Whether tabs should stretch to fill available width.
4185
+ * @default false
4186
+ */
4187
+ "fullWidth"?: boolean;
4188
+ /**
4189
+ * Emitted when the selected tab changes.
4190
+ */
4191
+ "onLeTabChange"?: (event: LeTabsCustomEvent<LeOptionSelectDetail>) => void;
4192
+ /**
4193
+ * Orientation of the tabs.
4194
+ * @allowedValues horizontal | vertical
4195
+ * @default 'horizontal'
4196
+ */
4197
+ "orientation"?: 'horizontal' | 'vertical';
4198
+ /**
4199
+ * Scroll behavior for overflowing tabs.
4200
+ * @allowedValues auto | hidden | visible | scroll
4201
+ * @default 'auto'
4202
+ */
4203
+ "overflow"?: 'auto' | 'hidden' | 'visible' | 'scroll';
4204
+ /**
4205
+ * Position of the tabs relative to the panels.
4206
+ * @allowedValues start | end
4207
+ * @default 'start'
4208
+ */
4209
+ "position"?: 'start' | 'end';
4210
+ /**
4211
+ * The value of the currently selected tab. If not provided, defaults to the first tab.
4212
+ */
4213
+ "selected"?: LeOptionValue;
4214
+ /**
4215
+ * Size of the tabs.
4216
+ * @allowedValues sm | md | lg
4217
+ * @default 'medium'
4218
+ */
4219
+ "size"?: 'small' | 'medium' | 'large';
4220
+ /**
4221
+ * Array of tab options (programmatic mode). If le-tab-panel children exist, they take precedence.
4222
+ * @default []
4223
+ */
4224
+ "tabs"?: LeOption[];
4225
+ /**
4226
+ * Tab variant style.
4227
+ * @allowedValues underlined | solid | pills | enclosed | icon-only
4228
+ * @default 'underlined'
4229
+ */
4230
+ "variant"?: 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
4231
+ /**
4232
+ * Wrap the tabs if they exceed container width.
4233
+ * @default false
4234
+ */
4235
+ "wrap"?: boolean;
4236
+ }
4237
+ /**
4238
+ * A tag/chip component for displaying labels with optional dismiss functionality.
4239
+ * @cmsEditable false
4240
+ * @cmsCategory Form
4241
+ * @example Basic tag
4242
+ * ```html
4243
+ * <le-tag label="JavaScript"></le-tag>
4244
+ * ```
4245
+ * @example Dismissible tag
4246
+ * ```html
4247
+ * <le-tag label="Remove me" dismissible></le-tag>
4248
+ * ```
4249
+ * @example With icon
4250
+ * ```html
4251
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
4252
+ * ```
4253
+ * @example Different sizes
4254
+ * ```html
4255
+ * <le-tag label="Small" size="small"></le-tag>
4256
+ * <le-tag label="Medium" size="medium"></le-tag>
4257
+ * <le-tag label="Large" size="large"></le-tag>
4258
+ * ```
4259
+ * @example Different variants
4260
+ * ```html
4261
+ * <le-tag label="Default" variant="default"></le-tag>
4262
+ * <le-tag label="Primary" variant="primary"></le-tag>
4263
+ * <le-tag label="Success" variant="success"></le-tag>
4264
+ * <le-tag label="Warning" variant="warning"></le-tag>
4265
+ * <le-tag label="Danger" variant="danger"></le-tag>
4266
+ * ```
4267
+ */
4268
+ interface LeTag {
4269
+ /**
4270
+ * Whether the tag is disabled.
4271
+ * @default false
4272
+ */
4273
+ "disabled"?: boolean;
4274
+ /**
4275
+ * Whether the tag can be dismissed (shows close button).
4276
+ * @default false
4277
+ */
4278
+ "dismissible"?: boolean;
4279
+ /**
4280
+ * Icon to display before the label. Can be an emoji, URL, or icon name.
4281
+ */
4282
+ "icon"?: string;
4283
+ /**
4284
+ * The text label to display in the tag.
4285
+ */
4286
+ "label"?: string;
4287
+ /**
4288
+ * Mode of the popover should be 'default' for internal use
4289
+ */
4290
+ "mode"?: 'default' | 'admin';
4291
+ /**
4292
+ * Emitted when the dismiss button is clicked.
4293
+ */
4294
+ "onLeDismiss"?: (event: LeTagCustomEvent<void>) => void;
4295
+ /**
4296
+ * The size of the tag.
4297
+ * @default 'medium'
4298
+ */
4299
+ "size"?: 'small' | 'medium' | 'large';
4300
+ /**
4301
+ * The visual variant of the tag.
4302
+ * @default 'default'
4303
+ */
4304
+ "variant"?: 'default' | 'primary' | 'success' | 'warning' | 'danger';
4305
+ }
1819
4306
  /**
1820
4307
  * A text component with rich text editing capabilities in admin mode.
1821
4308
  * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
@@ -1871,14 +4358,29 @@ declare namespace LocalJSX {
1871
4358
  "le-button": LeButton;
1872
4359
  "le-card": LeCard;
1873
4360
  "le-checkbox": LeCheckbox;
4361
+ "le-collapse": LeCollapse;
4362
+ "le-combobox": LeCombobox;
1874
4363
  "le-component": LeComponent;
4364
+ "le-current-heading": LeCurrentHeading;
4365
+ "le-dropdown-base": LeDropdownBase;
4366
+ "le-header": LeHeader;
4367
+ "le-header-placeholder": LeHeaderPlaceholder;
4368
+ "le-multiselect": LeMultiselect;
1875
4369
  "le-number-input": LeNumberInput;
1876
4370
  "le-popover": LePopover;
1877
4371
  "le-popup": LePopup;
1878
4372
  "le-round-progress": LeRoundProgress;
4373
+ "le-scroll-progress": LeScrollProgress;
4374
+ "le-segmented-control": LeSegmentedControl;
4375
+ "le-select": LeSelect;
1879
4376
  "le-slot": LeSlot;
1880
4377
  "le-stack": LeStack;
1881
4378
  "le-string-input": LeStringInput;
4379
+ "le-tab": LeTab;
4380
+ "le-tab-bar": LeTabBar;
4381
+ "le-tab-panel": LeTabPanel;
4382
+ "le-tabs": LeTabs;
4383
+ "le-tag": LeTag;
1882
4384
  "le-text": LeText;
1883
4385
  "le-turntable": LeTurntable;
1884
4386
  }
@@ -1909,6 +4411,8 @@ declare module "@stencil/core" {
1909
4411
  * @cssprop --le-button-padding-y - Button vertical padding
1910
4412
  * @csspart button - The native button element
1911
4413
  * @csspart content - The button content wrapper
4414
+ * @csspart icon-start - The start icon slot
4415
+ * @csspart icon-end - The end icon slot
1912
4416
  * @cmsEditable true
1913
4417
  * @cmsCategory Actions
1914
4418
  */
@@ -1938,6 +4442,40 @@ declare module "@stencil/core" {
1938
4442
  * @cssprop --le-checkbox-desc-color - Color of the description text
1939
4443
  */
1940
4444
  "le-checkbox": LocalJSX.LeCheckbox & JSXBase.HTMLAttributes<HTMLLeCheckboxElement>;
4445
+ /**
4446
+ * Animated show/hide wrapper.
4447
+ * Supports height collapse (auto->0) and/or fading.
4448
+ * Can optionally listen to the nearest `le-header` shrink events.
4449
+ * @cssprop --le-collapse-duration - Transition duration
4450
+ * @csspart region - Collapsible region
4451
+ * @csspart content - Inner content
4452
+ * @cmsEditable true
4453
+ * @cmsCategory Layout
4454
+ */
4455
+ "le-collapse": LocalJSX.LeCollapse & JSXBase.HTMLAttributes<HTMLLeCollapseElement>;
4456
+ /**
4457
+ * A combobox component with searchable dropdown.
4458
+ * Combines a text input with a dropdown list, allowing users to
4459
+ * filter options by typing or select from the list.
4460
+ * @cmsEditable true
4461
+ * @cmsCategory Form
4462
+ * @example Basic combobox
4463
+ * ```html
4464
+ * <le-combobox
4465
+ * placeholder="Search..."
4466
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
4467
+ * ></le-combobox>
4468
+ * ```
4469
+ * @example Allow custom values
4470
+ * ```html
4471
+ * <le-combobox
4472
+ * placeholder="Type or select..."
4473
+ * allow-custom
4474
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
4475
+ * ></le-combobox>
4476
+ * ```
4477
+ */
4478
+ "le-combobox": LocalJSX.LeCombobox & JSXBase.HTMLAttributes<HTMLLeComboboxElement>;
1941
4479
  /**
1942
4480
  * Component wrapper for admin mode editing.
1943
4481
  * This component is used internally by other components to provide admin-mode
@@ -1960,6 +4498,98 @@ declare module "@stencil/core" {
1960
4498
  * @cmsCategory System
1961
4499
  */
1962
4500
  "le-component": LocalJSX.LeComponent & JSXBase.HTMLAttributes<HTMLLeComponentElement>;
4501
+ /**
4502
+ * Shows a "smart" header title based on what has scrolled out of view.
4503
+ * When `selector` matches multiple elements, the title becomes the last element
4504
+ * (top-to-bottom) that has fully scrolled out above the viewport.
4505
+ * @csspart title - The rendered title
4506
+ * @cmsEditable true
4507
+ * @cmsCategory Layout
4508
+ */
4509
+ "le-current-heading": LocalJSX.LeCurrentHeading & JSXBase.HTMLAttributes<HTMLLeCurrentHeadingElement>;
4510
+ /**
4511
+ * Internal dropdown base component that provides shared functionality
4512
+ * for select, combobox, and multiselect components.
4513
+ * Wraps le-popover for positioning and provides:
4514
+ * - Option list rendering with groups
4515
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
4516
+ * - Option filtering support
4517
+ * - Single and multi-select modes
4518
+ * @cmsInternal true
4519
+ * @cmsCategory System
4520
+ */
4521
+ "le-dropdown-base": LocalJSX.LeDropdownBase & JSXBase.HTMLAttributes<HTMLLeDropdownBaseElement>;
4522
+ /**
4523
+ * A functional page header with scroll-aware behaviors.
4524
+ * Features:
4525
+ * - Static (default), sticky, or fixed positioning
4526
+ * - Optional shrink-on-scroll behavior via `shrink-offset`
4527
+ * - Optional reveal-on-scroll-up via `reveal-on-scroll` (sticky only)
4528
+ * Slots:
4529
+ * - `start`: left side (logo/back button)
4530
+ * - `title`: centered/primary title content
4531
+ * - `end`: right side actions
4532
+ * - default: extra content row (e.g., tabs/search) rendered below main row
4533
+ * @cssprop --le-header-bg - Background (color/gradient)
4534
+ * @cssprop --le-header-color - Text color
4535
+ * @cssprop --le-header-border - Border (e.g. 1px solid ...)
4536
+ * @cssprop --le-header-shadow - Shadow/elevation
4537
+ * @cssprop --le-header-max-width - Inner content max width
4538
+ * @cssprop --le-header-padding-x - Horizontal padding
4539
+ * @cssprop --le-header-padding-y - Vertical padding
4540
+ * @cssprop --le-header-gap - Gap between zones
4541
+ * @cssprop --le-header-height - Base height (main row)
4542
+ * @cssprop --le-header-height-condensed - Condensed height when shrunk
4543
+ * @cssprop --le-header-transition - Transition timing
4544
+ * @cssprop --le-header-z - Z-index (fixed mode)
4545
+ * @csspart header - The header container
4546
+ * @csspart inner - Inner max-width container
4547
+ * @csspart row - Main row
4548
+ * @csspart start - Start zone
4549
+ * @csspart title - Title zone
4550
+ * @csspart end - End zone
4551
+ * @csspart secondary - Secondary row
4552
+ * @cmsEditable true
4553
+ * @cmsCategory Layout
4554
+ */
4555
+ "le-header": LocalJSX.LeHeader & JSXBase.HTMLAttributes<HTMLLeHeaderElement>;
4556
+ /**
4557
+ * Placeholder for `le-header`.
4558
+ * Reserves space using the global CSS variable `--le-header-height`.
4559
+ * The header component updates that variable when it renders.
4560
+ * @cssprop --le-header-height - Published header height (px)
4561
+ * @cmsInternal true
4562
+ */
4563
+ "le-header-placeholder": LocalJSX.LeHeaderPlaceholder & JSXBase.HTMLAttributes<HTMLLeHeaderPlaceholderElement>;
4564
+ /**
4565
+ * A multiselect component for selecting multiple options.
4566
+ * Displays selected items as tags with optional search filtering.
4567
+ * @cmsEditable true
4568
+ * @cmsCategory Form
4569
+ * @example Basic multiselect
4570
+ * ```html
4571
+ * <le-multiselect
4572
+ * placeholder="Select options..."
4573
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
4574
+ * ></le-multiselect>
4575
+ * ```
4576
+ * @example With max selections
4577
+ * ```html
4578
+ * <le-multiselect
4579
+ * max-selections="3"
4580
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
4581
+ * ></le-multiselect>
4582
+ * ```
4583
+ * @example With search
4584
+ * ```html
4585
+ * <le-multiselect
4586
+ * searchable
4587
+ * placeholder="Search and select..."
4588
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
4589
+ * ></le-multiselect>
4590
+ * ```
4591
+ */
4592
+ "le-multiselect": LocalJSX.LeMultiselect & JSXBase.HTMLAttributes<HTMLLeMultiselectElement>;
1963
4593
  /**
1964
4594
  * A number input component with validation, keyboard controls, and custom spinners.
1965
4595
  * @cssprop --le-input-bg - Input background color
@@ -1975,6 +4605,8 @@ declare module "@stencil/core" {
1975
4605
  * A popover component for displaying floating content.
1976
4606
  * Uses the native HTML Popover API for proper layering with dialogs
1977
4607
  * and other top-layer elements. Falls back gracefully in older browsers.
4608
+ * @csspart trigger - The popover trigger element
4609
+ * @csspart content - The popover content wrapper
1978
4610
  * @cmsInternal true
1979
4611
  * @cmsCategory System
1980
4612
  */
@@ -1982,13 +4614,76 @@ declare module "@stencil/core" {
1982
4614
  /**
1983
4615
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
1984
4616
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
1985
- * and focus management. Can be used declaratively in HTML or programmatically
4617
+ * and focus management. Can be used declaratively in HTML or programmatically
1986
4618
  * via leAlert(), leConfirm(), lePrompt().
1987
4619
  * @cmsInternal true
1988
4620
  * @cmsCategory System
1989
4621
  */
1990
4622
  "le-popup": LocalJSX.LePopup & JSXBase.HTMLAttributes<HTMLLePopupElement>;
1991
4623
  "le-round-progress": LocalJSX.LeRoundProgress & JSXBase.HTMLAttributes<HTMLLeRoundProgressElement>;
4624
+ /**
4625
+ * Displays scroll progress as a simple bar.
4626
+ * If `track-scroll-progress` is present without a value, tracks the full document.
4627
+ * If it is a selector string, tracks progress within the matched element.
4628
+ * @cssprop --le-scroll-progress-height - Bar height
4629
+ * @cssprop --le-scroll-progress-bg - Track background
4630
+ * @cssprop --le-scroll-progress-fill - Fill color
4631
+ * @cssprop --le-scroll-progress-sticky-top - If sticky, stop position to parent top
4632
+ * @cssprop --le-scroll-progress-fixed-top - If fixed, distance from window top
4633
+ * @cssprop --le-scroll-progress-fixed-left - If fixed, distance from window left
4634
+ * @cssprop --le-scroll-progress-fixed-right - If fixed, distance from window right
4635
+ * @cssprop --le-scroll-progress-z - Z-index of the progress bar (1001 by default, above header)
4636
+ * @csspart track - Outer track
4637
+ * @csspart fill - Inner fill
4638
+ * @cmsEditable true
4639
+ * @cmsCategory Layout
4640
+ */
4641
+ "le-scroll-progress": LocalJSX.LeScrollProgress & JSXBase.HTMLAttributes<HTMLLeScrollProgressElement>;
4642
+ /**
4643
+ * A segmented control component (iOS-style toggle buttons).
4644
+ * Perfect for toggling between a small set of related options.
4645
+ * @cssprop --le-segmented-bg - Background color of the control
4646
+ * @cssprop --le-segmented-padding - Padding around segments
4647
+ * @cssprop --le-segmented-gap - Gap between segments
4648
+ * @cssprop --le-segmented-radius - Border radius of the control
4649
+ * @csspart container - The main container
4650
+ * @csspart segment - Individual segment buttons
4651
+ * @csspart segment-active - The currently active segment
4652
+ * @cmsEditable true
4653
+ * @cmsCategory Form
4654
+ */
4655
+ "le-segmented-control": LocalJSX.LeSegmentedControl & JSXBase.HTMLAttributes<HTMLLeSegmentedControlElement>;
4656
+ /**
4657
+ * A select dropdown component for single selection.
4658
+ * @cmsEditable true
4659
+ * @cmsCategory Form
4660
+ * @example Basic select
4661
+ * ```html
4662
+ * <le-select
4663
+ * placeholder="Choose an option"
4664
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
4665
+ * ></le-select>
4666
+ * ```
4667
+ * @example With icons
4668
+ * ```html
4669
+ * <le-select
4670
+ * options='[
4671
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
4672
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
4673
+ * ]'
4674
+ * ></le-select>
4675
+ * ```
4676
+ * @example Grouped options
4677
+ * ```html
4678
+ * <le-select
4679
+ * options='[
4680
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
4681
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
4682
+ * ]'
4683
+ * ></le-select>
4684
+ * ```
4685
+ */
4686
+ "le-select": LocalJSX.LeSelect & JSXBase.HTMLAttributes<HTMLLeSelectElement>;
1992
4687
  /**
1993
4688
  * Slot placeholder component for admin/CMS mode.
1994
4689
  * This component renders a visual placeholder for slots when in admin mode,
@@ -2019,6 +4714,99 @@ declare module "@stencil/core" {
2019
4714
  * @cssprop --le-input-padding - Input padding
2020
4715
  */
2021
4716
  "le-string-input": LocalJSX.LeStringInput & JSXBase.HTMLAttributes<HTMLLeStringInputElement>;
4717
+ /**
4718
+ * A flexible tab component with multiple variants and states.
4719
+ * @cssprop --le-tab-bg - Tab background color
4720
+ * @cssprop --le-tab-color - Tab text color
4721
+ * @cssprop --le-tab-border-radius - Tab border radius
4722
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
4723
+ * @cssprop --le-tab-padding-y - Tab vertical padding
4724
+ * @csspart button - The native button element
4725
+ * @csspart content - The tab content wrapper
4726
+ * @csspart icon-start - The start icon slot
4727
+ * @csspart icon-end - The end icon slot
4728
+ * @cmsEditable true
4729
+ * @cmsCategory Actions
4730
+ */
4731
+ "le-tab": LocalJSX.LeTab & JSXBase.HTMLAttributes<HTMLLeTabElement>;
4732
+ /**
4733
+ * A presentational tab bar component without panels.
4734
+ * Use this for navigation/routing scenarios where you manage the content
4735
+ * externally based on the selection events. For tabs with built-in panels,
4736
+ * use `le-tabs` instead.
4737
+ * @cssprop --le-tab-bar-border-color - Border color
4738
+ * @cssprop --le-tab-bar-gap - Gap between tabs
4739
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
4740
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
4741
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
4742
+ * @csspart tablist - The tab button container
4743
+ * @csspart tab - Individual tab buttons
4744
+ * @csspart tab-active - The currently active tab
4745
+ * @cmsEditable true
4746
+ * @cmsCategory Navigation
4747
+ */
4748
+ "le-tab-bar": LocalJSX.LeTabBar & JSXBase.HTMLAttributes<HTMLLeTabBarElement>;
4749
+ /**
4750
+ * A tab panel component used as a child of le-tabs.
4751
+ * Each le-tab-panel defines both the tab button label and the panel content.
4752
+ * The parent le-tabs component automatically reads these panels and creates
4753
+ * the tab interface.
4754
+ * @cmsEditable true
4755
+ * @cmsCategory Navigation
4756
+ */
4757
+ "le-tab-panel": LocalJSX.LeTabPanel & JSXBase.HTMLAttributes<HTMLLeTabPanelElement>;
4758
+ /**
4759
+ * A flexible tabs component for organizing content into tabbed panels.
4760
+ * Supports two modes:
4761
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
4762
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
4763
+ * Full keyboard navigation and ARIA support included.
4764
+ * @cssprop --le-tabs-border-color - Border color for tab list
4765
+ * @cssprop --le-tabs-gap - Gap between tabs
4766
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
4767
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
4768
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
4769
+ * @csspart tablist - The tab button container (role="tablist")
4770
+ * @csspart tab - Individual tab buttons
4771
+ * @csspart tab-active - The currently active tab
4772
+ * @csspart panels - Container for panel content
4773
+ * @csspart panel - Individual panel containers
4774
+ * @cmsEditable true
4775
+ * @cmsCategory Navigation
4776
+ */
4777
+ "le-tabs": LocalJSX.LeTabs & JSXBase.HTMLAttributes<HTMLLeTabsElement>;
4778
+ /**
4779
+ * A tag/chip component for displaying labels with optional dismiss functionality.
4780
+ * @cmsEditable false
4781
+ * @cmsCategory Form
4782
+ * @example Basic tag
4783
+ * ```html
4784
+ * <le-tag label="JavaScript"></le-tag>
4785
+ * ```
4786
+ * @example Dismissible tag
4787
+ * ```html
4788
+ * <le-tag label="Remove me" dismissible></le-tag>
4789
+ * ```
4790
+ * @example With icon
4791
+ * ```html
4792
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
4793
+ * ```
4794
+ * @example Different sizes
4795
+ * ```html
4796
+ * <le-tag label="Small" size="small"></le-tag>
4797
+ * <le-tag label="Medium" size="medium"></le-tag>
4798
+ * <le-tag label="Large" size="large"></le-tag>
4799
+ * ```
4800
+ * @example Different variants
4801
+ * ```html
4802
+ * <le-tag label="Default" variant="default"></le-tag>
4803
+ * <le-tag label="Primary" variant="primary"></le-tag>
4804
+ * <le-tag label="Success" variant="success"></le-tag>
4805
+ * <le-tag label="Warning" variant="warning"></le-tag>
4806
+ * <le-tag label="Danger" variant="danger"></le-tag>
4807
+ * ```
4808
+ */
4809
+ "le-tag": LocalJSX.LeTag & JSXBase.HTMLAttributes<HTMLLeTagElement>;
2022
4810
  /**
2023
4811
  * A text component with rich text editing capabilities in admin mode.
2024
4812
  * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)