le-kit 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/dist/{core/cjs/index-B0mg71He.js → cjs/index-C3iQZ-Ja.js} +10 -3
  2. package/dist/cjs/index-C3iQZ-Ja.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-component.le-popover.le-popup.le-slot.le-string-input.entry.cjs.js.map +1 -0
  8. package/dist/cjs/le-button_7.cjs.entry.js +1452 -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-dropdown-base.cjs.entry.js +348 -0
  14. package/dist/cjs/le-dropdown-base.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/cjs/le-select.cjs.entry.js +188 -0
  25. package/dist/cjs/le-select.entry.cjs.js.map +1 -0
  26. package/dist/{core/cjs → cjs}/le-stack.cjs.entry.js +4 -4
  27. package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
  28. package/dist/cjs/le-tab-bar.cjs.entry.js +242 -0
  29. package/dist/cjs/le-tab-bar.entry.cjs.js.map +1 -0
  30. package/dist/cjs/le-tab-panel.cjs.entry.js +100 -0
  31. package/dist/cjs/le-tab-panel.entry.cjs.js.map +1 -0
  32. package/dist/cjs/le-tab.cjs.entry.js +133 -0
  33. package/dist/cjs/le-tab.entry.cjs.js.map +1 -0
  34. package/dist/cjs/le-tabs.cjs.entry.js +307 -0
  35. package/dist/cjs/le-tabs.entry.cjs.js.map +1 -0
  36. package/dist/cjs/le-tag.cjs.entry.js +68 -0
  37. package/dist/cjs/le-tag.entry.cjs.js.map +1 -0
  38. package/dist/{core/cjs → cjs}/le-text.cjs.entry.js +3 -3
  39. package/dist/cjs/le-text.entry.cjs.js.map +1 -0
  40. package/dist/{core/cjs → cjs}/le-turntable.cjs.entry.js +2 -2
  41. package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
  42. package/dist/cjs/loader.cjs.js +13 -0
  43. package/dist/{core/cjs/utils-jdqP71LP.js → cjs/utils-DjPcLPN9.js} +3 -3
  44. package/dist/cjs/utils-DjPcLPN9.js.map +1 -0
  45. package/dist/{core/collection → collection}/collection-manifest.json +12 -0
  46. package/dist/{core/collection → collection}/components/le-box/le-box.js +1 -1
  47. package/dist/collection/components/le-box/le-box.js.map +1 -0
  48. package/dist/{core/collection/components/le-button/le-button.default.css → collection/components/le-button/le-button.css} +65 -38
  49. package/dist/{core/collection → collection}/components/le-button/le-button.js +106 -16
  50. package/dist/collection/components/le-button/le-button.js.map +1 -0
  51. package/dist/{core/collection → collection}/components/le-card/le-card.default.css +6 -6
  52. package/dist/{core/collection → collection}/components/le-card/le-card.js +2 -2
  53. package/dist/collection/components/le-card/le-card.js.map +1 -0
  54. package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.js +2 -2
  55. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  56. package/dist/collection/components/le-combobox/le-combobox.css +144 -0
  57. package/dist/collection/components/le-combobox/le-combobox.js +659 -0
  58. package/dist/collection/components/le-combobox/le-combobox.js.map +1 -0
  59. package/dist/collection/components/le-component/le-component.css +189 -0
  60. package/dist/{le-kit/le-component.entry.js → collection/components/le-component/le-component.js} +136 -16
  61. package/dist/collection/components/le-component/le-component.js.map +1 -0
  62. package/dist/collection/components/le-dropdown-base/le-dropdown-base.css +163 -0
  63. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +761 -0
  64. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -0
  65. package/dist/collection/components/le-multiselect/le-multiselect.css +163 -0
  66. package/dist/collection/components/le-multiselect/le-multiselect.js +734 -0
  67. package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -0
  68. package/dist/{core/collection → collection}/components/le-number-input/le-number-input.js +2 -2
  69. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
  70. package/dist/{core/collection → collection}/components/le-popover/le-popover.css +10 -0
  71. package/dist/{core/collection → collection}/components/le-popover/le-popover.js +61 -10
  72. package/dist/collection/components/le-popover/le-popover.js.map +1 -0
  73. package/dist/{core/collection → collection}/components/le-popup/le-popup.api.js +2 -1
  74. package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
  75. package/dist/{core/collection → collection}/components/le-popup/le-popup.js +49 -19
  76. package/dist/collection/components/le-popup/le-popup.js.map +1 -0
  77. package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.js +1 -1
  78. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  79. package/dist/collection/components/le-segmented-control/le-segmented-control.css +78 -0
  80. package/dist/collection/components/le-segmented-control/le-segmented-control.js +445 -0
  81. package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -0
  82. package/dist/collection/components/le-select/le-select.css +121 -0
  83. package/dist/collection/components/le-select/le-select.js +578 -0
  84. package/dist/collection/components/le-select/le-select.js.map +1 -0
  85. package/dist/collection/components/le-slot/le-slot.default.css +222 -0
  86. package/dist/{le-kit/le-slot.entry.js → collection/components/le-slot/le-slot.js} +268 -17
  87. package/dist/collection/components/le-slot/le-slot.js.map +1 -0
  88. package/dist/{core/collection → collection}/components/le-stack/le-stack.js +2 -2
  89. package/dist/collection/components/le-stack/le-stack.js.map +1 -0
  90. package/dist/{core/collection → collection}/components/le-string-input/le-string-input.css +1 -1
  91. package/dist/{core/collection → collection}/components/le-string-input/le-string-input.js +60 -6
  92. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
  93. package/dist/collection/components/le-tab/le-tab.css +289 -0
  94. package/dist/collection/components/le-tab/le-tab.js +565 -0
  95. package/dist/collection/components/le-tab/le-tab.js.map +1 -0
  96. package/dist/collection/components/le-tab-bar/le-tab-bar.css +89 -0
  97. package/dist/collection/components/le-tab-bar/le-tab-bar.js +467 -0
  98. package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -0
  99. package/dist/collection/components/le-tab-panel/le-tab-panel.css +30 -0
  100. package/dist/collection/components/le-tab-panel/le-tab-panel.js +302 -0
  101. package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -0
  102. package/dist/collection/components/le-tabs/le-tabs.css +146 -0
  103. package/dist/collection/components/le-tabs/le-tabs.js +588 -0
  104. package/dist/collection/components/le-tabs/le-tabs.js.map +1 -0
  105. package/dist/collection/components/le-tag/le-tag.css +139 -0
  106. package/dist/collection/components/le-tag/le-tag.js +266 -0
  107. package/dist/collection/components/le-tag/le-tag.js.map +1 -0
  108. package/dist/{core/collection → collection}/components/le-text/le-text.js +1 -1
  109. package/dist/collection/components/le-text/le-text.js.map +1 -0
  110. package/dist/{core/collection → collection}/components/le-turntable/le-turntable.js +1 -1
  111. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
  112. package/dist/collection/dist/components/assets/.gitkeep +1 -0
  113. package/dist/{le-kit → collection/dist/components}/assets/custom-elements.json +5064 -1199
  114. package/dist/collection/dist/components/themes/base.css +133 -0
  115. package/dist/collection/dist/components/themes/dark.css +103 -0
  116. package/dist/collection/dist/components/themes/default.css +111 -0
  117. package/dist/collection/dist/components/themes/gradient.css +103 -0
  118. package/dist/collection/dist/components/themes/index.css +415 -0
  119. package/dist/collection/dist/components/themes/minimal.css +103 -0
  120. package/dist/collection/dist/components/themes/warm.css +103 -0
  121. package/dist/collection/global/app.js.map +1 -0
  122. package/dist/collection/index.js.map +1 -0
  123. package/dist/collection/types/blocks.js.map +1 -0
  124. package/dist/collection/types/options.js.map +1 -0
  125. package/dist/collection/utils/utils.js.map +1 -0
  126. package/dist/components/assets/.gitkeep +1 -0
  127. package/dist/components/assets/custom-elements.json +8170 -0
  128. package/dist/components/index.js +11 -0
  129. package/dist/components/index.js.map +1 -0
  130. package/dist/{core/components → components}/le-box.js +11 -6
  131. package/dist/components/le-box.js.map +1 -0
  132. package/dist/{core/components → components}/le-button.js +1 -1
  133. package/dist/{core/components → components}/le-button2.js +371 -35
  134. package/dist/components/le-button2.js.map +1 -0
  135. package/dist/{core/components → components}/le-card.js +11 -6
  136. package/dist/components/le-card.js.map +1 -0
  137. package/dist/{core/components → components}/le-checkbox.js +1 -1
  138. package/dist/components/le-combobox.d.ts +11 -0
  139. package/dist/components/le-combobox.js +321 -0
  140. package/dist/components/le-combobox.js.map +1 -0
  141. package/dist/{core/components → components}/le-component.js +1 -1
  142. package/dist/components/le-dropdown-base.d.ts +11 -0
  143. package/dist/components/le-dropdown-base.js +9 -0
  144. package/dist/components/le-dropdown-base.js.map +1 -0
  145. package/dist/components/le-dropdown-base2.js +393 -0
  146. package/dist/components/le-dropdown-base2.js.map +1 -0
  147. package/dist/components/le-multiselect.d.ts +11 -0
  148. package/dist/components/le-multiselect.js +400 -0
  149. package/dist/components/le-multiselect.js.map +1 -0
  150. package/dist/{core/components → components}/le-number-input.js +12 -7
  151. package/dist/components/le-number-input.js.map +1 -0
  152. package/dist/{core/components → components}/le-popover2.js +24 -11
  153. package/dist/components/le-popover2.js.map +1 -0
  154. package/dist/{core/components/index.js → components/le-popup.api.js} +5 -12
  155. package/dist/components/le-popup.api.js.map +1 -0
  156. package/dist/components/le-popup.js +9 -0
  157. package/dist/components/le-popup.js.map +1 -0
  158. package/dist/{core/components → components}/le-round-progress.js +1 -1
  159. package/dist/components/le-segmented-control.d.ts +11 -0
  160. package/dist/components/le-segmented-control.js +320 -0
  161. package/dist/components/le-segmented-control.js.map +1 -0
  162. package/dist/components/le-select.d.ts +11 -0
  163. package/dist/components/le-select.js +271 -0
  164. package/dist/components/le-select.js.map +1 -0
  165. package/dist/{core/components → components}/le-slot.js +1 -1
  166. package/dist/{core/components → components}/le-stack.js +12 -7
  167. package/dist/components/le-stack.js.map +1 -0
  168. package/dist/{core/components → components}/le-string-input.js +1 -1
  169. package/dist/components/le-tab-bar.d.ts +11 -0
  170. package/dist/components/le-tab-bar.js +319 -0
  171. package/dist/components/le-tab-bar.js.map +1 -0
  172. package/dist/components/le-tab-panel.d.ts +11 -0
  173. package/dist/components/le-tab-panel.js +171 -0
  174. package/dist/components/le-tab-panel.js.map +1 -0
  175. package/dist/components/le-tab.d.ts +11 -0
  176. package/dist/components/le-tab.js +9 -0
  177. package/dist/components/le-tab.js.map +1 -0
  178. package/dist/components/le-tab2.js +206 -0
  179. package/dist/components/le-tab2.js.map +1 -0
  180. package/dist/components/le-tabs.d.ts +11 -0
  181. package/dist/components/le-tabs.js +386 -0
  182. package/dist/components/le-tabs.js.map +1 -0
  183. package/dist/components/le-tag.d.ts +11 -0
  184. package/dist/components/le-tag.js +9 -0
  185. package/dist/components/le-tag.js.map +1 -0
  186. package/dist/components/le-tag2.js +130 -0
  187. package/dist/components/le-tag2.js.map +1 -0
  188. package/dist/{core/components → components}/le-text.js +11 -6
  189. package/dist/components/le-text.js.map +1 -0
  190. package/dist/{core/components → components}/le-turntable.js +1 -1
  191. package/dist/components/themes/base.css +44 -0
  192. package/dist/components/themes/dark.css +4 -1
  193. package/dist/components/themes/default.css +4 -1
  194. package/dist/components/themes/gradient.css +4 -1
  195. package/dist/components/themes/index.css +2 -0
  196. package/dist/components/themes/minimal.css +4 -1
  197. package/dist/components/themes/warm.css +4 -1
  198. package/dist/docs.d.ts +443 -0
  199. package/dist/docs.json +10488 -0
  200. package/dist/{core/esm/index-SKsXnjWI.js → esm/index-DzgCnDLJ.js} +10 -4
  201. package/dist/esm/index-DzgCnDLJ.js.map +1 -0
  202. package/dist/{core/esm → esm}/index.js +4 -3
  203. package/dist/esm/index.js.map +1 -0
  204. package/dist/{le-kit → esm}/le-box.entry.js +3 -3
  205. package/dist/esm/le-box.entry.js.map +1 -0
  206. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-popup.le-slot.le-string-input.entry.js.map +1 -0
  207. package/dist/esm/le-button_7.entry.js +1444 -0
  208. package/dist/{le-kit → esm}/le-card.entry.js +3 -3
  209. package/dist/esm/le-card.entry.js.map +1 -0
  210. package/dist/esm/le-combobox.entry.js +235 -0
  211. package/dist/esm/le-combobox.entry.js.map +1 -0
  212. package/dist/esm/le-dropdown-base.entry.js +346 -0
  213. package/dist/esm/le-dropdown-base.entry.js.map +1 -0
  214. package/dist/esm/le-kit.js +21 -0
  215. package/dist/esm/le-multiselect.entry.js +304 -0
  216. package/dist/esm/le-multiselect.entry.js.map +1 -0
  217. package/dist/{le-kit → esm}/le-number-input.entry.js +6 -6
  218. package/dist/esm/le-number-input.entry.js.map +1 -0
  219. package/dist/{core/esm → esm}/le-round-progress.entry.js +2 -2
  220. package/dist/esm/le-round-progress.entry.js.map +1 -0
  221. package/dist/esm/le-segmented-control.entry.js +243 -0
  222. package/dist/esm/le-segmented-control.entry.js.map +1 -0
  223. package/dist/esm/le-select.entry.js +186 -0
  224. package/dist/esm/le-select.entry.js.map +1 -0
  225. package/dist/{le-kit → esm}/le-stack.entry.js +4 -4
  226. package/dist/esm/le-stack.entry.js.map +1 -0
  227. package/dist/esm/le-tab-bar.entry.js +240 -0
  228. package/dist/esm/le-tab-bar.entry.js.map +1 -0
  229. package/dist/esm/le-tab-panel.entry.js +98 -0
  230. package/dist/esm/le-tab-panel.entry.js.map +1 -0
  231. package/dist/esm/le-tab.entry.js +131 -0
  232. package/dist/esm/le-tab.entry.js.map +1 -0
  233. package/dist/esm/le-tabs.entry.js +305 -0
  234. package/dist/esm/le-tabs.entry.js.map +1 -0
  235. package/dist/esm/le-tag.entry.js +66 -0
  236. package/dist/esm/le-tag.entry.js.map +1 -0
  237. package/dist/{le-kit → esm}/le-text.entry.js +3 -3
  238. package/dist/esm/le-text.entry.js.map +1 -0
  239. package/dist/{core/esm → esm}/le-turntable.entry.js +2 -2
  240. package/dist/esm/le-turntable.entry.js.map +1 -0
  241. package/dist/esm/loader.js +11 -0
  242. package/dist/{le-kit/utils-cwSNy7ZS.js → esm/utils-Dp5xFMCl.js} +3 -3
  243. package/dist/{le-kit/utils-cwSNy7ZS.js.map → esm/utils-Dp5xFMCl.js.map} +1 -1
  244. package/dist/le-kit/dist/components/assets/.gitkeep +1 -0
  245. package/dist/le-kit/dist/components/assets/custom-elements.json +8170 -0
  246. package/dist/le-kit/dist/components/themes/base.css +44 -0
  247. package/dist/le-kit/dist/components/themes/dark.css +4 -1
  248. package/dist/le-kit/dist/components/themes/default.css +4 -1
  249. package/dist/le-kit/dist/components/themes/gradient.css +4 -1
  250. package/dist/le-kit/dist/components/themes/index.css +2 -0
  251. package/dist/le-kit/dist/components/themes/minimal.css +4 -1
  252. package/dist/le-kit/dist/components/themes/warm.css +4 -1
  253. package/dist/le-kit/index.esm.js +2 -116
  254. package/dist/le-kit/index.esm.js.map +1 -1
  255. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-popup.le-slot.le-string-input.entry.esm.js.map +1 -0
  256. package/dist/le-kit/le-combobox.entry.esm.js.map +1 -0
  257. package/dist/le-kit/le-dropdown-base.entry.esm.js.map +1 -0
  258. package/dist/le-kit/le-kit.css +1 -1010
  259. package/dist/le-kit/le-kit.esm.js +2 -48
  260. package/dist/le-kit/le-kit.esm.js.map +1 -1
  261. package/dist/le-kit/le-multiselect.entry.esm.js.map +1 -0
  262. package/dist/le-kit/le-segmented-control.entry.esm.js.map +1 -0
  263. package/dist/le-kit/le-select.entry.esm.js.map +1 -0
  264. package/dist/le-kit/le-tab-bar.entry.esm.js.map +1 -0
  265. package/dist/le-kit/le-tab-panel.entry.esm.js.map +1 -0
  266. package/dist/le-kit/le-tab.entry.esm.js.map +1 -0
  267. package/dist/le-kit/le-tabs.entry.esm.js.map +1 -0
  268. package/dist/le-kit/le-tag.entry.esm.js.map +1 -0
  269. package/dist/{core/le-kit/p-55f70091.entry.js → le-kit/p-0bd7803f.entry.js} +2 -2
  270. package/dist/le-kit/p-0bd7803f.entry.js.map +1 -0
  271. package/dist/le-kit/p-1f55a4a2.entry.js +2 -0
  272. package/dist/le-kit/p-1f55a4a2.entry.js.map +1 -0
  273. package/dist/{core/le-kit/p-a9d05ef6.entry.js → le-kit/p-2c37f174.entry.js} +2 -2
  274. package/dist/le-kit/p-2c37f174.entry.js.map +1 -0
  275. package/dist/{core/le-kit/p-6e414a5c.entry.js → le-kit/p-33612923.entry.js} +2 -2
  276. package/dist/le-kit/p-33612923.entry.js.map +1 -0
  277. package/dist/le-kit/p-3a52c4de.entry.js +2 -0
  278. package/dist/le-kit/p-3a52c4de.entry.js.map +1 -0
  279. package/dist/le-kit/p-4130c60b.entry.js +2 -0
  280. package/dist/le-kit/p-4130c60b.entry.js.map +1 -0
  281. package/dist/le-kit/p-432e8231.entry.js +2 -0
  282. package/dist/le-kit/p-432e8231.entry.js.map +1 -0
  283. package/dist/le-kit/p-548d130b.entry.js +2 -0
  284. package/dist/le-kit/p-548d130b.entry.js.map +1 -0
  285. package/dist/le-kit/p-6ecdad85.entry.js +2 -0
  286. package/dist/le-kit/p-6ecdad85.entry.js.map +1 -0
  287. package/dist/le-kit/p-6ee06c44.entry.js +2 -0
  288. package/dist/le-kit/p-6ee06c44.entry.js.map +1 -0
  289. package/dist/le-kit/p-71c78784.entry.js +2 -0
  290. package/dist/le-kit/p-71c78784.entry.js.map +1 -0
  291. package/dist/le-kit/p-7b180d58.entry.js +2 -0
  292. package/dist/le-kit/p-7b180d58.entry.js.map +1 -0
  293. package/dist/le-kit/p-91993261.entry.js +2 -0
  294. package/dist/le-kit/p-91993261.entry.js.map +1 -0
  295. package/dist/{core/le-kit/p--VxUdzYV.js → le-kit/p-DaA5gINj.js} +2 -2
  296. package/dist/le-kit/p-DaA5gINj.js.map +1 -0
  297. package/dist/le-kit/p-DzgCnDLJ.js +3 -0
  298. package/dist/le-kit/p-DzgCnDLJ.js.map +1 -0
  299. package/dist/le-kit/p-a5d31d40.entry.js +2 -0
  300. package/dist/le-kit/p-a5d31d40.entry.js.map +1 -0
  301. package/dist/{core/le-kit/p-4f133e72.entry.js → le-kit/p-b66fd9e1.entry.js} +2 -2
  302. package/dist/le-kit/p-b66fd9e1.entry.js.map +1 -0
  303. package/dist/le-kit/p-beb87e61.entry.js +2 -0
  304. package/dist/le-kit/p-beb87e61.entry.js.map +1 -0
  305. package/dist/le-kit/p-cc0797b0.entry.js +2 -0
  306. package/dist/le-kit/p-cc0797b0.entry.js.map +1 -0
  307. package/dist/le-kit/p-d504a369.entry.js +2 -0
  308. package/dist/le-kit/p-d504a369.entry.js.map +1 -0
  309. package/dist/themes/base.css +133 -0
  310. package/dist/themes/dark.css +103 -0
  311. package/dist/themes/default.css +111 -0
  312. package/dist/themes/gradient.css +103 -0
  313. package/dist/themes/index.css +415 -0
  314. package/dist/themes/minimal.css +103 -0
  315. package/dist/themes/warm.css +103 -0
  316. package/dist/types/components/le-button/le-button.d.ts +19 -4
  317. package/dist/types/components/le-combobox/le-combobox.d.ts +128 -0
  318. package/dist/types/components/le-dropdown-base/le-dropdown-base.d.ts +118 -0
  319. package/dist/types/components/le-multiselect/le-multiselect.d.ts +143 -0
  320. package/dist/types/components/le-popover/le-popover.d.ts +13 -2
  321. package/dist/types/components/le-popup/le-popup.d.ts +5 -0
  322. package/dist/types/components/le-segmented-control/le-segmented-control.d.ts +82 -0
  323. package/dist/types/components/le-select/le-select.d.ts +125 -0
  324. package/dist/types/components/le-string-input/le-string-input.d.ts +8 -0
  325. package/dist/types/components/le-tab/le-tab.d.ts +116 -0
  326. package/dist/types/components/le-tab-bar/le-tab-bar.d.ts +88 -0
  327. package/dist/types/components/le-tab-panel/le-tab-panel.d.ts +75 -0
  328. package/dist/types/components/le-tabs/le-tabs.d.ts +108 -0
  329. package/dist/types/components/le-tag/le-tag.d.ts +78 -0
  330. package/dist/types/components.d.ts +2310 -40
  331. package/dist/types/types/options.d.ts +9 -0
  332. package/package.json +3 -18
  333. package/dist/core/cjs/index-B0mg71He.js.map +0 -1
  334. package/dist/core/cjs/index.cjs.js.map +0 -1
  335. package/dist/core/cjs/le-box.entry.cjs.js.map +0 -1
  336. package/dist/core/cjs/le-button.cjs.entry.js +0 -92
  337. package/dist/core/cjs/le-button.entry.cjs.js.map +0 -1
  338. package/dist/core/cjs/le-card.cjs.entry.js +0 -29
  339. package/dist/core/cjs/le-card.entry.cjs.js.map +0 -1
  340. package/dist/core/cjs/le-checkbox.cjs.entry.js +0 -61
  341. package/dist/core/cjs/le-checkbox.entry.cjs.js.map +0 -1
  342. package/dist/core/cjs/le-kit.cjs.js +0 -25
  343. package/dist/core/cjs/le-number-input.entry.cjs.js.map +0 -1
  344. package/dist/core/cjs/le-popover.cjs.entry.js +0 -348
  345. package/dist/core/cjs/le-popover.entry.cjs.js.map +0 -1
  346. package/dist/core/cjs/le-popup.cjs.entry.js +0 -212
  347. package/dist/core/cjs/le-popup.entry.cjs.js.map +0 -1
  348. package/dist/core/cjs/le-round-progress.entry.cjs.js.map +0 -1
  349. package/dist/core/cjs/le-stack.entry.cjs.js.map +0 -1
  350. package/dist/core/cjs/le-string-input.cjs.entry.js +0 -95
  351. package/dist/core/cjs/le-string-input.entry.cjs.js.map +0 -1
  352. package/dist/core/cjs/le-text.entry.cjs.js.map +0 -1
  353. package/dist/core/cjs/le-turntable.entry.cjs.js.map +0 -1
  354. package/dist/core/cjs/loader.cjs.js +0 -13
  355. package/dist/core/cjs/utils-jdqP71LP.js.map +0 -1
  356. package/dist/core/collection/components/le-box/le-box.js.map +0 -1
  357. package/dist/core/collection/components/le-button/le-button.js.map +0 -1
  358. package/dist/core/collection/components/le-card/le-card.js.map +0 -1
  359. package/dist/core/collection/components/le-checkbox/le-checkbox.js.map +0 -1
  360. package/dist/core/collection/components/le-number-input/le-number-input.js.map +0 -1
  361. package/dist/core/collection/components/le-popover/le-popover.js.map +0 -1
  362. package/dist/core/collection/components/le-popup/le-popup.api.js.map +0 -1
  363. package/dist/core/collection/components/le-popup/le-popup.js.map +0 -1
  364. package/dist/core/collection/components/le-round-progress/le-round-progress.js.map +0 -1
  365. package/dist/core/collection/components/le-stack/le-stack.js.map +0 -1
  366. package/dist/core/collection/components/le-string-input/le-string-input.js.map +0 -1
  367. package/dist/core/collection/components/le-text/le-text.js.map +0 -1
  368. package/dist/core/collection/components/le-turntable/le-turntable.js.map +0 -1
  369. package/dist/core/collection/global/app.js.map +0 -1
  370. package/dist/core/collection/index.js.map +0 -1
  371. package/dist/core/collection/types/blocks.js.map +0 -1
  372. package/dist/core/collection/types/options.js.map +0 -1
  373. package/dist/core/collection/utils/utils.js.map +0 -1
  374. package/dist/core/components/index.d.ts +0 -33
  375. package/dist/core/components/index.js.map +0 -1
  376. package/dist/core/components/le-box.d.ts +0 -11
  377. package/dist/core/components/le-box.js.map +0 -1
  378. package/dist/core/components/le-button.d.ts +0 -11
  379. package/dist/core/components/le-button2.js.map +0 -1
  380. package/dist/core/components/le-card.d.ts +0 -11
  381. package/dist/core/components/le-card.js.map +0 -1
  382. package/dist/core/components/le-checkbox.d.ts +0 -11
  383. package/dist/core/components/le-component.d.ts +0 -11
  384. package/dist/core/components/le-number-input.d.ts +0 -11
  385. package/dist/core/components/le-number-input.js.map +0 -1
  386. package/dist/core/components/le-popover.d.ts +0 -11
  387. package/dist/core/components/le-popover2.js.map +0 -1
  388. package/dist/core/components/le-popup.d.ts +0 -11
  389. package/dist/core/components/le-popup.js +0 -279
  390. package/dist/core/components/le-popup.js.map +0 -1
  391. package/dist/core/components/le-round-progress.d.ts +0 -11
  392. package/dist/core/components/le-slot.d.ts +0 -11
  393. package/dist/core/components/le-stack.d.ts +0 -11
  394. package/dist/core/components/le-stack.js.map +0 -1
  395. package/dist/core/components/le-string-input.d.ts +0 -11
  396. package/dist/core/components/le-text.d.ts +0 -11
  397. package/dist/core/components/le-text.js.map +0 -1
  398. package/dist/core/components/le-turntable.d.ts +0 -11
  399. package/dist/core/esm/index-SKsXnjWI.js.map +0 -1
  400. package/dist/core/esm/index.js.map +0 -1
  401. package/dist/core/esm/le-box.entry.js +0 -182
  402. package/dist/core/esm/le-box.entry.js.map +0 -1
  403. package/dist/core/esm/le-button.entry.js +0 -90
  404. package/dist/core/esm/le-button.entry.js.map +0 -1
  405. package/dist/core/esm/le-card.entry.js +0 -27
  406. package/dist/core/esm/le-card.entry.js.map +0 -1
  407. package/dist/core/esm/le-checkbox.entry.js +0 -59
  408. package/dist/core/esm/le-checkbox.entry.js.map +0 -1
  409. package/dist/core/esm/le-kit.js +0 -21
  410. package/dist/core/esm/le-number-input.entry.js +0 -200
  411. package/dist/core/esm/le-number-input.entry.js.map +0 -1
  412. package/dist/core/esm/le-popover.entry.js +0 -346
  413. package/dist/core/esm/le-popover.entry.js.map +0 -1
  414. package/dist/core/esm/le-popup.entry.js +0 -210
  415. package/dist/core/esm/le-popup.entry.js.map +0 -1
  416. package/dist/core/esm/le-round-progress.entry.js.map +0 -1
  417. package/dist/core/esm/le-stack.entry.js +0 -133
  418. package/dist/core/esm/le-stack.entry.js.map +0 -1
  419. package/dist/core/esm/le-string-input.entry.js +0 -93
  420. package/dist/core/esm/le-string-input.entry.js.map +0 -1
  421. package/dist/core/esm/le-text.entry.js +0 -333
  422. package/dist/core/esm/le-text.entry.js.map +0 -1
  423. package/dist/core/esm/le-turntable.entry.js.map +0 -1
  424. package/dist/core/esm/loader.js +0 -11
  425. package/dist/core/esm/utils-DZdP1JiG.js +0 -146
  426. package/dist/core/esm/utils-DZdP1JiG.js.map +0 -1
  427. package/dist/core/le-kit/index.esm.js +0 -2
  428. package/dist/core/le-kit/index.esm.js.map +0 -1
  429. package/dist/core/le-kit/le-box.entry.esm.js.map +0 -1
  430. package/dist/core/le-kit/le-button.entry.esm.js.map +0 -1
  431. package/dist/core/le-kit/le-card.entry.esm.js.map +0 -1
  432. package/dist/core/le-kit/le-checkbox.entry.esm.js.map +0 -1
  433. package/dist/core/le-kit/le-kit.css +0 -1
  434. package/dist/core/le-kit/le-kit.esm.js +0 -2
  435. package/dist/core/le-kit/le-kit.esm.js.map +0 -1
  436. package/dist/core/le-kit/le-number-input.entry.esm.js.map +0 -1
  437. package/dist/core/le-kit/le-popover.entry.esm.js.map +0 -1
  438. package/dist/core/le-kit/le-popup.entry.esm.js.map +0 -1
  439. package/dist/core/le-kit/le-round-progress.entry.esm.js.map +0 -1
  440. package/dist/core/le-kit/le-stack.entry.esm.js.map +0 -1
  441. package/dist/core/le-kit/le-string-input.entry.esm.js.map +0 -1
  442. package/dist/core/le-kit/le-text.entry.esm.js.map +0 -1
  443. package/dist/core/le-kit/le-turntable.entry.esm.js.map +0 -1
  444. package/dist/core/le-kit/loader.esm.js.map +0 -1
  445. package/dist/core/le-kit/p--VxUdzYV.js.map +0 -1
  446. package/dist/core/le-kit/p-189cb775.entry.js +0 -2
  447. package/dist/core/le-kit/p-189cb775.entry.js.map +0 -1
  448. package/dist/core/le-kit/p-35c1d413.entry.js +0 -2
  449. package/dist/core/le-kit/p-35c1d413.entry.js.map +0 -1
  450. package/dist/core/le-kit/p-4f133e72.entry.js.map +0 -1
  451. package/dist/core/le-kit/p-55f70091.entry.js.map +0 -1
  452. package/dist/core/le-kit/p-5fd7b23a.entry.js +0 -2
  453. package/dist/core/le-kit/p-5fd7b23a.entry.js.map +0 -1
  454. package/dist/core/le-kit/p-6e414a5c.entry.js.map +0 -1
  455. package/dist/core/le-kit/p-7b121ca7.entry.js +0 -2
  456. package/dist/core/le-kit/p-7b121ca7.entry.js.map +0 -1
  457. package/dist/core/le-kit/p-8c81fa95.entry.js +0 -2
  458. package/dist/core/le-kit/p-8c81fa95.entry.js.map +0 -1
  459. package/dist/core/le-kit/p-9aa81442.entry.js +0 -2
  460. package/dist/core/le-kit/p-9aa81442.entry.js.map +0 -1
  461. package/dist/core/le-kit/p-SKsXnjWI.js +0 -3
  462. package/dist/core/le-kit/p-SKsXnjWI.js.map +0 -1
  463. package/dist/core/le-kit/p-a9d05ef6.entry.js.map +0 -1
  464. package/dist/core/le-kit/p-b2bd2a80.entry.js +0 -2
  465. package/dist/core/le-kit/p-b2bd2a80.entry.js.map +0 -1
  466. package/dist/core/le-kit/p-ccac9611.entry.js +0 -2
  467. package/dist/core/le-kit/p-ccac9611.entry.js.map +0 -1
  468. package/dist/core/loader/cdn.js +0 -1
  469. package/dist/core/loader/index.cjs.js +0 -1
  470. package/dist/core/loader/index.d.ts +0 -24
  471. package/dist/core/loader/index.es2017.js +0 -1
  472. package/dist/core/loader/index.js +0 -2
  473. package/dist/core/types/components/le-box/le-box.d.ts +0 -111
  474. package/dist/core/types/components/le-button/le-button.d.ts +0 -78
  475. package/dist/core/types/components/le-card/le-card.d.ts +0 -37
  476. package/dist/core/types/components/le-checkbox/le-checkbox.d.ts +0 -46
  477. package/dist/core/types/components/le-number-input/le-number-input.d.ts +0 -106
  478. package/dist/core/types/components/le-popover/le-popover.d.ts +0 -109
  479. package/dist/core/types/components/le-popup/le-popup.api.d.ts +0 -73
  480. package/dist/core/types/components/le-popup/le-popup.d.ts +0 -122
  481. package/dist/core/types/components/le-round-progress/le-round-progress.d.ts +0 -37
  482. package/dist/core/types/components/le-stack/le-stack.d.ts +0 -73
  483. package/dist/core/types/components/le-string-input/le-string-input.d.ts +0 -83
  484. package/dist/core/types/components/le-text/le-text.d.ts +0 -141
  485. package/dist/core/types/components/le-turntable/le-turntable.d.ts +0 -55
  486. package/dist/core/types/components.d.ts +0 -1752
  487. package/dist/core/types/global/app.d.ts +0 -73
  488. package/dist/core/types/index.d.ts +0 -15
  489. package/dist/core/types/stencil-public-runtime.d.ts +0 -1756
  490. package/dist/core/types/types/blocks.d.ts +0 -136
  491. package/dist/core/types/types/options.d.ts +0 -124
  492. package/dist/core/types/utils/utils.d.ts +0 -54
  493. package/dist/le-kit/index-CAY3Hk_i.js +0 -4559
  494. package/dist/le-kit/index-CAY3Hk_i.js.map +0 -1
  495. package/dist/le-kit/le-button.entry.esm.js.map +0 -1
  496. package/dist/le-kit/le-button.entry.js +0 -90
  497. package/dist/le-kit/le-checkbox.entry.esm.js.map +0 -1
  498. package/dist/le-kit/le-checkbox.entry.js +0 -59
  499. package/dist/le-kit/le-component.entry.esm.js.map +0 -1
  500. package/dist/le-kit/le-popover.entry.esm.js.map +0 -1
  501. package/dist/le-kit/le-popover.entry.js +0 -346
  502. package/dist/le-kit/le-popup.entry.esm.js.map +0 -1
  503. package/dist/le-kit/le-popup.entry.js +0 -210
  504. package/dist/le-kit/le-round-progress.entry.js +0 -104
  505. package/dist/le-kit/le-slot.entry.esm.js.map +0 -1
  506. package/dist/le-kit/le-string-input.entry.esm.js.map +0 -1
  507. package/dist/le-kit/le-string-input.entry.js +0 -93
  508. package/dist/le-kit/le-turntable.entry.js +0 -137
  509. /package/dist/{core/cjs → cjs}/le-kit.cjs.js.map +0 -0
  510. /package/dist/{core/cjs → cjs}/loader.cjs.js.map +0 -0
  511. /package/dist/{core/collection → collection}/components/le-box/le-box.default.css +0 -0
  512. /package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.css +0 -0
  513. /package/dist/{core/collection → collection}/components/le-number-input/le-number-input.css +0 -0
  514. /package/dist/{core/collection → collection}/components/le-popup/le-popup.css +0 -0
  515. /package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.css +0 -0
  516. /package/dist/{core/collection → collection}/components/le-stack/le-stack.default.css +0 -0
  517. /package/dist/{core/collection → collection}/components/le-text/le-text.default.css +0 -0
  518. /package/dist/{core/collection → collection}/components/le-turntable/le-turntable.css +0 -0
  519. /package/dist/{core/collection → collection}/global/app.js +0 -0
  520. /package/dist/{core/collection → collection}/index.js +0 -0
  521. /package/dist/{core/collection → collection}/types/blocks.js +0 -0
  522. /package/dist/{core/collection → collection}/types/options.js +0 -0
  523. /package/dist/{core/collection → collection}/utils/utils.js +0 -0
  524. /package/dist/{core/components → components}/le-button.js.map +0 -0
  525. /package/dist/{core/components → components}/le-checkbox.js.map +0 -0
  526. /package/dist/{core/components → components}/le-component.js.map +0 -0
  527. /package/dist/{core/components → components}/le-popover.js +0 -0
  528. /package/dist/{core/components → components}/le-popover.js.map +0 -0
  529. /package/dist/{core/components → components}/le-round-progress.js.map +0 -0
  530. /package/dist/{core/components → components}/le-slot.js.map +0 -0
  531. /package/dist/{core/components → components}/le-string-input.js.map +0 -0
  532. /package/dist/{core/components → components}/le-turntable.js.map +0 -0
  533. /package/dist/{core/components → components}/utils.js +0 -0
  534. /package/dist/{core/components → components}/utils.js.map +0 -0
  535. /package/dist/{core/esm → esm}/le-kit.js.map +0 -0
  536. /package/dist/{core/esm → esm}/loader.js.map +0 -0
  537. /package/dist/{core/index.cjs.js → index.cjs.js} +0 -0
  538. /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,100 @@ export namespace Components {
246
265
  */
247
266
  "value": string;
248
267
  }
268
+ /**
269
+ * A combobox component with searchable dropdown.
270
+ * Combines a text input with a dropdown list, allowing users to
271
+ * filter options by typing or select from the list.
272
+ * @cmsEditable true
273
+ * @cmsCategory Form
274
+ * @example Basic combobox
275
+ * ```html
276
+ * <le-combobox
277
+ * placeholder="Search..."
278
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
279
+ * ></le-combobox>
280
+ * ```
281
+ * @example Allow custom values
282
+ * ```html
283
+ * <le-combobox
284
+ * placeholder="Type or select..."
285
+ * allow-custom
286
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
287
+ * ></le-combobox>
288
+ * ```
289
+ */
290
+ interface LeCombobox {
291
+ /**
292
+ * Whether to allow custom values not in the options list.
293
+ * @default false
294
+ */
295
+ "allowCustom": boolean;
296
+ /**
297
+ * Whether the combobox is disabled.
298
+ * @default false
299
+ */
300
+ "disabled": boolean;
301
+ /**
302
+ * Text to show when no options match the search.
303
+ * @default 'No results found'
304
+ */
305
+ "emptyText": string;
306
+ /**
307
+ * Focuses the input element.
308
+ */
309
+ "focusInput": () => Promise<void>;
310
+ /**
311
+ * Whether the multiselect should take full width of its container.
312
+ * @default false
313
+ */
314
+ "fullWidth": boolean;
315
+ /**
316
+ * Closes the dropdown.
317
+ */
318
+ "hideDropdown": () => Promise<void>;
319
+ /**
320
+ * Minimum characters before showing filtered results.
321
+ * @default 0
322
+ */
323
+ "minSearchLength": number;
324
+ /**
325
+ * Name attribute for form submission.
326
+ */
327
+ "name"?: string;
328
+ /**
329
+ * Whether the dropdown is currently open.
330
+ * @default false
331
+ */
332
+ "open": boolean;
333
+ /**
334
+ * The options to display in the dropdown.
335
+ * @default []
336
+ */
337
+ "options": LeOption[] | string;
338
+ /**
339
+ * Placeholder text for the input.
340
+ * @default 'Type to search...'
341
+ */
342
+ "placeholder": string;
343
+ /**
344
+ * Whether selection is required.
345
+ * @default false
346
+ */
347
+ "required": boolean;
348
+ /**
349
+ * Opens the dropdown.
350
+ */
351
+ "showDropdown": () => Promise<void>;
352
+ /**
353
+ * Size variant of the combobox.
354
+ * @default 'medium'
355
+ */
356
+ "size": 'small' | 'medium' | 'large';
357
+ /**
358
+ * The currently selected value.
359
+ */
360
+ "value"?: LeOptionValue;
361
+ }
249
362
  /**
250
363
  * Component wrapper for admin mode editing.
251
364
  * This component is used internally by other components to provide admin-mode
@@ -285,6 +398,198 @@ export namespace Components {
285
398
  */
286
399
  "hostStyle"?: { [key: string]: string };
287
400
  }
401
+ /**
402
+ * Internal dropdown base component that provides shared functionality
403
+ * for select, combobox, and multiselect components.
404
+ * Wraps le-popover for positioning and provides:
405
+ * - Option list rendering with groups
406
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
407
+ * - Option filtering support
408
+ * - Single and multi-select modes
409
+ * @cmsInternal true
410
+ * @cmsCategory System
411
+ */
412
+ interface LeDropdownBase {
413
+ /**
414
+ * Whether to close the dropdown when clicking outside. (used to support combobox with input focus)
415
+ * @default true
416
+ */
417
+ "closeOnClickOutside": boolean;
418
+ /**
419
+ * Whether the dropdown is disabled.
420
+ * @default false
421
+ */
422
+ "disabled": boolean;
423
+ /**
424
+ * Placeholder text when no options match filter.
425
+ * @default 'No options'
426
+ */
427
+ "emptyText": string;
428
+ /**
429
+ * Filter function for options. Return true to include the option.
430
+ */
431
+ "filterFn"?: (option: LeOption, query: string) => boolean;
432
+ /**
433
+ * Current filter query string.
434
+ * @default ''
435
+ */
436
+ "filterQuery": string;
437
+ /**
438
+ * Sets the dropdown to full width of the trigger.
439
+ * @default false
440
+ */
441
+ "fullWidth": boolean;
442
+ /**
443
+ * Closes the dropdown.
444
+ */
445
+ "hide": () => Promise<void>;
446
+ /**
447
+ * Maximum height of the dropdown list.
448
+ * @default '300px'
449
+ */
450
+ "maxHeight": string;
451
+ /**
452
+ * Whether multiple selection is allowed.
453
+ * @default false
454
+ */
455
+ "multiple": boolean;
456
+ /**
457
+ * Whether the dropdown is open.
458
+ * @default false
459
+ */
460
+ "open": boolean;
461
+ /**
462
+ * The options to display in the dropdown.
463
+ * @default []
464
+ */
465
+ "options": LeOption[];
466
+ /**
467
+ * Opens the dropdown.
468
+ */
469
+ "show": () => Promise<void>;
470
+ /**
471
+ * Whether to show checkboxes for multiselect mode.
472
+ * @default true
473
+ */
474
+ "showCheckboxes": boolean;
475
+ /**
476
+ * Toggles the dropdown.
477
+ */
478
+ "toggle": () => Promise<void>;
479
+ /**
480
+ * Current value(s) - single value or array for multiselect.
481
+ */
482
+ "value"?: LeOptionValue | LeOptionValue[];
483
+ /**
484
+ * Width of the dropdown. If not set, matches trigger width.
485
+ */
486
+ "width"?: string;
487
+ }
488
+ /**
489
+ * A multiselect component for selecting multiple options.
490
+ * Displays selected items as tags with optional search filtering.
491
+ * @cmsEditable true
492
+ * @cmsCategory Form
493
+ * @example Basic multiselect
494
+ * ```html
495
+ * <le-multiselect
496
+ * placeholder="Select options..."
497
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
498
+ * ></le-multiselect>
499
+ * ```
500
+ * @example With max selections
501
+ * ```html
502
+ * <le-multiselect
503
+ * max-selections="3"
504
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
505
+ * ></le-multiselect>
506
+ * ```
507
+ * @example With search
508
+ * ```html
509
+ * <le-multiselect
510
+ * searchable
511
+ * placeholder="Search and select..."
512
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
513
+ * ></le-multiselect>
514
+ * ```
515
+ */
516
+ interface LeMultiselect {
517
+ /**
518
+ * Clears all selections.
519
+ */
520
+ "clearSelection": () => Promise<void>;
521
+ /**
522
+ * Whether the multiselect is disabled.
523
+ * @default false
524
+ */
525
+ "disabled": boolean;
526
+ /**
527
+ * Text to show when no options match the search.
528
+ * @default 'No results found'
529
+ */
530
+ "emptyText": string;
531
+ /**
532
+ * Whether the multiselect should take full width of its container.
533
+ * @default false
534
+ */
535
+ "fullWidth": boolean;
536
+ /**
537
+ * Closes the dropdown.
538
+ */
539
+ "hideDropdown": () => Promise<void>;
540
+ /**
541
+ * Maximum number of selections allowed.
542
+ */
543
+ "maxSelections"?: number;
544
+ /**
545
+ * Name attribute for form submission.
546
+ */
547
+ "name"?: string;
548
+ /**
549
+ * Whether the dropdown is currently open.
550
+ * @default false
551
+ */
552
+ "open": boolean;
553
+ /**
554
+ * The options to display in the dropdown.
555
+ * @default []
556
+ */
557
+ "options": LeOption[] | string;
558
+ /**
559
+ * Placeholder text when no options are selected.
560
+ * @default 'Select options...'
561
+ */
562
+ "placeholder": string;
563
+ /**
564
+ * Whether selection is required.
565
+ * @default false
566
+ */
567
+ "required": boolean;
568
+ /**
569
+ * Whether the input is searchable.
570
+ * @default false
571
+ */
572
+ "searchable": boolean;
573
+ /**
574
+ * Opens the dropdown.
575
+ */
576
+ "showDropdown": () => Promise<void>;
577
+ /**
578
+ * Whether to show a "Select All" option. Also accepts a string or array of strings to customize the label(s).
579
+ * @default false
580
+ */
581
+ "showSelectAll": boolean | string | string[];
582
+ /**
583
+ * Size variant of the multiselect.
584
+ * @default 'medium'
585
+ */
586
+ "size": 'small' | 'medium' | 'large';
587
+ /**
588
+ * The currently selected values.
589
+ * @default []
590
+ */
591
+ "value": LeOptionValue[];
592
+ }
288
593
  /**
289
594
  * A number input component with validation, keyboard controls, and custom spinners.
290
595
  * @cssprop --le-input-bg - Input background color
@@ -358,6 +663,8 @@ export namespace Components {
358
663
  * A popover component for displaying floating content.
359
664
  * Uses the native HTML Popover API for proper layering with dialogs
360
665
  * and other top-layer elements. Falls back gracefully in older browsers.
666
+ * @csspart trigger - The popover trigger element
667
+ * @csspart content - The popover content wrapper
361
668
  * @cmsInternal true
362
669
  * @cmsCategory System
363
670
  */
@@ -426,6 +733,15 @@ export namespace Components {
426
733
  * Toggles the popover
427
734
  */
428
735
  "toggle": () => Promise<void>;
736
+ /**
737
+ * Should the popover's trigger take full width of its container
738
+ * @default false
739
+ */
740
+ "triggerFullWidth": boolean;
741
+ /**
742
+ * Method to update the popover position from a parent component
743
+ */
744
+ "updatePosition": () => Promise<void>;
429
745
  /**
430
746
  * Fixed width for the popover (e.g., '300px', '20rem')
431
747
  */
@@ -434,7 +750,7 @@ export namespace Components {
434
750
  /**
435
751
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
436
752
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
437
- * and focus management. Can be used declaratively in HTML or programmatically
753
+ * and focus management. Can be used declaratively in HTML or programmatically
438
754
  * via leAlert(), leConfirm(), lePrompt().
439
755
  * @cmsInternal true
440
756
  * @cmsCategory System
@@ -473,6 +789,11 @@ export namespace Components {
473
789
  * @default true
474
790
  */
475
791
  "modal": boolean;
792
+ /**
793
+ * The mode of the Le Kit (e.g., 'default' or 'admin')
794
+ * @default 'default'
795
+ */
796
+ "mode": LeKitMode;
476
797
  /**
477
798
  * Whether the popup is currently visible
478
799
  * @default false
@@ -513,6 +834,150 @@ export namespace Components {
513
834
  */
514
835
  "value": number;
515
836
  }
837
+ /**
838
+ * A segmented control component (iOS-style toggle buttons).
839
+ * Perfect for toggling between a small set of related options.
840
+ * @cssprop --le-segmented-bg - Background color of the control
841
+ * @cssprop --le-segmented-padding - Padding around segments
842
+ * @cssprop --le-segmented-gap - Gap between segments
843
+ * @cssprop --le-segmented-radius - Border radius of the control
844
+ * @csspart container - The main container
845
+ * @csspart segment - Individual segment buttons
846
+ * @csspart segment-active - The currently active segment
847
+ * @cmsEditable true
848
+ * @cmsCategory Form
849
+ */
850
+ interface LeSegmentedControl {
851
+ /**
852
+ * Whether the control is disabled.
853
+ * @default false
854
+ */
855
+ "disabled": boolean;
856
+ /**
857
+ * Whether the control should take full width.
858
+ * @default false
859
+ */
860
+ "fullWidth": boolean;
861
+ /**
862
+ * Array of options for the segmented control.
863
+ * @default []
864
+ */
865
+ "options": LeOption[];
866
+ /**
867
+ * Scroll behavior for overflowing tabs.
868
+ * @allowedValues auto | hidden | visible | scroll
869
+ * @default 'auto'
870
+ */
871
+ "overflow": 'auto' | 'hidden' | 'visible' | 'scroll';
872
+ /**
873
+ * Size of the control.
874
+ * @allowedValues small | medium | large
875
+ * @default 'medium'
876
+ */
877
+ "size": 'small' | 'medium' | 'large';
878
+ /**
879
+ * The value of the currently selected option.
880
+ */
881
+ "value"?: LeOptionValue;
882
+ }
883
+ /**
884
+ * A select dropdown component for single selection.
885
+ * @cmsEditable true
886
+ * @cmsCategory Form
887
+ * @example Basic select
888
+ * ```html
889
+ * <le-select
890
+ * placeholder="Choose an option"
891
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
892
+ * ></le-select>
893
+ * ```
894
+ * @example With icons
895
+ * ```html
896
+ * <le-select
897
+ * options='[
898
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
899
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
900
+ * ]'
901
+ * ></le-select>
902
+ * ```
903
+ * @example Grouped options
904
+ * ```html
905
+ * <le-select
906
+ * options='[
907
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
908
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
909
+ * ]'
910
+ * ></le-select>
911
+ * ```
912
+ */
913
+ interface LeSelect {
914
+ /**
915
+ * Whether the select is disabled.
916
+ * @default false
917
+ */
918
+ "disabled": boolean;
919
+ /**
920
+ * Text to show when no options match the search.
921
+ * @default 'No results found'
922
+ */
923
+ "emptyText": string;
924
+ /**
925
+ * Whether the select should take full width of its container.
926
+ * @default false
927
+ */
928
+ "fullWidth": boolean;
929
+ /**
930
+ * Closes the dropdown.
931
+ */
932
+ "hideDropdown": () => Promise<void>;
933
+ /**
934
+ * Name attribute for form submission.
935
+ */
936
+ "name"?: string;
937
+ /**
938
+ * Whether the dropdown is currently open.
939
+ * @default false
940
+ */
941
+ "open": boolean;
942
+ /**
943
+ * The options to display in the dropdown.
944
+ * @default []
945
+ */
946
+ "options": LeOption[] | string;
947
+ /**
948
+ * Placeholder text when no option is selected.
949
+ * @default 'Select an option'
950
+ */
951
+ "placeholder": string;
952
+ /**
953
+ * Whether selection is required.
954
+ * @default false
955
+ */
956
+ "required": boolean;
957
+ /**
958
+ * Whether the input is searchable.
959
+ * @default false
960
+ */
961
+ "searchable": boolean;
962
+ /**
963
+ * Opens the dropdown.
964
+ */
965
+ "showDropdown": () => Promise<void>;
966
+ /**
967
+ * Size variant of the select.
968
+ * @default 'medium'
969
+ */
970
+ "size": 'small' | 'medium' | 'large';
971
+ /**
972
+ * The currently selected value.
973
+ */
974
+ "value"?: LeOptionValue;
975
+ /**
976
+ * Visual variant of the select.
977
+ * @default 'default'
978
+ */
979
+ "variant": 'default' | 'outlined' | 'solid';
980
+ }
516
981
  /**
517
982
  * Slot placeholder component for admin/CMS mode.
518
983
  * This component renders a visual placeholder for slots when in admin mode,
@@ -658,6 +1123,11 @@ export namespace Components {
658
1123
  * External ID for linking with external systems
659
1124
  */
660
1125
  "externalId": string;
1126
+ /**
1127
+ * Hide description slot
1128
+ * @default false
1129
+ */
1130
+ "hideDescription": boolean;
661
1131
  /**
662
1132
  * Icon for the end icon
663
1133
  */
@@ -666,6 +1136,10 @@ export namespace Components {
666
1136
  * Icon for the start icon
667
1137
  */
668
1138
  "iconStart": string;
1139
+ /**
1140
+ * Pass the ref of the input element to the parent component
1141
+ */
1142
+ "inputRef"?: (el: HTMLInputElement) => void;
669
1143
  /**
670
1144
  * Label for the input
671
1145
  */
@@ -698,12 +1172,350 @@ export namespace Components {
698
1172
  "value": string;
699
1173
  }
700
1174
  /**
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
1175
+ * A flexible tab component with multiple variants and states.
1176
+ * @cssprop --le-tab-bg - Tab background color
1177
+ * @cssprop --le-tab-color - Tab text color
1178
+ * @cssprop --le-tab-border-radius - Tab border radius
1179
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
1180
+ * @cssprop --le-tab-padding-y - Tab vertical padding
1181
+ * @csspart button - The native button element
1182
+ * @csspart content - The tab content wrapper
1183
+ * @csspart icon-start - The start icon slot
1184
+ * @csspart icon-end - The end icon slot
1185
+ * @cmsEditable true
1186
+ * @cmsCategory Actions
1187
+ */
1188
+ interface LeTab {
1189
+ /**
1190
+ * Alignment of the tab label without the end icon
1191
+ * @allowedValues start | center | space-between | end
1192
+ * @default 'center'
1193
+ */
1194
+ "align": 'start' | 'center' | 'space-between' | 'end';
1195
+ /**
1196
+ * Whether the tab is disabled
1197
+ * @default false
1198
+ */
1199
+ "disabled": boolean;
1200
+ /**
1201
+ * Whether the tab can get focus needed for accessibility when used in custom tab implementations
1202
+ * @default true
1203
+ */
1204
+ "focusable": boolean;
1205
+ /**
1206
+ * Whether the tab takes full width of its container
1207
+ * @default false
1208
+ */
1209
+ "fullWidth": boolean;
1210
+ /**
1211
+ * Get tab configuration for parent component
1212
+ */
1213
+ "getTabConfig": () => Promise<{ label: string; value: string; icon: string | Node; iconStart?: string | Node; iconEnd?: string | Node; disabled: boolean; }>;
1214
+ /**
1215
+ * Optional href to make the tab act as a link
1216
+ */
1217
+ "href"?: string;
1218
+ /**
1219
+ * Icon only tab image or emoji if this prop is set, the tab will render only the icon slot
1220
+ */
1221
+ "icon"?: string | Node;
1222
+ /**
1223
+ * End icon image or emoji
1224
+ */
1225
+ "iconEnd"?: string | Node;
1226
+ /**
1227
+ * Start icon image or emoji
1228
+ */
1229
+ "iconStart"?: string | Node;
1230
+ /**
1231
+ * Label if it is not provided via slot
1232
+ */
1233
+ "label"?: string;
1234
+ /**
1235
+ * Mode of the popover should be 'default' for internal use
1236
+ */
1237
+ "mode": 'default' | 'admin';
1238
+ /**
1239
+ * Position of the tabs when used within a le-tabs component
1240
+ * @allowedValues top | bottom | start | end
1241
+ * @default 'top'
1242
+ */
1243
+ "position": 'top' | 'bottom' | 'start' | 'end';
1244
+ /**
1245
+ * Whether the tab is in a selected/active state
1246
+ * @default false
1247
+ */
1248
+ "selected": boolean;
1249
+ /**
1250
+ * Whether to show the label when in icon-only mode
1251
+ * @default false
1252
+ */
1253
+ "showLabel": boolean;
1254
+ /**
1255
+ * Tab size
1256
+ * @allowedValues small | medium | large
1257
+ * @default 'medium'
1258
+ */
1259
+ "size": 'small' | 'medium' | 'large';
1260
+ /**
1261
+ * Link target when href is set
1262
+ */
1263
+ "target"?: string;
1264
+ /**
1265
+ * Value of the tab, defaults to label if not provided
1266
+ */
1267
+ "value"?: string;
1268
+ /**
1269
+ * Tab variant style
1270
+ * @allowedValues solid | underlined | clear | enclosed | icon-only
1271
+ * @default 'underlined'
1272
+ */
1273
+ "variant": 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
1274
+ }
1275
+ /**
1276
+ * A presentational tab bar component without panels.
1277
+ * Use this for navigation/routing scenarios where you manage the content
1278
+ * externally based on the selection events. For tabs with built-in panels,
1279
+ * use `le-tabs` instead.
1280
+ * @cssprop --le-tab-bar-border-color - Border color
1281
+ * @cssprop --le-tab-bar-gap - Gap between tabs
1282
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
1283
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
1284
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
1285
+ * @csspart tablist - The tab button container
1286
+ * @csspart tab - Individual tab buttons
1287
+ * @csspart tab-active - The currently active tab
1288
+ * @cmsEditable true
1289
+ * @cmsCategory Navigation
1290
+ */
1291
+ interface LeTabBar {
1292
+ /**
1293
+ * Whether to show a border below the tab bar.
1294
+ * @default true
1295
+ */
1296
+ "bordered": boolean;
1297
+ /**
1298
+ * Whether tabs should stretch to fill available width.
1299
+ * @default true
1300
+ */
1301
+ "fullWidth": boolean;
1302
+ /**
1303
+ * Position of the tab bar.
1304
+ * @allowedValues top | bottom
1305
+ * @default 'top'
1306
+ */
1307
+ "position": 'top' | 'bottom';
1308
+ /**
1309
+ * The value of the currently selected tab.
1310
+ */
1311
+ "selected"?: LeOptionValue;
1312
+ /**
1313
+ * Whether to show labels in icon-only mode.
1314
+ * @default false
1315
+ */
1316
+ "showLabels": boolean;
1317
+ /**
1318
+ * Size of the tabs.
1319
+ * @allowedValues small | medium | large
1320
+ * @default 'medium'
1321
+ */
1322
+ "size": 'small' | 'medium' | 'large';
1323
+ /**
1324
+ * Array of tab options defining the tabs to display.
1325
+ * @default []
1326
+ */
1327
+ "tabs": LeOption[];
1328
+ }
1329
+ /**
1330
+ * A tab panel component used as a child of le-tabs.
1331
+ * Each le-tab-panel defines both the tab button label and the panel content.
1332
+ * The parent le-tabs component automatically reads these panels and creates
1333
+ * the tab interface.
1334
+ * @cmsEditable true
1335
+ * @cmsCategory Navigation
1336
+ */
1337
+ interface LeTabPanel {
1338
+ /**
1339
+ * Whether this tab is disabled.
1340
+ * @default false
1341
+ */
1342
+ "disabled": boolean;
1343
+ /**
1344
+ * Get tab configuration for parent component
1345
+ */
1346
+ "getTabConfig": () => Promise<{ label: string; value: string; iconStart?: string; iconEnd?: string; disabled: boolean; }>;
1347
+ /**
1348
+ * Get the effective value (value or label as fallback)
1349
+ */
1350
+ "getValue": () => Promise<string>;
1351
+ /**
1352
+ * Icon displayed at the end of the tab button.
1353
+ */
1354
+ "iconEnd"?: string;
1355
+ /**
1356
+ * Icon displayed at the start of the tab button. Can be an emoji, URL, or icon class.
1357
+ */
1358
+ "iconStart"?: string;
1359
+ /**
1360
+ * The label displayed in the tab button.
1361
+ */
1362
+ "label": string;
1363
+ /**
1364
+ * 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.
1365
+ * @default false
1366
+ */
1367
+ "lazy": boolean;
1368
+ /**
1369
+ * Set the active state (called by parent le-tabs)
1370
+ */
1371
+ "setActive": (isActive: boolean) => Promise<void>;
1372
+ /**
1373
+ * The value used to identify this tab. Defaults to the label if not provided.
1374
+ */
1375
+ "value"?: string;
1376
+ }
1377
+ /**
1378
+ * A flexible tabs component for organizing content into tabbed panels.
1379
+ * Supports two modes:
1380
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
1381
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
1382
+ * Full keyboard navigation and ARIA support included.
1383
+ * @cssprop --le-tabs-border-color - Border color for tab list
1384
+ * @cssprop --le-tabs-gap - Gap between tabs
1385
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
1386
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
1387
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
1388
+ * @csspart tablist - The tab button container (role="tablist")
1389
+ * @csspart tab - Individual tab buttons
1390
+ * @csspart tab-active - The currently active tab
1391
+ * @csspart panels - Container for panel content
1392
+ * @csspart panel - Individual panel containers
1393
+ * @cmsEditable true
1394
+ * @cmsCategory Navigation
1395
+ */
1396
+ interface LeTabs {
1397
+ /**
1398
+ * Whether tabs should stretch to fill available width.
1399
+ * @default false
1400
+ */
1401
+ "fullWidth": boolean;
1402
+ /**
1403
+ * Orientation of the tabs.
1404
+ * @allowedValues horizontal | vertical
1405
+ * @default 'horizontal'
1406
+ */
1407
+ "orientation": 'horizontal' | 'vertical';
1408
+ /**
1409
+ * Scroll behavior for overflowing tabs.
1410
+ * @allowedValues auto | hidden | visible | scroll
1411
+ * @default 'auto'
1412
+ */
1413
+ "overflow": 'auto' | 'hidden' | 'visible' | 'scroll';
1414
+ /**
1415
+ * Position of the tabs relative to the panels.
1416
+ * @allowedValues start | end
1417
+ * @default 'start'
1418
+ */
1419
+ "position": 'start' | 'end';
1420
+ /**
1421
+ * The value of the currently selected tab. If not provided, defaults to the first tab.
1422
+ */
1423
+ "selected"?: LeOptionValue;
1424
+ /**
1425
+ * Size of the tabs.
1426
+ * @allowedValues sm | md | lg
1427
+ * @default 'medium'
1428
+ */
1429
+ "size": 'small' | 'medium' | 'large';
1430
+ /**
1431
+ * Array of tab options (programmatic mode). If le-tab-panel children exist, they take precedence.
1432
+ * @default []
1433
+ */
1434
+ "tabs": LeOption[];
1435
+ /**
1436
+ * Tab variant style.
1437
+ * @allowedValues underlined | solid | pills | enclosed | icon-only
1438
+ * @default 'underlined'
1439
+ */
1440
+ "variant": 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
1441
+ /**
1442
+ * Wrap the tabs if they exceed container width.
1443
+ * @default false
1444
+ */
1445
+ "wrap": boolean;
1446
+ }
1447
+ /**
1448
+ * A tag/chip component for displaying labels with optional dismiss functionality.
1449
+ * @cmsEditable false
1450
+ * @cmsCategory Form
1451
+ * @example Basic tag
1452
+ * ```html
1453
+ * <le-tag label="JavaScript"></le-tag>
1454
+ * ```
1455
+ * @example Dismissible tag
1456
+ * ```html
1457
+ * <le-tag label="Remove me" dismissible></le-tag>
1458
+ * ```
1459
+ * @example With icon
1460
+ * ```html
1461
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
1462
+ * ```
1463
+ * @example Different sizes
1464
+ * ```html
1465
+ * <le-tag label="Small" size="small"></le-tag>
1466
+ * <le-tag label="Medium" size="medium"></le-tag>
1467
+ * <le-tag label="Large" size="large"></le-tag>
1468
+ * ```
1469
+ * @example Different variants
1470
+ * ```html
1471
+ * <le-tag label="Default" variant="default"></le-tag>
1472
+ * <le-tag label="Primary" variant="primary"></le-tag>
1473
+ * <le-tag label="Success" variant="success"></le-tag>
1474
+ * <le-tag label="Warning" variant="warning"></le-tag>
1475
+ * <le-tag label="Danger" variant="danger"></le-tag>
1476
+ * ```
1477
+ */
1478
+ interface LeTag {
1479
+ /**
1480
+ * Whether the tag is disabled.
1481
+ * @default false
1482
+ */
1483
+ "disabled": boolean;
1484
+ /**
1485
+ * Whether the tag can be dismissed (shows close button).
1486
+ * @default false
1487
+ */
1488
+ "dismissible": boolean;
1489
+ /**
1490
+ * Icon to display before the label. Can be an emoji, URL, or icon name.
1491
+ */
1492
+ "icon"?: string;
1493
+ /**
1494
+ * The text label to display in the tag.
1495
+ */
1496
+ "label": string;
1497
+ /**
1498
+ * Mode of the popover should be 'default' for internal use
1499
+ */
1500
+ "mode": 'default' | 'admin';
1501
+ /**
1502
+ * The size of the tag.
1503
+ * @default 'medium'
1504
+ */
1505
+ "size": 'small' | 'medium' | 'large';
1506
+ /**
1507
+ * The visual variant of the tag.
1508
+ * @default 'default'
1509
+ */
1510
+ "variant": 'default' | 'primary' | 'success' | 'warning' | 'danger';
1511
+ }
1512
+ /**
1513
+ * A text component with rich text editing capabilities in admin mode.
1514
+ * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
1515
+ * and provides a Notion-like rich text editor in admin mode with formatting
1516
+ * toolbar for bold, italic, links, and paragraph type selection.
1517
+ * @cssprop --le-text-color - Text color
1518
+ * @cssprop --le-text-font-size - Font size
707
1519
  * @cssprop --le-text-line-height - Line height
708
1520
  * @cssprop --le-text-font-weight - Font weight
709
1521
  * @csspart text - The text container element
@@ -756,6 +1568,18 @@ export interface LeCheckboxCustomEvent<T> extends CustomEvent<T> {
756
1568
  detail: T;
757
1569
  target: HTMLLeCheckboxElement;
758
1570
  }
1571
+ export interface LeComboboxCustomEvent<T> extends CustomEvent<T> {
1572
+ detail: T;
1573
+ target: HTMLLeComboboxElement;
1574
+ }
1575
+ export interface LeDropdownBaseCustomEvent<T> extends CustomEvent<T> {
1576
+ detail: T;
1577
+ target: HTMLLeDropdownBaseElement;
1578
+ }
1579
+ export interface LeMultiselectCustomEvent<T> extends CustomEvent<T> {
1580
+ detail: T;
1581
+ target: HTMLLeMultiselectElement;
1582
+ }
759
1583
  export interface LeNumberInputCustomEvent<T> extends CustomEvent<T> {
760
1584
  detail: T;
761
1585
  target: HTMLLeNumberInputElement;
@@ -768,6 +1592,14 @@ export interface LePopupCustomEvent<T> extends CustomEvent<T> {
768
1592
  detail: T;
769
1593
  target: HTMLLePopupElement;
770
1594
  }
1595
+ export interface LeSegmentedControlCustomEvent<T> extends CustomEvent<T> {
1596
+ detail: T;
1597
+ target: HTMLLeSegmentedControlElement;
1598
+ }
1599
+ export interface LeSelectCustomEvent<T> extends CustomEvent<T> {
1600
+ detail: T;
1601
+ target: HTMLLeSelectElement;
1602
+ }
771
1603
  export interface LeSlotCustomEvent<T> extends CustomEvent<T> {
772
1604
  detail: T;
773
1605
  target: HTMLLeSlotElement;
@@ -776,6 +1608,22 @@ export interface LeStringInputCustomEvent<T> extends CustomEvent<T> {
776
1608
  detail: T;
777
1609
  target: HTMLLeStringInputElement;
778
1610
  }
1611
+ export interface LeTabCustomEvent<T> extends CustomEvent<T> {
1612
+ detail: T;
1613
+ target: HTMLLeTabElement;
1614
+ }
1615
+ export interface LeTabBarCustomEvent<T> extends CustomEvent<T> {
1616
+ detail: T;
1617
+ target: HTMLLeTabBarElement;
1618
+ }
1619
+ export interface LeTabsCustomEvent<T> extends CustomEvent<T> {
1620
+ detail: T;
1621
+ target: HTMLLeTabsElement;
1622
+ }
1623
+ export interface LeTagCustomEvent<T> extends CustomEvent<T> {
1624
+ detail: T;
1625
+ target: HTMLLeTagElement;
1626
+ }
779
1627
  declare global {
780
1628
  /**
781
1629
  * A flexible box component for use as a flex item within le-stack.
@@ -807,6 +1655,8 @@ declare global {
807
1655
  * @cssprop --le-button-padding-y - Button vertical padding
808
1656
  * @csspart button - The native button element
809
1657
  * @csspart content - The button content wrapper
1658
+ * @csspart icon-start - The start icon slot
1659
+ * @csspart icon-end - The end icon slot
810
1660
  * @cmsEditable true
811
1661
  * @cmsCategory Actions
812
1662
  */
@@ -870,6 +1720,48 @@ declare global {
870
1720
  prototype: HTMLLeCheckboxElement;
871
1721
  new (): HTMLLeCheckboxElement;
872
1722
  };
1723
+ interface HTMLLeComboboxElementEventMap {
1724
+ "leChange": LeOptionSelectDetail;
1725
+ "leInput": { value: string };
1726
+ "leOpen": void;
1727
+ "leClose": void;
1728
+ }
1729
+ /**
1730
+ * A combobox component with searchable dropdown.
1731
+ * Combines a text input with a dropdown list, allowing users to
1732
+ * filter options by typing or select from the list.
1733
+ * @cmsEditable true
1734
+ * @cmsCategory Form
1735
+ * @example Basic combobox
1736
+ * ```html
1737
+ * <le-combobox
1738
+ * placeholder="Search..."
1739
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
1740
+ * ></le-combobox>
1741
+ * ```
1742
+ * @example Allow custom values
1743
+ * ```html
1744
+ * <le-combobox
1745
+ * placeholder="Type or select..."
1746
+ * allow-custom
1747
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
1748
+ * ></le-combobox>
1749
+ * ```
1750
+ */
1751
+ interface HTMLLeComboboxElement extends Components.LeCombobox, HTMLStencilElement {
1752
+ addEventListener<K extends keyof HTMLLeComboboxElementEventMap>(type: K, listener: (this: HTMLLeComboboxElement, ev: LeComboboxCustomEvent<HTMLLeComboboxElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1753
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1754
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1755
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1756
+ removeEventListener<K extends keyof HTMLLeComboboxElementEventMap>(type: K, listener: (this: HTMLLeComboboxElement, ev: LeComboboxCustomEvent<HTMLLeComboboxElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1757
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1758
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1759
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1760
+ }
1761
+ var HTMLLeComboboxElement: {
1762
+ prototype: HTMLLeComboboxElement;
1763
+ new (): HTMLLeComboboxElement;
1764
+ };
873
1765
  /**
874
1766
  * Component wrapper for admin mode editing.
875
1767
  * This component is used internally by other components to provide admin-mode
@@ -897,6 +1789,83 @@ declare global {
897
1789
  prototype: HTMLLeComponentElement;
898
1790
  new (): HTMLLeComponentElement;
899
1791
  };
1792
+ interface HTMLLeDropdownBaseElementEventMap {
1793
+ "leOptionSelect": LeOptionSelectDetail;
1794
+ "leDropdownOpen": void;
1795
+ "leDropdownClose": void;
1796
+ }
1797
+ /**
1798
+ * Internal dropdown base component that provides shared functionality
1799
+ * for select, combobox, and multiselect components.
1800
+ * Wraps le-popover for positioning and provides:
1801
+ * - Option list rendering with groups
1802
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
1803
+ * - Option filtering support
1804
+ * - Single and multi-select modes
1805
+ * @cmsInternal true
1806
+ * @cmsCategory System
1807
+ */
1808
+ interface HTMLLeDropdownBaseElement extends Components.LeDropdownBase, HTMLStencilElement {
1809
+ addEventListener<K extends keyof HTMLLeDropdownBaseElementEventMap>(type: K, listener: (this: HTMLLeDropdownBaseElement, ev: LeDropdownBaseCustomEvent<HTMLLeDropdownBaseElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1810
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1811
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1812
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1813
+ removeEventListener<K extends keyof HTMLLeDropdownBaseElementEventMap>(type: K, listener: (this: HTMLLeDropdownBaseElement, ev: LeDropdownBaseCustomEvent<HTMLLeDropdownBaseElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1814
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1815
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1816
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1817
+ }
1818
+ var HTMLLeDropdownBaseElement: {
1819
+ prototype: HTMLLeDropdownBaseElement;
1820
+ new (): HTMLLeDropdownBaseElement;
1821
+ };
1822
+ interface HTMLLeMultiselectElementEventMap {
1823
+ "leChange": LeMultiOptionSelectDetail;
1824
+ "leOpen": void;
1825
+ "leClose": void;
1826
+ }
1827
+ /**
1828
+ * A multiselect component for selecting multiple options.
1829
+ * Displays selected items as tags with optional search filtering.
1830
+ * @cmsEditable true
1831
+ * @cmsCategory Form
1832
+ * @example Basic multiselect
1833
+ * ```html
1834
+ * <le-multiselect
1835
+ * placeholder="Select options..."
1836
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
1837
+ * ></le-multiselect>
1838
+ * ```
1839
+ * @example With max selections
1840
+ * ```html
1841
+ * <le-multiselect
1842
+ * max-selections="3"
1843
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
1844
+ * ></le-multiselect>
1845
+ * ```
1846
+ * @example With search
1847
+ * ```html
1848
+ * <le-multiselect
1849
+ * searchable
1850
+ * placeholder="Search and select..."
1851
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
1852
+ * ></le-multiselect>
1853
+ * ```
1854
+ */
1855
+ interface HTMLLeMultiselectElement extends Components.LeMultiselect, HTMLStencilElement {
1856
+ addEventListener<K extends keyof HTMLLeMultiselectElementEventMap>(type: K, listener: (this: HTMLLeMultiselectElement, ev: LeMultiselectCustomEvent<HTMLLeMultiselectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1857
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1858
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1859
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1860
+ removeEventListener<K extends keyof HTMLLeMultiselectElementEventMap>(type: K, listener: (this: HTMLLeMultiselectElement, ev: LeMultiselectCustomEvent<HTMLLeMultiselectElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1861
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1862
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1863
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1864
+ }
1865
+ var HTMLLeMultiselectElement: {
1866
+ prototype: HTMLLeMultiselectElement;
1867
+ new (): HTMLLeMultiselectElement;
1868
+ };
900
1869
  interface HTMLLeNumberInputElementEventMap {
901
1870
  "leChange": { value: number; name: string; externalId: string; isValid: boolean };
902
1871
  "leInput": { value: number; name: string; externalId: string; isValid: boolean };
@@ -933,6 +1902,8 @@ declare global {
933
1902
  * A popover component for displaying floating content.
934
1903
  * Uses the native HTML Popover API for proper layering with dialogs
935
1904
  * and other top-layer elements. Falls back gracefully in older browsers.
1905
+ * @csspart trigger - The popover trigger element
1906
+ * @csspart content - The popover content wrapper
936
1907
  * @cmsInternal true
937
1908
  * @cmsCategory System
938
1909
  */
@@ -959,7 +1930,7 @@ declare global {
959
1930
  /**
960
1931
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
961
1932
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
962
- * and focus management. Can be used declaratively in HTML or programmatically
1933
+ * and focus management. Can be used declaratively in HTML or programmatically
963
1934
  * via leAlert(), leConfirm(), lePrompt().
964
1935
  * @cmsInternal true
965
1936
  * @cmsCategory System
@@ -984,6 +1955,85 @@ declare global {
984
1955
  prototype: HTMLLeRoundProgressElement;
985
1956
  new (): HTMLLeRoundProgressElement;
986
1957
  };
1958
+ interface HTMLLeSegmentedControlElementEventMap {
1959
+ "leChange": LeOptionSelectDetail;
1960
+ }
1961
+ /**
1962
+ * A segmented control component (iOS-style toggle buttons).
1963
+ * Perfect for toggling between a small set of related options.
1964
+ * @cssprop --le-segmented-bg - Background color of the control
1965
+ * @cssprop --le-segmented-padding - Padding around segments
1966
+ * @cssprop --le-segmented-gap - Gap between segments
1967
+ * @cssprop --le-segmented-radius - Border radius of the control
1968
+ * @csspart container - The main container
1969
+ * @csspart segment - Individual segment buttons
1970
+ * @csspart segment-active - The currently active segment
1971
+ * @cmsEditable true
1972
+ * @cmsCategory Form
1973
+ */
1974
+ interface HTMLLeSegmentedControlElement extends Components.LeSegmentedControl, HTMLStencilElement {
1975
+ addEventListener<K extends keyof HTMLLeSegmentedControlElementEventMap>(type: K, listener: (this: HTMLLeSegmentedControlElement, ev: LeSegmentedControlCustomEvent<HTMLLeSegmentedControlElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1976
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1977
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1978
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1979
+ removeEventListener<K extends keyof HTMLLeSegmentedControlElementEventMap>(type: K, listener: (this: HTMLLeSegmentedControlElement, ev: LeSegmentedControlCustomEvent<HTMLLeSegmentedControlElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1980
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1981
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1982
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1983
+ }
1984
+ var HTMLLeSegmentedControlElement: {
1985
+ prototype: HTMLLeSegmentedControlElement;
1986
+ new (): HTMLLeSegmentedControlElement;
1987
+ };
1988
+ interface HTMLLeSelectElementEventMap {
1989
+ "leChange": LeOptionSelectDetail;
1990
+ "leOpen": void;
1991
+ "leClose": void;
1992
+ }
1993
+ /**
1994
+ * A select dropdown component for single selection.
1995
+ * @cmsEditable true
1996
+ * @cmsCategory Form
1997
+ * @example Basic select
1998
+ * ```html
1999
+ * <le-select
2000
+ * placeholder="Choose an option"
2001
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
2002
+ * ></le-select>
2003
+ * ```
2004
+ * @example With icons
2005
+ * ```html
2006
+ * <le-select
2007
+ * options='[
2008
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
2009
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
2010
+ * ]'
2011
+ * ></le-select>
2012
+ * ```
2013
+ * @example Grouped options
2014
+ * ```html
2015
+ * <le-select
2016
+ * options='[
2017
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
2018
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
2019
+ * ]'
2020
+ * ></le-select>
2021
+ * ```
2022
+ */
2023
+ interface HTMLLeSelectElement extends Components.LeSelect, HTMLStencilElement {
2024
+ addEventListener<K extends keyof HTMLLeSelectElementEventMap>(type: K, listener: (this: HTMLLeSelectElement, ev: LeSelectCustomEvent<HTMLLeSelectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2025
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2026
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2027
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2028
+ removeEventListener<K extends keyof HTMLLeSelectElementEventMap>(type: K, listener: (this: HTMLLeSelectElement, ev: LeSelectCustomEvent<HTMLLeSelectElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2029
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2030
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2031
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2032
+ }
2033
+ var HTMLLeSelectElement: {
2034
+ prototype: HTMLLeSelectElement;
2035
+ new (): HTMLLeSelectElement;
2036
+ };
987
2037
  interface HTMLLeSlotElementEventMap {
988
2038
  "leSlotChange": { name: string; value: string; isValid: boolean };
989
2039
  }
@@ -1026,8 +2076,16 @@ declare global {
1026
2076
  new (): HTMLLeStackElement;
1027
2077
  };
1028
2078
  interface HTMLLeStringInputElementEventMap {
1029
- "change": { value: string; name: string; externalId: string };
1030
- "input": { value: string; name: string; externalId: string };
2079
+ "change": {
2080
+ value: string;
2081
+ name: string;
2082
+ externalId: string;
2083
+ };
2084
+ "input": {
2085
+ value: string;
2086
+ name: string;
2087
+ externalId: string;
2088
+ };
1031
2089
  }
1032
2090
  /**
1033
2091
  * A text input component with support for labels, descriptions, icons, and external IDs.
@@ -1052,6 +2110,168 @@ declare global {
1052
2110
  prototype: HTMLLeStringInputElement;
1053
2111
  new (): HTMLLeStringInputElement;
1054
2112
  };
2113
+ interface HTMLLeTabElementEventMap {
2114
+ "click": PointerEvent;
2115
+ }
2116
+ /**
2117
+ * A flexible tab component with multiple variants and states.
2118
+ * @cssprop --le-tab-bg - Tab background color
2119
+ * @cssprop --le-tab-color - Tab text color
2120
+ * @cssprop --le-tab-border-radius - Tab border radius
2121
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
2122
+ * @cssprop --le-tab-padding-y - Tab vertical padding
2123
+ * @csspart button - The native button element
2124
+ * @csspart content - The tab content wrapper
2125
+ * @csspart icon-start - The start icon slot
2126
+ * @csspart icon-end - The end icon slot
2127
+ * @cmsEditable true
2128
+ * @cmsCategory Actions
2129
+ */
2130
+ interface HTMLLeTabElement extends Components.LeTab, HTMLStencilElement {
2131
+ addEventListener<K extends keyof HTMLLeTabElementEventMap>(type: K, listener: (this: HTMLLeTabElement, ev: LeTabCustomEvent<HTMLLeTabElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2132
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2133
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2134
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2135
+ removeEventListener<K extends keyof HTMLLeTabElementEventMap>(type: K, listener: (this: HTMLLeTabElement, ev: LeTabCustomEvent<HTMLLeTabElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2136
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2137
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2138
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2139
+ }
2140
+ var HTMLLeTabElement: {
2141
+ prototype: HTMLLeTabElement;
2142
+ new (): HTMLLeTabElement;
2143
+ };
2144
+ interface HTMLLeTabBarElementEventMap {
2145
+ "leTabChange": LeOptionSelectDetail;
2146
+ }
2147
+ /**
2148
+ * A presentational tab bar component without panels.
2149
+ * Use this for navigation/routing scenarios where you manage the content
2150
+ * externally based on the selection events. For tabs with built-in panels,
2151
+ * use `le-tabs` instead.
2152
+ * @cssprop --le-tab-bar-border-color - Border color
2153
+ * @cssprop --le-tab-bar-gap - Gap between tabs
2154
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
2155
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
2156
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
2157
+ * @csspart tablist - The tab button container
2158
+ * @csspart tab - Individual tab buttons
2159
+ * @csspart tab-active - The currently active tab
2160
+ * @cmsEditable true
2161
+ * @cmsCategory Navigation
2162
+ */
2163
+ interface HTMLLeTabBarElement extends Components.LeTabBar, HTMLStencilElement {
2164
+ addEventListener<K extends keyof HTMLLeTabBarElementEventMap>(type: K, listener: (this: HTMLLeTabBarElement, ev: LeTabBarCustomEvent<HTMLLeTabBarElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2165
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2166
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2167
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2168
+ removeEventListener<K extends keyof HTMLLeTabBarElementEventMap>(type: K, listener: (this: HTMLLeTabBarElement, ev: LeTabBarCustomEvent<HTMLLeTabBarElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2169
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2170
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2171
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2172
+ }
2173
+ var HTMLLeTabBarElement: {
2174
+ prototype: HTMLLeTabBarElement;
2175
+ new (): HTMLLeTabBarElement;
2176
+ };
2177
+ /**
2178
+ * A tab panel component used as a child of le-tabs.
2179
+ * Each le-tab-panel defines both the tab button label and the panel content.
2180
+ * The parent le-tabs component automatically reads these panels and creates
2181
+ * the tab interface.
2182
+ * @cmsEditable true
2183
+ * @cmsCategory Navigation
2184
+ */
2185
+ interface HTMLLeTabPanelElement extends Components.LeTabPanel, HTMLStencilElement {
2186
+ }
2187
+ var HTMLLeTabPanelElement: {
2188
+ prototype: HTMLLeTabPanelElement;
2189
+ new (): HTMLLeTabPanelElement;
2190
+ };
2191
+ interface HTMLLeTabsElementEventMap {
2192
+ "leTabChange": LeOptionSelectDetail;
2193
+ }
2194
+ /**
2195
+ * A flexible tabs component for organizing content into tabbed panels.
2196
+ * Supports two modes:
2197
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
2198
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
2199
+ * Full keyboard navigation and ARIA support included.
2200
+ * @cssprop --le-tabs-border-color - Border color for tab list
2201
+ * @cssprop --le-tabs-gap - Gap between tabs
2202
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
2203
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
2204
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
2205
+ * @csspart tablist - The tab button container (role="tablist")
2206
+ * @csspart tab - Individual tab buttons
2207
+ * @csspart tab-active - The currently active tab
2208
+ * @csspart panels - Container for panel content
2209
+ * @csspart panel - Individual panel containers
2210
+ * @cmsEditable true
2211
+ * @cmsCategory Navigation
2212
+ */
2213
+ interface HTMLLeTabsElement extends Components.LeTabs, HTMLStencilElement {
2214
+ addEventListener<K extends keyof HTMLLeTabsElementEventMap>(type: K, listener: (this: HTMLLeTabsElement, ev: LeTabsCustomEvent<HTMLLeTabsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2215
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2216
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2217
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2218
+ removeEventListener<K extends keyof HTMLLeTabsElementEventMap>(type: K, listener: (this: HTMLLeTabsElement, ev: LeTabsCustomEvent<HTMLLeTabsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2219
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2220
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2221
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2222
+ }
2223
+ var HTMLLeTabsElement: {
2224
+ prototype: HTMLLeTabsElement;
2225
+ new (): HTMLLeTabsElement;
2226
+ };
2227
+ interface HTMLLeTagElementEventMap {
2228
+ "leDismiss": void;
2229
+ }
2230
+ /**
2231
+ * A tag/chip component for displaying labels with optional dismiss functionality.
2232
+ * @cmsEditable false
2233
+ * @cmsCategory Form
2234
+ * @example Basic tag
2235
+ * ```html
2236
+ * <le-tag label="JavaScript"></le-tag>
2237
+ * ```
2238
+ * @example Dismissible tag
2239
+ * ```html
2240
+ * <le-tag label="Remove me" dismissible></le-tag>
2241
+ * ```
2242
+ * @example With icon
2243
+ * ```html
2244
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
2245
+ * ```
2246
+ * @example Different sizes
2247
+ * ```html
2248
+ * <le-tag label="Small" size="small"></le-tag>
2249
+ * <le-tag label="Medium" size="medium"></le-tag>
2250
+ * <le-tag label="Large" size="large"></le-tag>
2251
+ * ```
2252
+ * @example Different variants
2253
+ * ```html
2254
+ * <le-tag label="Default" variant="default"></le-tag>
2255
+ * <le-tag label="Primary" variant="primary"></le-tag>
2256
+ * <le-tag label="Success" variant="success"></le-tag>
2257
+ * <le-tag label="Warning" variant="warning"></le-tag>
2258
+ * <le-tag label="Danger" variant="danger"></le-tag>
2259
+ * ```
2260
+ */
2261
+ interface HTMLLeTagElement extends Components.LeTag, HTMLStencilElement {
2262
+ addEventListener<K extends keyof HTMLLeTagElementEventMap>(type: K, listener: (this: HTMLLeTagElement, ev: LeTagCustomEvent<HTMLLeTagElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2263
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2264
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2265
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2266
+ removeEventListener<K extends keyof HTMLLeTagElementEventMap>(type: K, listener: (this: HTMLLeTagElement, ev: LeTagCustomEvent<HTMLLeTagElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2267
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2268
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2269
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2270
+ }
2271
+ var HTMLLeTagElement: {
2272
+ prototype: HTMLLeTagElement;
2273
+ new (): HTMLLeTagElement;
2274
+ };
1055
2275
  /**
1056
2276
  * A text component with rich text editing capabilities in admin mode.
1057
2277
  * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
@@ -1082,14 +2302,24 @@ declare global {
1082
2302
  "le-button": HTMLLeButtonElement;
1083
2303
  "le-card": HTMLLeCardElement;
1084
2304
  "le-checkbox": HTMLLeCheckboxElement;
2305
+ "le-combobox": HTMLLeComboboxElement;
1085
2306
  "le-component": HTMLLeComponentElement;
2307
+ "le-dropdown-base": HTMLLeDropdownBaseElement;
2308
+ "le-multiselect": HTMLLeMultiselectElement;
1086
2309
  "le-number-input": HTMLLeNumberInputElement;
1087
2310
  "le-popover": HTMLLePopoverElement;
1088
2311
  "le-popup": HTMLLePopupElement;
1089
2312
  "le-round-progress": HTMLLeRoundProgressElement;
2313
+ "le-segmented-control": HTMLLeSegmentedControlElement;
2314
+ "le-select": HTMLLeSelectElement;
1090
2315
  "le-slot": HTMLLeSlotElement;
1091
2316
  "le-stack": HTMLLeStackElement;
1092
2317
  "le-string-input": HTMLLeStringInputElement;
2318
+ "le-tab": HTMLLeTabElement;
2319
+ "le-tab-bar": HTMLLeTabBarElement;
2320
+ "le-tab-panel": HTMLLeTabPanelElement;
2321
+ "le-tabs": HTMLLeTabsElement;
2322
+ "le-tag": HTMLLeTagElement;
1093
2323
  "le-text": HTMLLeTextElement;
1094
2324
  "le-turntable": HTMLLeTurntableElement;
1095
2325
  }
@@ -1212,10 +2442,18 @@ declare namespace LocalJSX {
1212
2442
  * @cssprop --le-button-padding-y - Button vertical padding
1213
2443
  * @csspart button - The native button element
1214
2444
  * @csspart content - The button content wrapper
2445
+ * @csspart icon-start - The start icon slot
2446
+ * @csspart icon-end - The end icon slot
1215
2447
  * @cmsEditable true
1216
2448
  * @cmsCategory Actions
1217
2449
  */
1218
2450
  interface LeButton {
2451
+ /**
2452
+ * Alignment of the button label without the end icon
2453
+ * @allowedValues start | center | space-between | end
2454
+ * @default 'center'
2455
+ */
2456
+ "align"?: 'start' | 'center' | 'space-between' | 'end';
1219
2457
  /**
1220
2458
  * Button color theme (uses theme semantic colors)
1221
2459
  * @allowedValues primary | secondary | success | warning | danger | info
@@ -1237,10 +2475,17 @@ declare namespace LocalJSX {
1237
2475
  */
1238
2476
  "href"?: string;
1239
2477
  /**
1240
- * Whether the button displays only an icon (square aspect ratio)
1241
- * @default false
2478
+ * End icon image or emoji
2479
+ */
2480
+ "iconEnd"?: string | Node;
2481
+ /**
2482
+ * Icon only button image or emoji if this prop is set, the button will render only the icon slot
2483
+ */
2484
+ "iconOnly"?: string | Node;
2485
+ /**
2486
+ * Start icon image or emoji
1242
2487
  */
1243
- "iconOnly"?: boolean;
2488
+ "iconStart"?: string | Node;
1244
2489
  /**
1245
2490
  * Mode of the popover should be 'default' for internal use
1246
2491
  */
@@ -1341,6 +2586,104 @@ declare namespace LocalJSX {
1341
2586
  */
1342
2587
  "value"?: string;
1343
2588
  }
2589
+ /**
2590
+ * A combobox component with searchable dropdown.
2591
+ * Combines a text input with a dropdown list, allowing users to
2592
+ * filter options by typing or select from the list.
2593
+ * @cmsEditable true
2594
+ * @cmsCategory Form
2595
+ * @example Basic combobox
2596
+ * ```html
2597
+ * <le-combobox
2598
+ * placeholder="Search..."
2599
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
2600
+ * ></le-combobox>
2601
+ * ```
2602
+ * @example Allow custom values
2603
+ * ```html
2604
+ * <le-combobox
2605
+ * placeholder="Type or select..."
2606
+ * allow-custom
2607
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
2608
+ * ></le-combobox>
2609
+ * ```
2610
+ */
2611
+ interface LeCombobox {
2612
+ /**
2613
+ * Whether to allow custom values not in the options list.
2614
+ * @default false
2615
+ */
2616
+ "allowCustom"?: boolean;
2617
+ /**
2618
+ * Whether the combobox is disabled.
2619
+ * @default false
2620
+ */
2621
+ "disabled"?: boolean;
2622
+ /**
2623
+ * Text to show when no options match the search.
2624
+ * @default 'No results found'
2625
+ */
2626
+ "emptyText"?: string;
2627
+ /**
2628
+ * Whether the multiselect should take full width of its container.
2629
+ * @default false
2630
+ */
2631
+ "fullWidth"?: boolean;
2632
+ /**
2633
+ * Minimum characters before showing filtered results.
2634
+ * @default 0
2635
+ */
2636
+ "minSearchLength"?: number;
2637
+ /**
2638
+ * Name attribute for form submission.
2639
+ */
2640
+ "name"?: string;
2641
+ /**
2642
+ * Emitted when the selected value changes.
2643
+ */
2644
+ "onLeChange"?: (event: LeComboboxCustomEvent<LeOptionSelectDetail>) => void;
2645
+ /**
2646
+ * Emitted when the dropdown closes.
2647
+ */
2648
+ "onLeClose"?: (event: LeComboboxCustomEvent<void>) => void;
2649
+ /**
2650
+ * Emitted when the input value changes (for custom values).
2651
+ */
2652
+ "onLeInput"?: (event: LeComboboxCustomEvent<{ value: string }>) => void;
2653
+ /**
2654
+ * Emitted when the dropdown opens.
2655
+ */
2656
+ "onLeOpen"?: (event: LeComboboxCustomEvent<void>) => void;
2657
+ /**
2658
+ * Whether the dropdown is currently open.
2659
+ * @default false
2660
+ */
2661
+ "open"?: boolean;
2662
+ /**
2663
+ * The options to display in the dropdown.
2664
+ * @default []
2665
+ */
2666
+ "options"?: LeOption[] | string;
2667
+ /**
2668
+ * Placeholder text for the input.
2669
+ * @default 'Type to search...'
2670
+ */
2671
+ "placeholder"?: string;
2672
+ /**
2673
+ * Whether selection is required.
2674
+ * @default false
2675
+ */
2676
+ "required"?: boolean;
2677
+ /**
2678
+ * Size variant of the combobox.
2679
+ * @default 'medium'
2680
+ */
2681
+ "size"?: 'small' | 'medium' | 'large';
2682
+ /**
2683
+ * The currently selected value.
2684
+ */
2685
+ "value"?: LeOptionValue;
2686
+ }
1344
2687
  /**
1345
2688
  * Component wrapper for admin mode editing.
1346
2689
  * This component is used internally by other components to provide admin-mode
@@ -1380,6 +2723,198 @@ declare namespace LocalJSX {
1380
2723
  */
1381
2724
  "hostStyle"?: { [key: string]: string };
1382
2725
  }
2726
+ /**
2727
+ * Internal dropdown base component that provides shared functionality
2728
+ * for select, combobox, and multiselect components.
2729
+ * Wraps le-popover for positioning and provides:
2730
+ * - Option list rendering with groups
2731
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
2732
+ * - Option filtering support
2733
+ * - Single and multi-select modes
2734
+ * @cmsInternal true
2735
+ * @cmsCategory System
2736
+ */
2737
+ interface LeDropdownBase {
2738
+ /**
2739
+ * Whether to close the dropdown when clicking outside. (used to support combobox with input focus)
2740
+ * @default true
2741
+ */
2742
+ "closeOnClickOutside"?: boolean;
2743
+ /**
2744
+ * Whether the dropdown is disabled.
2745
+ * @default false
2746
+ */
2747
+ "disabled"?: boolean;
2748
+ /**
2749
+ * Placeholder text when no options match filter.
2750
+ * @default 'No options'
2751
+ */
2752
+ "emptyText"?: string;
2753
+ /**
2754
+ * Filter function for options. Return true to include the option.
2755
+ */
2756
+ "filterFn"?: (option: LeOption, query: string) => boolean;
2757
+ /**
2758
+ * Current filter query string.
2759
+ * @default ''
2760
+ */
2761
+ "filterQuery"?: string;
2762
+ /**
2763
+ * Sets the dropdown to full width of the trigger.
2764
+ * @default false
2765
+ */
2766
+ "fullWidth"?: boolean;
2767
+ /**
2768
+ * Maximum height of the dropdown list.
2769
+ * @default '300px'
2770
+ */
2771
+ "maxHeight"?: string;
2772
+ /**
2773
+ * Whether multiple selection is allowed.
2774
+ * @default false
2775
+ */
2776
+ "multiple"?: boolean;
2777
+ /**
2778
+ * Emitted when the dropdown closes.
2779
+ */
2780
+ "onLeDropdownClose"?: (event: LeDropdownBaseCustomEvent<void>) => void;
2781
+ /**
2782
+ * Emitted when the dropdown opens.
2783
+ */
2784
+ "onLeDropdownOpen"?: (event: LeDropdownBaseCustomEvent<void>) => void;
2785
+ /**
2786
+ * Emitted when an option is selected.
2787
+ */
2788
+ "onLeOptionSelect"?: (event: LeDropdownBaseCustomEvent<LeOptionSelectDetail>) => void;
2789
+ /**
2790
+ * Whether the dropdown is open.
2791
+ * @default false
2792
+ */
2793
+ "open"?: boolean;
2794
+ /**
2795
+ * The options to display in the dropdown.
2796
+ * @default []
2797
+ */
2798
+ "options"?: LeOption[];
2799
+ /**
2800
+ * Whether to show checkboxes for multiselect mode.
2801
+ * @default true
2802
+ */
2803
+ "showCheckboxes"?: boolean;
2804
+ /**
2805
+ * Current value(s) - single value or array for multiselect.
2806
+ */
2807
+ "value"?: LeOptionValue | LeOptionValue[];
2808
+ /**
2809
+ * Width of the dropdown. If not set, matches trigger width.
2810
+ */
2811
+ "width"?: string;
2812
+ }
2813
+ /**
2814
+ * A multiselect component for selecting multiple options.
2815
+ * Displays selected items as tags with optional search filtering.
2816
+ * @cmsEditable true
2817
+ * @cmsCategory Form
2818
+ * @example Basic multiselect
2819
+ * ```html
2820
+ * <le-multiselect
2821
+ * placeholder="Select options..."
2822
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
2823
+ * ></le-multiselect>
2824
+ * ```
2825
+ * @example With max selections
2826
+ * ```html
2827
+ * <le-multiselect
2828
+ * max-selections="3"
2829
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
2830
+ * ></le-multiselect>
2831
+ * ```
2832
+ * @example With search
2833
+ * ```html
2834
+ * <le-multiselect
2835
+ * searchable
2836
+ * placeholder="Search and select..."
2837
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
2838
+ * ></le-multiselect>
2839
+ * ```
2840
+ */
2841
+ interface LeMultiselect {
2842
+ /**
2843
+ * Whether the multiselect is disabled.
2844
+ * @default false
2845
+ */
2846
+ "disabled"?: boolean;
2847
+ /**
2848
+ * Text to show when no options match the search.
2849
+ * @default 'No results found'
2850
+ */
2851
+ "emptyText"?: string;
2852
+ /**
2853
+ * Whether the multiselect should take full width of its container.
2854
+ * @default false
2855
+ */
2856
+ "fullWidth"?: boolean;
2857
+ /**
2858
+ * Maximum number of selections allowed.
2859
+ */
2860
+ "maxSelections"?: number;
2861
+ /**
2862
+ * Name attribute for form submission.
2863
+ */
2864
+ "name"?: string;
2865
+ /**
2866
+ * Emitted when the selected values change.
2867
+ */
2868
+ "onLeChange"?: (event: LeMultiselectCustomEvent<LeMultiOptionSelectDetail>) => void;
2869
+ /**
2870
+ * Emitted when the dropdown closes.
2871
+ */
2872
+ "onLeClose"?: (event: LeMultiselectCustomEvent<void>) => void;
2873
+ /**
2874
+ * Emitted when the dropdown opens.
2875
+ */
2876
+ "onLeOpen"?: (event: LeMultiselectCustomEvent<void>) => void;
2877
+ /**
2878
+ * Whether the dropdown is currently open.
2879
+ * @default false
2880
+ */
2881
+ "open"?: boolean;
2882
+ /**
2883
+ * The options to display in the dropdown.
2884
+ * @default []
2885
+ */
2886
+ "options"?: LeOption[] | string;
2887
+ /**
2888
+ * Placeholder text when no options are selected.
2889
+ * @default 'Select options...'
2890
+ */
2891
+ "placeholder"?: string;
2892
+ /**
2893
+ * Whether selection is required.
2894
+ * @default false
2895
+ */
2896
+ "required"?: boolean;
2897
+ /**
2898
+ * Whether the input is searchable.
2899
+ * @default false
2900
+ */
2901
+ "searchable"?: boolean;
2902
+ /**
2903
+ * Whether to show a "Select All" option. Also accepts a string or array of strings to customize the label(s).
2904
+ * @default false
2905
+ */
2906
+ "showSelectAll"?: boolean | string | string[];
2907
+ /**
2908
+ * Size variant of the multiselect.
2909
+ * @default 'medium'
2910
+ */
2911
+ "size"?: 'small' | 'medium' | 'large';
2912
+ /**
2913
+ * The currently selected values.
2914
+ * @default []
2915
+ */
2916
+ "value"?: LeOptionValue[];
2917
+ }
1383
2918
  /**
1384
2919
  * A number input component with validation, keyboard controls, and custom spinners.
1385
2920
  * @cssprop --le-input-bg - Input background color
@@ -1461,6 +2996,8 @@ declare namespace LocalJSX {
1461
2996
  * A popover component for displaying floating content.
1462
2997
  * Uses the native HTML Popover API for proper layering with dialogs
1463
2998
  * and other top-layer elements. Falls back gracefully in older browsers.
2999
+ * @csspart trigger - The popover trigger element
3000
+ * @csspart content - The popover content wrapper
1464
3001
  * @cmsInternal true
1465
3002
  * @cmsCategory System
1466
3003
  */
@@ -1525,6 +3062,11 @@ declare namespace LocalJSX {
1525
3062
  * @default true
1526
3063
  */
1527
3064
  "showClose"?: boolean;
3065
+ /**
3066
+ * Should the popover's trigger take full width of its container
3067
+ * @default false
3068
+ */
3069
+ "triggerFullWidth"?: boolean;
1528
3070
  /**
1529
3071
  * Fixed width for the popover (e.g., '300px', '20rem')
1530
3072
  */
@@ -1533,7 +3075,7 @@ declare namespace LocalJSX {
1533
3075
  /**
1534
3076
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
1535
3077
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
1536
- * and focus management. Can be used declaratively in HTML or programmatically
3078
+ * and focus management. Can be used declaratively in HTML or programmatically
1537
3079
  * via leAlert(), leConfirm(), lePrompt().
1538
3080
  * @cmsInternal true
1539
3081
  * @cmsCategory System
@@ -1568,6 +3110,11 @@ declare namespace LocalJSX {
1568
3110
  * @default true
1569
3111
  */
1570
3112
  "modal"?: boolean;
3113
+ /**
3114
+ * The mode of the Le Kit (e.g., 'default' or 'admin')
3115
+ * @default 'default'
3116
+ */
3117
+ "mode"?: LeKitMode;
1571
3118
  /**
1572
3119
  * Emitted when the popup is cancelled (Cancel clicked or dismissed)
1573
3120
  */
@@ -1581,44 +3128,196 @@ declare namespace LocalJSX {
1581
3128
  */
1582
3129
  "onLeConfirm"?: (event: LePopupCustomEvent<PopupResult>) => void;
1583
3130
  /**
1584
- * Emitted when the popup opens
3131
+ * Emitted when the popup opens
3132
+ */
3133
+ "onLeOpen"?: (event: LePopupCustomEvent<void>) => void;
3134
+ /**
3135
+ * Whether the popup is currently visible
3136
+ * @default false
3137
+ */
3138
+ "open"?: boolean;
3139
+ /**
3140
+ * Placeholder text for prompt input
3141
+ * @default ''
3142
+ */
3143
+ "placeholder"?: string;
3144
+ /**
3145
+ * Optional title for the popup header
3146
+ */
3147
+ "popupTitle"?: string;
3148
+ /**
3149
+ * Position of the popup on screen
3150
+ * @default 'center'
3151
+ */
3152
+ "position"?: PopupPosition;
3153
+ /**
3154
+ * Type of popup: alert (OK only), confirm (OK/Cancel), prompt (input + OK/Cancel), custom
3155
+ * @default 'alert'
3156
+ */
3157
+ "type"?: PopupType;
3158
+ }
3159
+ interface LeRoundProgress {
3160
+ /**
3161
+ * @default 0
3162
+ */
3163
+ "padding"?: number;
3164
+ "paths"?: string;
3165
+ /**
3166
+ * @default 0
3167
+ */
3168
+ "value"?: number;
3169
+ }
3170
+ /**
3171
+ * A segmented control component (iOS-style toggle buttons).
3172
+ * Perfect for toggling between a small set of related options.
3173
+ * @cssprop --le-segmented-bg - Background color of the control
3174
+ * @cssprop --le-segmented-padding - Padding around segments
3175
+ * @cssprop --le-segmented-gap - Gap between segments
3176
+ * @cssprop --le-segmented-radius - Border radius of the control
3177
+ * @csspart container - The main container
3178
+ * @csspart segment - Individual segment buttons
3179
+ * @csspart segment-active - The currently active segment
3180
+ * @cmsEditable true
3181
+ * @cmsCategory Form
3182
+ */
3183
+ interface LeSegmentedControl {
3184
+ /**
3185
+ * Whether the control is disabled.
3186
+ * @default false
3187
+ */
3188
+ "disabled"?: boolean;
3189
+ /**
3190
+ * Whether the control should take full width.
3191
+ * @default false
3192
+ */
3193
+ "fullWidth"?: boolean;
3194
+ /**
3195
+ * Emitted when the selection changes.
3196
+ */
3197
+ "onLeChange"?: (event: LeSegmentedControlCustomEvent<LeOptionSelectDetail>) => void;
3198
+ /**
3199
+ * Array of options for the segmented control.
3200
+ * @default []
3201
+ */
3202
+ "options"?: LeOption[];
3203
+ /**
3204
+ * Scroll behavior for overflowing tabs.
3205
+ * @allowedValues auto | hidden | visible | scroll
3206
+ * @default 'auto'
3207
+ */
3208
+ "overflow"?: 'auto' | 'hidden' | 'visible' | 'scroll';
3209
+ /**
3210
+ * Size of the control.
3211
+ * @allowedValues small | medium | large
3212
+ * @default 'medium'
3213
+ */
3214
+ "size"?: 'small' | 'medium' | 'large';
3215
+ /**
3216
+ * The value of the currently selected option.
3217
+ */
3218
+ "value"?: LeOptionValue;
3219
+ }
3220
+ /**
3221
+ * A select dropdown component for single selection.
3222
+ * @cmsEditable true
3223
+ * @cmsCategory Form
3224
+ * @example Basic select
3225
+ * ```html
3226
+ * <le-select
3227
+ * placeholder="Choose an option"
3228
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
3229
+ * ></le-select>
3230
+ * ```
3231
+ * @example With icons
3232
+ * ```html
3233
+ * <le-select
3234
+ * options='[
3235
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
3236
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
3237
+ * ]'
3238
+ * ></le-select>
3239
+ * ```
3240
+ * @example Grouped options
3241
+ * ```html
3242
+ * <le-select
3243
+ * options='[
3244
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
3245
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
3246
+ * ]'
3247
+ * ></le-select>
3248
+ * ```
3249
+ */
3250
+ interface LeSelect {
3251
+ /**
3252
+ * Whether the select is disabled.
3253
+ * @default false
3254
+ */
3255
+ "disabled"?: boolean;
3256
+ /**
3257
+ * Text to show when no options match the search.
3258
+ * @default 'No results found'
3259
+ */
3260
+ "emptyText"?: string;
3261
+ /**
3262
+ * Whether the select should take full width of its container.
3263
+ * @default false
3264
+ */
3265
+ "fullWidth"?: boolean;
3266
+ /**
3267
+ * Name attribute for form submission.
3268
+ */
3269
+ "name"?: string;
3270
+ /**
3271
+ * Emitted when the selected value changes.
3272
+ */
3273
+ "onLeChange"?: (event: LeSelectCustomEvent<LeOptionSelectDetail>) => void;
3274
+ /**
3275
+ * Emitted when the dropdown closes.
3276
+ */
3277
+ "onLeClose"?: (event: LeSelectCustomEvent<void>) => void;
3278
+ /**
3279
+ * Emitted when the dropdown opens.
1585
3280
  */
1586
- "onLeOpen"?: (event: LePopupCustomEvent<void>) => void;
3281
+ "onLeOpen"?: (event: LeSelectCustomEvent<void>) => void;
1587
3282
  /**
1588
- * Whether the popup is currently visible
3283
+ * Whether the dropdown is currently open.
1589
3284
  * @default false
1590
3285
  */
1591
3286
  "open"?: boolean;
1592
3287
  /**
1593
- * Placeholder text for prompt input
1594
- * @default ''
3288
+ * The options to display in the dropdown.
3289
+ * @default []
3290
+ */
3291
+ "options"?: LeOption[] | string;
3292
+ /**
3293
+ * Placeholder text when no option is selected.
3294
+ * @default 'Select an option'
1595
3295
  */
1596
3296
  "placeholder"?: string;
1597
3297
  /**
1598
- * Optional title for the popup header
3298
+ * Whether selection is required.
3299
+ * @default false
1599
3300
  */
1600
- "popupTitle"?: string;
3301
+ "required"?: boolean;
1601
3302
  /**
1602
- * Position of the popup on screen
1603
- * @default 'center'
3303
+ * Whether the input is searchable.
3304
+ * @default false
1604
3305
  */
1605
- "position"?: PopupPosition;
3306
+ "searchable"?: boolean;
1606
3307
  /**
1607
- * Type of popup: alert (OK only), confirm (OK/Cancel), prompt (input + OK/Cancel), custom
1608
- * @default 'alert'
3308
+ * Size variant of the select.
3309
+ * @default 'medium'
1609
3310
  */
1610
- "type"?: PopupType;
1611
- }
1612
- interface LeRoundProgress {
3311
+ "size"?: 'small' | 'medium' | 'large';
1613
3312
  /**
1614
- * @default 0
3313
+ * The currently selected value.
1615
3314
  */
1616
- "padding"?: number;
1617
- "paths"?: string;
3315
+ "value"?: LeOptionValue;
1618
3316
  /**
1619
- * @default 0
3317
+ * Visual variant of the select.
3318
+ * @default 'default'
1620
3319
  */
1621
- "value"?: number;
3320
+ "variant"?: 'default' | 'outlined' | 'solid';
1622
3321
  }
1623
3322
  /**
1624
3323
  * Slot placeholder component for admin/CMS mode.
@@ -1769,6 +3468,11 @@ declare namespace LocalJSX {
1769
3468
  * External ID for linking with external systems
1770
3469
  */
1771
3470
  "externalId"?: string;
3471
+ /**
3472
+ * Hide description slot
3473
+ * @default false
3474
+ */
3475
+ "hideDescription"?: boolean;
1772
3476
  /**
1773
3477
  * Icon for the end icon
1774
3478
  */
@@ -1777,6 +3481,10 @@ declare namespace LocalJSX {
1777
3481
  * Icon for the start icon
1778
3482
  */
1779
3483
  "iconStart"?: string;
3484
+ /**
3485
+ * Pass the ref of the input element to the parent component
3486
+ */
3487
+ "inputRef"?: (el: HTMLInputElement) => void;
1780
3488
  /**
1781
3489
  * Label for the input
1782
3490
  */
@@ -1792,11 +3500,19 @@ declare namespace LocalJSX {
1792
3500
  /**
1793
3501
  * Emitted when the value changes (on blur or Enter)
1794
3502
  */
1795
- "onChange"?: (event: LeStringInputCustomEvent<{ value: string; name: string; externalId: string }>) => void;
3503
+ "onChange"?: (event: LeStringInputCustomEvent<{
3504
+ value: string;
3505
+ name: string;
3506
+ externalId: string;
3507
+ }>) => void;
1796
3508
  /**
1797
3509
  * Emitted when the input value changes (on keystroke)
1798
3510
  */
1799
- "onInput"?: (event: LeStringInputCustomEvent<{ value: string; name: string; externalId: string }>) => void;
3511
+ "onInput"?: (event: LeStringInputCustomEvent<{
3512
+ value: string;
3513
+ name: string;
3514
+ externalId: string;
3515
+ }>) => void;
1800
3516
  /**
1801
3517
  * Placeholder text
1802
3518
  */
@@ -1816,6 +3532,344 @@ declare namespace LocalJSX {
1816
3532
  */
1817
3533
  "value"?: string;
1818
3534
  }
3535
+ /**
3536
+ * A flexible tab component with multiple variants and states.
3537
+ * @cssprop --le-tab-bg - Tab background color
3538
+ * @cssprop --le-tab-color - Tab text color
3539
+ * @cssprop --le-tab-border-radius - Tab border radius
3540
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
3541
+ * @cssprop --le-tab-padding-y - Tab vertical padding
3542
+ * @csspart button - The native button element
3543
+ * @csspart content - The tab content wrapper
3544
+ * @csspart icon-start - The start icon slot
3545
+ * @csspart icon-end - The end icon slot
3546
+ * @cmsEditable true
3547
+ * @cmsCategory Actions
3548
+ */
3549
+ interface LeTab {
3550
+ /**
3551
+ * Alignment of the tab label without the end icon
3552
+ * @allowedValues start | center | space-between | end
3553
+ * @default 'center'
3554
+ */
3555
+ "align"?: 'start' | 'center' | 'space-between' | 'end';
3556
+ /**
3557
+ * Whether the tab is disabled
3558
+ * @default false
3559
+ */
3560
+ "disabled"?: boolean;
3561
+ /**
3562
+ * Whether the tab can get focus needed for accessibility when used in custom tab implementations
3563
+ * @default true
3564
+ */
3565
+ "focusable"?: boolean;
3566
+ /**
3567
+ * Whether the tab takes full width of its container
3568
+ * @default false
3569
+ */
3570
+ "fullWidth"?: boolean;
3571
+ /**
3572
+ * Optional href to make the tab act as a link
3573
+ */
3574
+ "href"?: string;
3575
+ /**
3576
+ * Icon only tab image or emoji if this prop is set, the tab will render only the icon slot
3577
+ */
3578
+ "icon"?: string | Node;
3579
+ /**
3580
+ * End icon image or emoji
3581
+ */
3582
+ "iconEnd"?: string | Node;
3583
+ /**
3584
+ * Start icon image or emoji
3585
+ */
3586
+ "iconStart"?: string | Node;
3587
+ /**
3588
+ * Label if it is not provided via slot
3589
+ */
3590
+ "label"?: string;
3591
+ /**
3592
+ * Mode of the popover should be 'default' for internal use
3593
+ */
3594
+ "mode"?: 'default' | 'admin';
3595
+ /**
3596
+ * Emitted when the tab is clicked. This is a custom event that wraps the native click but ensures the target is the le-tab.
3597
+ */
3598
+ "onClick"?: (event: LeTabCustomEvent<PointerEvent>) => void;
3599
+ /**
3600
+ * Position of the tabs when used within a le-tabs component
3601
+ * @allowedValues top | bottom | start | end
3602
+ * @default 'top'
3603
+ */
3604
+ "position"?: 'top' | 'bottom' | 'start' | 'end';
3605
+ /**
3606
+ * Whether the tab is in a selected/active state
3607
+ * @default false
3608
+ */
3609
+ "selected"?: boolean;
3610
+ /**
3611
+ * Whether to show the label when in icon-only mode
3612
+ * @default false
3613
+ */
3614
+ "showLabel"?: boolean;
3615
+ /**
3616
+ * Tab size
3617
+ * @allowedValues small | medium | large
3618
+ * @default 'medium'
3619
+ */
3620
+ "size"?: 'small' | 'medium' | 'large';
3621
+ /**
3622
+ * Link target when href is set
3623
+ */
3624
+ "target"?: string;
3625
+ /**
3626
+ * Value of the tab, defaults to label if not provided
3627
+ */
3628
+ "value"?: string;
3629
+ /**
3630
+ * Tab variant style
3631
+ * @allowedValues solid | underlined | clear | enclosed | icon-only
3632
+ * @default 'underlined'
3633
+ */
3634
+ "variant"?: 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
3635
+ }
3636
+ /**
3637
+ * A presentational tab bar component without panels.
3638
+ * Use this for navigation/routing scenarios where you manage the content
3639
+ * externally based on the selection events. For tabs with built-in panels,
3640
+ * use `le-tabs` instead.
3641
+ * @cssprop --le-tab-bar-border-color - Border color
3642
+ * @cssprop --le-tab-bar-gap - Gap between tabs
3643
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
3644
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
3645
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
3646
+ * @csspart tablist - The tab button container
3647
+ * @csspart tab - Individual tab buttons
3648
+ * @csspart tab-active - The currently active tab
3649
+ * @cmsEditable true
3650
+ * @cmsCategory Navigation
3651
+ */
3652
+ interface LeTabBar {
3653
+ /**
3654
+ * Whether to show a border below the tab bar.
3655
+ * @default true
3656
+ */
3657
+ "bordered"?: boolean;
3658
+ /**
3659
+ * Whether tabs should stretch to fill available width.
3660
+ * @default true
3661
+ */
3662
+ "fullWidth"?: boolean;
3663
+ /**
3664
+ * Emitted when the selected tab changes.
3665
+ */
3666
+ "onLeTabChange"?: (event: LeTabBarCustomEvent<LeOptionSelectDetail>) => void;
3667
+ /**
3668
+ * Position of the tab bar.
3669
+ * @allowedValues top | bottom
3670
+ * @default 'top'
3671
+ */
3672
+ "position"?: 'top' | 'bottom';
3673
+ /**
3674
+ * The value of the currently selected tab.
3675
+ */
3676
+ "selected"?: LeOptionValue;
3677
+ /**
3678
+ * Whether to show labels in icon-only mode.
3679
+ * @default false
3680
+ */
3681
+ "showLabels"?: boolean;
3682
+ /**
3683
+ * Size of the tabs.
3684
+ * @allowedValues small | medium | large
3685
+ * @default 'medium'
3686
+ */
3687
+ "size"?: 'small' | 'medium' | 'large';
3688
+ /**
3689
+ * Array of tab options defining the tabs to display.
3690
+ * @default []
3691
+ */
3692
+ "tabs"?: LeOption[];
3693
+ }
3694
+ /**
3695
+ * A tab panel component used as a child of le-tabs.
3696
+ * Each le-tab-panel defines both the tab button label and the panel content.
3697
+ * The parent le-tabs component automatically reads these panels and creates
3698
+ * the tab interface.
3699
+ * @cmsEditable true
3700
+ * @cmsCategory Navigation
3701
+ */
3702
+ interface LeTabPanel {
3703
+ /**
3704
+ * Whether this tab is disabled.
3705
+ * @default false
3706
+ */
3707
+ "disabled"?: boolean;
3708
+ /**
3709
+ * Icon displayed at the end of the tab button.
3710
+ */
3711
+ "iconEnd"?: string;
3712
+ /**
3713
+ * Icon displayed at the start of the tab button. Can be an emoji, URL, or icon class.
3714
+ */
3715
+ "iconStart"?: string;
3716
+ /**
3717
+ * The label displayed in the tab button.
3718
+ */
3719
+ "label": string;
3720
+ /**
3721
+ * 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.
3722
+ * @default false
3723
+ */
3724
+ "lazy"?: boolean;
3725
+ /**
3726
+ * The value used to identify this tab. Defaults to the label if not provided.
3727
+ */
3728
+ "value"?: string;
3729
+ }
3730
+ /**
3731
+ * A flexible tabs component for organizing content into tabbed panels.
3732
+ * Supports two modes:
3733
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
3734
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
3735
+ * Full keyboard navigation and ARIA support included.
3736
+ * @cssprop --le-tabs-border-color - Border color for tab list
3737
+ * @cssprop --le-tabs-gap - Gap between tabs
3738
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
3739
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
3740
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
3741
+ * @csspart tablist - The tab button container (role="tablist")
3742
+ * @csspart tab - Individual tab buttons
3743
+ * @csspart tab-active - The currently active tab
3744
+ * @csspart panels - Container for panel content
3745
+ * @csspart panel - Individual panel containers
3746
+ * @cmsEditable true
3747
+ * @cmsCategory Navigation
3748
+ */
3749
+ interface LeTabs {
3750
+ /**
3751
+ * Whether tabs should stretch to fill available width.
3752
+ * @default false
3753
+ */
3754
+ "fullWidth"?: boolean;
3755
+ /**
3756
+ * Emitted when the selected tab changes.
3757
+ */
3758
+ "onLeTabChange"?: (event: LeTabsCustomEvent<LeOptionSelectDetail>) => void;
3759
+ /**
3760
+ * Orientation of the tabs.
3761
+ * @allowedValues horizontal | vertical
3762
+ * @default 'horizontal'
3763
+ */
3764
+ "orientation"?: 'horizontal' | 'vertical';
3765
+ /**
3766
+ * Scroll behavior for overflowing tabs.
3767
+ * @allowedValues auto | hidden | visible | scroll
3768
+ * @default 'auto'
3769
+ */
3770
+ "overflow"?: 'auto' | 'hidden' | 'visible' | 'scroll';
3771
+ /**
3772
+ * Position of the tabs relative to the panels.
3773
+ * @allowedValues start | end
3774
+ * @default 'start'
3775
+ */
3776
+ "position"?: 'start' | 'end';
3777
+ /**
3778
+ * The value of the currently selected tab. If not provided, defaults to the first tab.
3779
+ */
3780
+ "selected"?: LeOptionValue;
3781
+ /**
3782
+ * Size of the tabs.
3783
+ * @allowedValues sm | md | lg
3784
+ * @default 'medium'
3785
+ */
3786
+ "size"?: 'small' | 'medium' | 'large';
3787
+ /**
3788
+ * Array of tab options (programmatic mode). If le-tab-panel children exist, they take precedence.
3789
+ * @default []
3790
+ */
3791
+ "tabs"?: LeOption[];
3792
+ /**
3793
+ * Tab variant style.
3794
+ * @allowedValues underlined | solid | pills | enclosed | icon-only
3795
+ * @default 'underlined'
3796
+ */
3797
+ "variant"?: 'underlined' | 'solid' | 'pills' | 'enclosed' | 'icon-only';
3798
+ /**
3799
+ * Wrap the tabs if they exceed container width.
3800
+ * @default false
3801
+ */
3802
+ "wrap"?: boolean;
3803
+ }
3804
+ /**
3805
+ * A tag/chip component for displaying labels with optional dismiss functionality.
3806
+ * @cmsEditable false
3807
+ * @cmsCategory Form
3808
+ * @example Basic tag
3809
+ * ```html
3810
+ * <le-tag label="JavaScript"></le-tag>
3811
+ * ```
3812
+ * @example Dismissible tag
3813
+ * ```html
3814
+ * <le-tag label="Remove me" dismissible></le-tag>
3815
+ * ```
3816
+ * @example With icon
3817
+ * ```html
3818
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
3819
+ * ```
3820
+ * @example Different sizes
3821
+ * ```html
3822
+ * <le-tag label="Small" size="small"></le-tag>
3823
+ * <le-tag label="Medium" size="medium"></le-tag>
3824
+ * <le-tag label="Large" size="large"></le-tag>
3825
+ * ```
3826
+ * @example Different variants
3827
+ * ```html
3828
+ * <le-tag label="Default" variant="default"></le-tag>
3829
+ * <le-tag label="Primary" variant="primary"></le-tag>
3830
+ * <le-tag label="Success" variant="success"></le-tag>
3831
+ * <le-tag label="Warning" variant="warning"></le-tag>
3832
+ * <le-tag label="Danger" variant="danger"></le-tag>
3833
+ * ```
3834
+ */
3835
+ interface LeTag {
3836
+ /**
3837
+ * Whether the tag is disabled.
3838
+ * @default false
3839
+ */
3840
+ "disabled"?: boolean;
3841
+ /**
3842
+ * Whether the tag can be dismissed (shows close button).
3843
+ * @default false
3844
+ */
3845
+ "dismissible"?: boolean;
3846
+ /**
3847
+ * Icon to display before the label. Can be an emoji, URL, or icon name.
3848
+ */
3849
+ "icon"?: string;
3850
+ /**
3851
+ * The text label to display in the tag.
3852
+ */
3853
+ "label"?: string;
3854
+ /**
3855
+ * Mode of the popover should be 'default' for internal use
3856
+ */
3857
+ "mode"?: 'default' | 'admin';
3858
+ /**
3859
+ * Emitted when the dismiss button is clicked.
3860
+ */
3861
+ "onLeDismiss"?: (event: LeTagCustomEvent<void>) => void;
3862
+ /**
3863
+ * The size of the tag.
3864
+ * @default 'medium'
3865
+ */
3866
+ "size"?: 'small' | 'medium' | 'large';
3867
+ /**
3868
+ * The visual variant of the tag.
3869
+ * @default 'default'
3870
+ */
3871
+ "variant"?: 'default' | 'primary' | 'success' | 'warning' | 'danger';
3872
+ }
1819
3873
  /**
1820
3874
  * A text component with rich text editing capabilities in admin mode.
1821
3875
  * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)
@@ -1871,14 +3925,24 @@ declare namespace LocalJSX {
1871
3925
  "le-button": LeButton;
1872
3926
  "le-card": LeCard;
1873
3927
  "le-checkbox": LeCheckbox;
3928
+ "le-combobox": LeCombobox;
1874
3929
  "le-component": LeComponent;
3930
+ "le-dropdown-base": LeDropdownBase;
3931
+ "le-multiselect": LeMultiselect;
1875
3932
  "le-number-input": LeNumberInput;
1876
3933
  "le-popover": LePopover;
1877
3934
  "le-popup": LePopup;
1878
3935
  "le-round-progress": LeRoundProgress;
3936
+ "le-segmented-control": LeSegmentedControl;
3937
+ "le-select": LeSelect;
1879
3938
  "le-slot": LeSlot;
1880
3939
  "le-stack": LeStack;
1881
3940
  "le-string-input": LeStringInput;
3941
+ "le-tab": LeTab;
3942
+ "le-tab-bar": LeTabBar;
3943
+ "le-tab-panel": LeTabPanel;
3944
+ "le-tabs": LeTabs;
3945
+ "le-tag": LeTag;
1882
3946
  "le-text": LeText;
1883
3947
  "le-turntable": LeTurntable;
1884
3948
  }
@@ -1909,6 +3973,8 @@ declare module "@stencil/core" {
1909
3973
  * @cssprop --le-button-padding-y - Button vertical padding
1910
3974
  * @csspart button - The native button element
1911
3975
  * @csspart content - The button content wrapper
3976
+ * @csspart icon-start - The start icon slot
3977
+ * @csspart icon-end - The end icon slot
1912
3978
  * @cmsEditable true
1913
3979
  * @cmsCategory Actions
1914
3980
  */
@@ -1938,6 +4004,29 @@ declare module "@stencil/core" {
1938
4004
  * @cssprop --le-checkbox-desc-color - Color of the description text
1939
4005
  */
1940
4006
  "le-checkbox": LocalJSX.LeCheckbox & JSXBase.HTMLAttributes<HTMLLeCheckboxElement>;
4007
+ /**
4008
+ * A combobox component with searchable dropdown.
4009
+ * Combines a text input with a dropdown list, allowing users to
4010
+ * filter options by typing or select from the list.
4011
+ * @cmsEditable true
4012
+ * @cmsCategory Form
4013
+ * @example Basic combobox
4014
+ * ```html
4015
+ * <le-combobox
4016
+ * placeholder="Search..."
4017
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
4018
+ * ></le-combobox>
4019
+ * ```
4020
+ * @example Allow custom values
4021
+ * ```html
4022
+ * <le-combobox
4023
+ * placeholder="Type or select..."
4024
+ * allow-custom
4025
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
4026
+ * ></le-combobox>
4027
+ * ```
4028
+ */
4029
+ "le-combobox": LocalJSX.LeCombobox & JSXBase.HTMLAttributes<HTMLLeComboboxElement>;
1941
4030
  /**
1942
4031
  * Component wrapper for admin mode editing.
1943
4032
  * This component is used internally by other components to provide admin-mode
@@ -1960,6 +4049,47 @@ declare module "@stencil/core" {
1960
4049
  * @cmsCategory System
1961
4050
  */
1962
4051
  "le-component": LocalJSX.LeComponent & JSXBase.HTMLAttributes<HTMLLeComponentElement>;
4052
+ /**
4053
+ * Internal dropdown base component that provides shared functionality
4054
+ * for select, combobox, and multiselect components.
4055
+ * Wraps le-popover for positioning and provides:
4056
+ * - Option list rendering with groups
4057
+ * - Keyboard navigation (↑↓, Enter, Escape, Home/End)
4058
+ * - Option filtering support
4059
+ * - Single and multi-select modes
4060
+ * @cmsInternal true
4061
+ * @cmsCategory System
4062
+ */
4063
+ "le-dropdown-base": LocalJSX.LeDropdownBase & JSXBase.HTMLAttributes<HTMLLeDropdownBaseElement>;
4064
+ /**
4065
+ * A multiselect component for selecting multiple options.
4066
+ * Displays selected items as tags with optional search filtering.
4067
+ * @cmsEditable true
4068
+ * @cmsCategory Form
4069
+ * @example Basic multiselect
4070
+ * ```html
4071
+ * <le-multiselect
4072
+ * placeholder="Select options..."
4073
+ * options='[{"label": "Red"}, {"label": "Green"}, {"label": "Blue"}]'
4074
+ * ></le-multiselect>
4075
+ * ```
4076
+ * @example With max selections
4077
+ * ```html
4078
+ * <le-multiselect
4079
+ * max-selections="3"
4080
+ * options='[{"label": "Option 1"}, {"label": "Option 2"}, {"label": "Option 3"}, {"label": "Option 4"}]'
4081
+ * ></le-multiselect>
4082
+ * ```
4083
+ * @example With search
4084
+ * ```html
4085
+ * <le-multiselect
4086
+ * searchable
4087
+ * placeholder="Search and select..."
4088
+ * options='[{"label": "Apple"}, {"label": "Banana"}, {"label": "Cherry"}]'
4089
+ * ></le-multiselect>
4090
+ * ```
4091
+ */
4092
+ "le-multiselect": LocalJSX.LeMultiselect & JSXBase.HTMLAttributes<HTMLLeMultiselectElement>;
1963
4093
  /**
1964
4094
  * A number input component with validation, keyboard controls, and custom spinners.
1965
4095
  * @cssprop --le-input-bg - Input background color
@@ -1975,6 +4105,8 @@ declare module "@stencil/core" {
1975
4105
  * A popover component for displaying floating content.
1976
4106
  * Uses the native HTML Popover API for proper layering with dialogs
1977
4107
  * and other top-layer elements. Falls back gracefully in older browsers.
4108
+ * @csspart trigger - The popover trigger element
4109
+ * @csspart content - The popover content wrapper
1978
4110
  * @cmsInternal true
1979
4111
  * @cmsCategory System
1980
4112
  */
@@ -1982,13 +4114,58 @@ declare module "@stencil/core" {
1982
4114
  /**
1983
4115
  * A flexible popup/dialog component for alerts, confirms, prompts, and custom content.
1984
4116
  * Uses the native HTML <dialog> element for proper modal behavior, accessibility,
1985
- * and focus management. Can be used declaratively in HTML or programmatically
4117
+ * and focus management. Can be used declaratively in HTML or programmatically
1986
4118
  * via leAlert(), leConfirm(), lePrompt().
1987
4119
  * @cmsInternal true
1988
4120
  * @cmsCategory System
1989
4121
  */
1990
4122
  "le-popup": LocalJSX.LePopup & JSXBase.HTMLAttributes<HTMLLePopupElement>;
1991
4123
  "le-round-progress": LocalJSX.LeRoundProgress & JSXBase.HTMLAttributes<HTMLLeRoundProgressElement>;
4124
+ /**
4125
+ * A segmented control component (iOS-style toggle buttons).
4126
+ * Perfect for toggling between a small set of related options.
4127
+ * @cssprop --le-segmented-bg - Background color of the control
4128
+ * @cssprop --le-segmented-padding - Padding around segments
4129
+ * @cssprop --le-segmented-gap - Gap between segments
4130
+ * @cssprop --le-segmented-radius - Border radius of the control
4131
+ * @csspart container - The main container
4132
+ * @csspart segment - Individual segment buttons
4133
+ * @csspart segment-active - The currently active segment
4134
+ * @cmsEditable true
4135
+ * @cmsCategory Form
4136
+ */
4137
+ "le-segmented-control": LocalJSX.LeSegmentedControl & JSXBase.HTMLAttributes<HTMLLeSegmentedControlElement>;
4138
+ /**
4139
+ * A select dropdown component for single selection.
4140
+ * @cmsEditable true
4141
+ * @cmsCategory Form
4142
+ * @example Basic select
4143
+ * ```html
4144
+ * <le-select
4145
+ * placeholder="Choose an option"
4146
+ * options='[{"label": "Option 1", "value": "1"}, {"label": "Option 2", "value": "2"}]'
4147
+ * ></le-select>
4148
+ * ```
4149
+ * @example With icons
4150
+ * ```html
4151
+ * <le-select
4152
+ * options='[
4153
+ * {"label": "Apple", "value": "apple", "iconStart": "🍎"},
4154
+ * {"label": "Banana", "value": "banana", "iconStart": "🍌"}
4155
+ * ]'
4156
+ * ></le-select>
4157
+ * ```
4158
+ * @example Grouped options
4159
+ * ```html
4160
+ * <le-select
4161
+ * options='[
4162
+ * {"label": "Apple", "value": "apple", "group": "Fruits"},
4163
+ * {"label": "Carrot", "value": "carrot", "group": "Vegetables"}
4164
+ * ]'
4165
+ * ></le-select>
4166
+ * ```
4167
+ */
4168
+ "le-select": LocalJSX.LeSelect & JSXBase.HTMLAttributes<HTMLLeSelectElement>;
1992
4169
  /**
1993
4170
  * Slot placeholder component for admin/CMS mode.
1994
4171
  * This component renders a visual placeholder for slots when in admin mode,
@@ -2019,6 +4196,99 @@ declare module "@stencil/core" {
2019
4196
  * @cssprop --le-input-padding - Input padding
2020
4197
  */
2021
4198
  "le-string-input": LocalJSX.LeStringInput & JSXBase.HTMLAttributes<HTMLLeStringInputElement>;
4199
+ /**
4200
+ * A flexible tab component with multiple variants and states.
4201
+ * @cssprop --le-tab-bg - Tab background color
4202
+ * @cssprop --le-tab-color - Tab text color
4203
+ * @cssprop --le-tab-border-radius - Tab border radius
4204
+ * @cssprop --le-tab-padding-x - Tab horizontal padding
4205
+ * @cssprop --le-tab-padding-y - Tab vertical padding
4206
+ * @csspart button - The native button element
4207
+ * @csspart content - The tab content wrapper
4208
+ * @csspart icon-start - The start icon slot
4209
+ * @csspart icon-end - The end icon slot
4210
+ * @cmsEditable true
4211
+ * @cmsCategory Actions
4212
+ */
4213
+ "le-tab": LocalJSX.LeTab & JSXBase.HTMLAttributes<HTMLLeTabElement>;
4214
+ /**
4215
+ * A presentational tab bar component without panels.
4216
+ * Use this for navigation/routing scenarios where you manage the content
4217
+ * externally based on the selection events. For tabs with built-in panels,
4218
+ * use `le-tabs` instead.
4219
+ * @cssprop --le-tab-bar-border-color - Border color
4220
+ * @cssprop --le-tab-bar-gap - Gap between tabs
4221
+ * @cssprop --le-tab-bar-indicator-color - Active indicator color
4222
+ * @cssprop --le-tab-bar-padding-x - Horizontal padding for tabs
4223
+ * @cssprop --le-tab-bar-padding-y - Vertical padding for tabs
4224
+ * @csspart tablist - The tab button container
4225
+ * @csspart tab - Individual tab buttons
4226
+ * @csspart tab-active - The currently active tab
4227
+ * @cmsEditable true
4228
+ * @cmsCategory Navigation
4229
+ */
4230
+ "le-tab-bar": LocalJSX.LeTabBar & JSXBase.HTMLAttributes<HTMLLeTabBarElement>;
4231
+ /**
4232
+ * A tab panel component used as a child of le-tabs.
4233
+ * Each le-tab-panel defines both the tab button label and the panel content.
4234
+ * The parent le-tabs component automatically reads these panels and creates
4235
+ * the tab interface.
4236
+ * @cmsEditable true
4237
+ * @cmsCategory Navigation
4238
+ */
4239
+ "le-tab-panel": LocalJSX.LeTabPanel & JSXBase.HTMLAttributes<HTMLLeTabPanelElement>;
4240
+ /**
4241
+ * A flexible tabs component for organizing content into tabbed panels.
4242
+ * Supports two modes:
4243
+ * 1. **Declarative**: Use `<le-tab-panel>` children to define tabs and content
4244
+ * 2. **Programmatic**: Use the `tabs` prop with named slots for content
4245
+ * Full keyboard navigation and ARIA support included.
4246
+ * @cssprop --le-tabs-border-color - Border color for tab list
4247
+ * @cssprop --le-tabs-gap - Gap between tabs
4248
+ * @cssprop --le-tabs-indicator-color - Active tab indicator color
4249
+ * @cssprop --le-tabs-padding-x - Horizontal padding for tab buttons
4250
+ * @cssprop --le-tabs-padding-y - Vertical padding for tab buttons
4251
+ * @csspart tablist - The tab button container (role="tablist")
4252
+ * @csspart tab - Individual tab buttons
4253
+ * @csspart tab-active - The currently active tab
4254
+ * @csspart panels - Container for panel content
4255
+ * @csspart panel - Individual panel containers
4256
+ * @cmsEditable true
4257
+ * @cmsCategory Navigation
4258
+ */
4259
+ "le-tabs": LocalJSX.LeTabs & JSXBase.HTMLAttributes<HTMLLeTabsElement>;
4260
+ /**
4261
+ * A tag/chip component for displaying labels with optional dismiss functionality.
4262
+ * @cmsEditable false
4263
+ * @cmsCategory Form
4264
+ * @example Basic tag
4265
+ * ```html
4266
+ * <le-tag label="JavaScript"></le-tag>
4267
+ * ```
4268
+ * @example Dismissible tag
4269
+ * ```html
4270
+ * <le-tag label="Remove me" dismissible></le-tag>
4271
+ * ```
4272
+ * @example With icon
4273
+ * ```html
4274
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
4275
+ * ```
4276
+ * @example Different sizes
4277
+ * ```html
4278
+ * <le-tag label="Small" size="small"></le-tag>
4279
+ * <le-tag label="Medium" size="medium"></le-tag>
4280
+ * <le-tag label="Large" size="large"></le-tag>
4281
+ * ```
4282
+ * @example Different variants
4283
+ * ```html
4284
+ * <le-tag label="Default" variant="default"></le-tag>
4285
+ * <le-tag label="Primary" variant="primary"></le-tag>
4286
+ * <le-tag label="Success" variant="success"></le-tag>
4287
+ * <le-tag label="Warning" variant="warning"></le-tag>
4288
+ * <le-tag label="Danger" variant="danger"></le-tag>
4289
+ * ```
4290
+ */
4291
+ "le-tag": LocalJSX.LeTag & JSXBase.HTMLAttributes<HTMLLeTagElement>;
2022
4292
  /**
2023
4293
  * A text component with rich text editing capabilities in admin mode.
2024
4294
  * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)