le-kit 0.5.2 → 0.5.3

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 (317) hide show
  1. package/LLM_CONTEXT.md +22 -0
  2. package/dist/cjs/le-bar_16.cjs.entry.js +945 -1257
  3. package/dist/cjs/le-box.cjs.entry.js +40 -88
  4. package/dist/cjs/le-breadcrumbs.cjs.entry.js +223 -0
  5. package/dist/cjs/le-card.cjs.entry.js +11 -11
  6. package/dist/cjs/le-code-input.cjs.entry.js +76 -110
  7. package/dist/cjs/le-combobox.cjs.entry.js +126 -153
  8. package/dist/cjs/le-header-placeholder.cjs.entry.js +1 -1
  9. package/dist/cjs/le-kit.cjs.js +1 -1
  10. package/dist/cjs/le-multiselect.cjs.entry.js +149 -171
  11. package/dist/cjs/le-number-input.cjs.entry.js +89 -129
  12. package/dist/cjs/le-round-progress.cjs.entry.js +6 -11
  13. package/dist/cjs/le-segmented-control.cjs.entry.js +77 -87
  14. package/dist/cjs/le-side-panel-toggle.cjs.entry.js +59 -75
  15. package/dist/cjs/le-side-panel.cjs.entry.js +130 -137
  16. package/dist/cjs/le-stack.cjs.entry.js +38 -51
  17. package/dist/cjs/le-tab-bar.cjs.entry.js +80 -89
  18. package/dist/cjs/le-tab-panel.cjs.entry.js +21 -39
  19. package/dist/cjs/le-tab.cjs.entry.js +53 -91
  20. package/dist/cjs/le-tabs.cjs.entry.js +112 -122
  21. package/dist/cjs/le-tag.cjs.entry.js +23 -40
  22. package/dist/cjs/le-text.cjs.entry.js +131 -148
  23. package/dist/cjs/le-turntable.cjs.entry.js +17 -25
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/collection/collection-manifest.json +1 -0
  26. package/dist/collection/components/le-bar/le-bar.js +132 -139
  27. package/dist/collection/components/le-bar/le-bar.js.map +1 -1
  28. package/dist/collection/components/le-box/le-box.js +41 -88
  29. package/dist/collection/components/le-box/le-box.js.map +1 -1
  30. package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.css +72 -0
  31. package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js +372 -0
  32. package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js.map +1 -0
  33. package/dist/collection/components/le-button/le-button.js +50 -79
  34. package/dist/collection/components/le-button/le-button.js.map +1 -1
  35. package/dist/collection/components/le-card/le-card.js +12 -11
  36. package/dist/collection/components/le-card/le-card.js.map +1 -1
  37. package/dist/collection/components/le-checkbox/le-checkbox.js +27 -42
  38. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -1
  39. package/dist/collection/components/le-code-input/le-code-input.js +77 -110
  40. package/dist/collection/components/le-code-input/le-code-input.js.map +1 -1
  41. package/dist/collection/components/le-collapse/le-collapse.js +15 -14
  42. package/dist/collection/components/le-collapse/le-collapse.js.map +1 -1
  43. package/dist/collection/components/le-combobox/le-combobox.js +127 -153
  44. package/dist/collection/components/le-combobox/le-combobox.js.map +1 -1
  45. package/dist/collection/components/le-component/le-component.js +14 -38
  46. package/dist/collection/components/le-component/le-component.js.map +1 -1
  47. package/dist/collection/components/le-current-heading/le-current-heading.js +6 -5
  48. package/dist/collection/components/le-current-heading/le-current-heading.js.map +1 -1
  49. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +139 -165
  50. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -1
  51. package/dist/collection/components/le-header/le-header.js +22 -45
  52. package/dist/collection/components/le-header/le-header.js.map +1 -1
  53. package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +1 -1
  54. package/dist/collection/components/le-icon/le-icon.js +14 -14
  55. package/dist/collection/components/le-icon/le-icon.js.map +1 -1
  56. package/dist/collection/components/le-multiselect/le-multiselect.js +150 -171
  57. package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -1
  58. package/dist/collection/components/le-navigation/le-navigation.js +118 -128
  59. package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
  60. package/dist/collection/components/le-number-input/le-number-input.js +90 -129
  61. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -1
  62. package/dist/collection/components/le-popover/le-popover.css +2 -1
  63. package/dist/collection/components/le-popover/le-popover.js +101 -126
  64. package/dist/collection/components/le-popover/le-popover.js.map +1 -1
  65. package/dist/collection/components/le-popup/le-popup.js +89 -115
  66. package/dist/collection/components/le-popup/le-popup.js.map +1 -1
  67. package/dist/collection/components/le-round-progress/le-round-progress.js +7 -12
  68. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -1
  69. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +6 -7
  70. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +1 -1
  71. package/dist/collection/components/le-segmented-control/le-segmented-control.js +78 -87
  72. package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -1
  73. package/dist/collection/components/le-select/le-select.js +88 -110
  74. package/dist/collection/components/le-select/le-select.js.map +1 -1
  75. package/dist/collection/components/le-side-panel/le-side-panel.css +10 -1
  76. package/dist/collection/components/le-side-panel/le-side-panel.js +131 -136
  77. package/dist/collection/components/le-side-panel/le-side-panel.js.map +1 -1
  78. package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js +60 -75
  79. package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js.map +1 -1
  80. package/dist/collection/components/le-slot/le-slot.js +96 -144
  81. package/dist/collection/components/le-slot/le-slot.js.map +1 -1
  82. package/dist/collection/components/le-stack/le-stack.js +39 -51
  83. package/dist/collection/components/le-stack/le-stack.js.map +1 -1
  84. package/dist/collection/components/le-string-input/le-string-input.js +41 -84
  85. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -1
  86. package/dist/collection/components/le-tab/le-tab.js +54 -91
  87. package/dist/collection/components/le-tab/le-tab.js.map +1 -1
  88. package/dist/collection/components/le-tab-bar/le-tab-bar.js +81 -89
  89. package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -1
  90. package/dist/collection/components/le-tab-panel/le-tab-panel.js +22 -39
  91. package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -1
  92. package/dist/collection/components/le-tabs/le-tabs.js +113 -122
  93. package/dist/collection/components/le-tabs/le-tabs.js.map +1 -1
  94. package/dist/collection/components/le-tag/le-tag.js +25 -40
  95. package/dist/collection/components/le-tag/le-tag.js.map +1 -1
  96. package/dist/collection/components/le-text/le-text.js +132 -148
  97. package/dist/collection/components/le-text/le-text.js.map +1 -1
  98. package/dist/collection/components/le-turntable/le-turntable.js +18 -26
  99. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -1
  100. package/dist/collection/dist/components/assets/custom-elements.json +973 -645
  101. package/dist/collection/dist/components/assets/icons/arrow-left.json +21 -0
  102. package/dist/collection/dist/components/assets/icons/arrow-right.json +21 -0
  103. package/dist/collection/dist/components/assets/icons/check.json +12 -0
  104. package/dist/collection/dist/components/assets/icons/chevron-down.json +1 -2
  105. package/dist/collection/dist/components/assets/icons/chevron-left.json +12 -0
  106. package/dist/collection/dist/components/assets/icons/chevron-right.json +12 -0
  107. package/dist/collection/dist/components/assets/icons/chevron-up.json +12 -0
  108. package/dist/components/assets/custom-elements.json +973 -645
  109. package/dist/components/assets/icons/arrow-left.json +21 -0
  110. package/dist/components/assets/icons/arrow-right.json +21 -0
  111. package/dist/components/assets/icons/check.json +12 -0
  112. package/dist/components/assets/icons/chevron-down.json +1 -2
  113. package/dist/components/assets/icons/chevron-left.json +12 -0
  114. package/dist/components/assets/icons/chevron-right.json +12 -0
  115. package/dist/components/assets/icons/chevron-up.json +12 -0
  116. package/dist/components/le-bar2.js +132 -140
  117. package/dist/components/le-bar2.js.map +1 -1
  118. package/dist/components/le-box.js +41 -89
  119. package/dist/components/le-box.js.map +1 -1
  120. package/dist/components/le-breadcrumbs.d.ts +11 -0
  121. package/dist/components/le-breadcrumbs.js +327 -0
  122. package/dist/components/le-breadcrumbs.js.map +1 -0
  123. package/dist/components/le-button2.js +405 -619
  124. package/dist/components/le-button2.js.map +1 -1
  125. package/dist/components/le-card.js +12 -12
  126. package/dist/components/le-card.js.map +1 -1
  127. package/dist/components/le-code-input.js +77 -111
  128. package/dist/components/le-code-input.js.map +1 -1
  129. package/dist/components/le-collapse2.js +15 -15
  130. package/dist/components/le-collapse2.js.map +1 -1
  131. package/dist/components/le-combobox.js +127 -154
  132. package/dist/components/le-combobox.js.map +1 -1
  133. package/dist/components/le-current-heading.js +6 -6
  134. package/dist/components/le-current-heading.js.map +1 -1
  135. package/dist/components/le-dropdown-base2.js +139 -166
  136. package/dist/components/le-dropdown-base2.js.map +1 -1
  137. package/dist/components/le-header-placeholder.js +1 -1
  138. package/dist/components/le-header.js +22 -46
  139. package/dist/components/le-header.js.map +1 -1
  140. package/dist/components/le-icon2.js +14 -15
  141. package/dist/components/le-icon2.js.map +1 -1
  142. package/dist/components/le-multiselect.js +150 -172
  143. package/dist/components/le-multiselect.js.map +1 -1
  144. package/dist/components/le-navigation.js +1 -494
  145. package/dist/components/le-navigation.js.map +1 -1
  146. package/dist/components/le-navigation2.js +488 -0
  147. package/dist/components/le-navigation2.js.map +1 -0
  148. package/dist/components/le-number-input.js +90 -130
  149. package/dist/components/le-number-input.js.map +1 -1
  150. package/dist/components/le-popover2.js +103 -128
  151. package/dist/components/le-popover2.js.map +1 -1
  152. package/dist/components/le-round-progress.js +7 -12
  153. package/dist/components/le-round-progress.js.map +1 -1
  154. package/dist/components/le-scroll-progress.js +6 -8
  155. package/dist/components/le-scroll-progress.js.map +1 -1
  156. package/dist/components/le-segmented-control.js +78 -88
  157. package/dist/components/le-segmented-control.js.map +1 -1
  158. package/dist/components/le-side-panel-toggle2.js +60 -76
  159. package/dist/components/le-side-panel-toggle2.js.map +1 -1
  160. package/dist/components/le-side-panel.js +133 -139
  161. package/dist/components/le-side-panel.js.map +1 -1
  162. package/dist/components/le-stack.js +39 -52
  163. package/dist/components/le-stack.js.map +1 -1
  164. package/dist/components/le-tab-bar.js +81 -90
  165. package/dist/components/le-tab-bar.js.map +1 -1
  166. package/dist/components/le-tab-panel.js +22 -40
  167. package/dist/components/le-tab-panel.js.map +1 -1
  168. package/dist/components/le-tab2.js +54 -92
  169. package/dist/components/le-tab2.js.map +1 -1
  170. package/dist/components/le-tabs.js +113 -123
  171. package/dist/components/le-tabs.js.map +1 -1
  172. package/dist/components/le-tag2.js +24 -41
  173. package/dist/components/le-tag2.js.map +1 -1
  174. package/dist/components/le-text.js +132 -149
  175. package/dist/components/le-text.js.map +1 -1
  176. package/dist/components/le-turntable.js +18 -26
  177. package/dist/components/le-turntable.js.map +1 -1
  178. package/dist/docs.json +294 -2
  179. package/dist/esm/le-bar_16.entry.js +946 -1258
  180. package/dist/esm/le-box.entry.js +41 -89
  181. package/dist/esm/le-box.entry.js.map +1 -1
  182. package/dist/esm/le-breadcrumbs.entry.js +221 -0
  183. package/dist/esm/le-breadcrumbs.entry.js.map +1 -0
  184. package/dist/esm/le-card.entry.js +12 -12
  185. package/dist/esm/le-card.entry.js.map +1 -1
  186. package/dist/esm/le-code-input.entry.js +77 -111
  187. package/dist/esm/le-code-input.entry.js.map +1 -1
  188. package/dist/esm/le-combobox.entry.js +127 -154
  189. package/dist/esm/le-combobox.entry.js.map +1 -1
  190. package/dist/esm/le-header-placeholder.entry.js +1 -1
  191. package/dist/esm/le-kit.js +1 -1
  192. package/dist/esm/le-multiselect.entry.js +150 -172
  193. package/dist/esm/le-multiselect.entry.js.map +1 -1
  194. package/dist/esm/le-number-input.entry.js +90 -130
  195. package/dist/esm/le-number-input.entry.js.map +1 -1
  196. package/dist/esm/le-round-progress.entry.js +7 -12
  197. package/dist/esm/le-round-progress.entry.js.map +1 -1
  198. package/dist/esm/le-segmented-control.entry.js +78 -88
  199. package/dist/esm/le-segmented-control.entry.js.map +1 -1
  200. package/dist/esm/le-side-panel-toggle.entry.js +60 -76
  201. package/dist/esm/le-side-panel-toggle.entry.js.map +1 -1
  202. package/dist/esm/le-side-panel.entry.js +131 -138
  203. package/dist/esm/le-side-panel.entry.js.map +1 -1
  204. package/dist/esm/le-stack.entry.js +39 -52
  205. package/dist/esm/le-stack.entry.js.map +1 -1
  206. package/dist/esm/le-tab-bar.entry.js +81 -90
  207. package/dist/esm/le-tab-bar.entry.js.map +1 -1
  208. package/dist/esm/le-tab-panel.entry.js +22 -40
  209. package/dist/esm/le-tab-panel.entry.js.map +1 -1
  210. package/dist/esm/le-tab.entry.js +54 -92
  211. package/dist/esm/le-tab.entry.js.map +1 -1
  212. package/dist/esm/le-tabs.entry.js +113 -123
  213. package/dist/esm/le-tabs.entry.js.map +1 -1
  214. package/dist/esm/le-tag.entry.js +23 -40
  215. package/dist/esm/le-tag.entry.js.map +1 -1
  216. package/dist/esm/le-text.entry.js +132 -149
  217. package/dist/esm/le-text.entry.js.map +1 -1
  218. package/dist/esm/le-turntable.entry.js +18 -26
  219. package/dist/esm/le-turntable.entry.js.map +1 -1
  220. package/dist/esm/loader.js +1 -1
  221. package/dist/le-kit/dist/components/assets/custom-elements.json +973 -645
  222. package/dist/le-kit/dist/components/assets/icons/arrow-left.json +21 -0
  223. package/dist/le-kit/dist/components/assets/icons/arrow-right.json +21 -0
  224. package/dist/le-kit/dist/components/assets/icons/check.json +12 -0
  225. package/dist/le-kit/dist/components/assets/icons/chevron-down.json +1 -2
  226. package/dist/le-kit/dist/components/assets/icons/chevron-left.json +12 -0
  227. package/dist/le-kit/dist/components/assets/icons/chevron-right.json +12 -0
  228. package/dist/le-kit/dist/components/assets/icons/chevron-up.json +12 -0
  229. package/dist/le-kit/le-kit.esm.js +1 -1
  230. package/dist/le-kit/p-3067b18f.entry.js +2 -0
  231. package/dist/le-kit/p-3067b18f.entry.js.map +1 -0
  232. package/dist/le-kit/p-34c4d97d.entry.js +2 -0
  233. package/dist/le-kit/p-34c4d97d.entry.js.map +1 -0
  234. package/dist/le-kit/p-45182541.entry.js +2 -0
  235. package/dist/le-kit/p-45182541.entry.js.map +1 -0
  236. package/dist/le-kit/p-52a41c96.entry.js +2 -0
  237. package/dist/le-kit/p-52a41c96.entry.js.map +1 -0
  238. package/dist/le-kit/p-55fb5dd2.entry.js +2 -0
  239. package/dist/le-kit/p-55fb5dd2.entry.js.map +1 -0
  240. package/dist/le-kit/{p-ab6c1def.entry.js → p-649025f4.entry.js} +2 -2
  241. package/dist/le-kit/p-649025f4.entry.js.map +1 -0
  242. package/dist/le-kit/p-67930309.entry.js +2 -0
  243. package/dist/le-kit/p-67930309.entry.js.map +1 -0
  244. package/dist/le-kit/p-6d222705.entry.js +2 -0
  245. package/dist/le-kit/p-6d222705.entry.js.map +1 -0
  246. package/dist/le-kit/p-8049e0c2.entry.js +2 -0
  247. package/dist/le-kit/p-8049e0c2.entry.js.map +1 -0
  248. package/dist/le-kit/p-884f57bd.entry.js +2 -0
  249. package/dist/le-kit/p-88c70f9d.entry.js +2 -0
  250. package/dist/le-kit/p-88c70f9d.entry.js.map +1 -0
  251. package/dist/le-kit/p-96610729.entry.js +2 -0
  252. package/dist/le-kit/p-96610729.entry.js.map +1 -0
  253. package/dist/le-kit/p-a34054e0.entry.js +2 -0
  254. package/dist/le-kit/p-a34054e0.entry.js.map +1 -0
  255. package/dist/le-kit/p-a388e46a.entry.js +2 -0
  256. package/dist/le-kit/p-a388e46a.entry.js.map +1 -0
  257. package/dist/le-kit/p-c0c53650.entry.js +2 -0
  258. package/dist/le-kit/p-c0c53650.entry.js.map +1 -0
  259. package/dist/le-kit/p-cbf17514.entry.js +2 -0
  260. package/dist/le-kit/p-cbf17514.entry.js.map +1 -0
  261. package/dist/le-kit/p-d934de74.entry.js +2 -0
  262. package/dist/le-kit/p-d934de74.entry.js.map +1 -0
  263. package/dist/le-kit/p-de72c8b5.entry.js +2 -0
  264. package/dist/le-kit/p-de72c8b5.entry.js.map +1 -0
  265. package/dist/le-kit/p-e3dd0f2a.entry.js +2 -0
  266. package/dist/le-kit/p-e3dd0f2a.entry.js.map +1 -0
  267. package/dist/le-kit/p-ee170967.entry.js +2 -0
  268. package/dist/le-kit/p-ee170967.entry.js.map +1 -0
  269. package/dist/le-kit/p-eedb2f75.entry.js +2 -0
  270. package/dist/le-kit/p-eedb2f75.entry.js.map +1 -0
  271. package/dist/types/components/le-breadcrumbs/le-breadcrumbs.d.ts +57 -0
  272. package/dist/types/components/le-side-panel/le-side-panel.d.ts +2 -0
  273. package/dist/types/components.d.ts +84 -0
  274. package/package.json +1 -1
  275. package/dist/collection/assets/icons/chevron-down.svg +0 -3
  276. package/dist/collection/dist/components/assets/icons/chevron-down.svg +0 -3
  277. package/dist/components/assets/icons/chevron-down.svg +0 -3
  278. package/dist/le-kit/dist/components/assets/icons/chevron-down.svg +0 -3
  279. package/dist/le-kit/p-221d379a.entry.js +0 -2
  280. package/dist/le-kit/p-221d379a.entry.js.map +0 -1
  281. package/dist/le-kit/p-24112ca3.entry.js +0 -2
  282. package/dist/le-kit/p-24112ca3.entry.js.map +0 -1
  283. package/dist/le-kit/p-2c6d080d.entry.js +0 -2
  284. package/dist/le-kit/p-2c6d080d.entry.js.map +0 -1
  285. package/dist/le-kit/p-46276e77.entry.js +0 -2
  286. package/dist/le-kit/p-46276e77.entry.js.map +0 -1
  287. package/dist/le-kit/p-516c8531.entry.js +0 -2
  288. package/dist/le-kit/p-6ae60ba5.entry.js +0 -2
  289. package/dist/le-kit/p-6ae60ba5.entry.js.map +0 -1
  290. package/dist/le-kit/p-6b69f9a2.entry.js +0 -2
  291. package/dist/le-kit/p-6b69f9a2.entry.js.map +0 -1
  292. package/dist/le-kit/p-6d14306f.entry.js +0 -2
  293. package/dist/le-kit/p-6d14306f.entry.js.map +0 -1
  294. package/dist/le-kit/p-7bcdf2d4.entry.js +0 -2
  295. package/dist/le-kit/p-7bcdf2d4.entry.js.map +0 -1
  296. package/dist/le-kit/p-7cf1e23c.entry.js +0 -2
  297. package/dist/le-kit/p-7cf1e23c.entry.js.map +0 -1
  298. package/dist/le-kit/p-85f2fd4d.entry.js +0 -2
  299. package/dist/le-kit/p-85f2fd4d.entry.js.map +0 -1
  300. package/dist/le-kit/p-98242429.entry.js +0 -2
  301. package/dist/le-kit/p-98242429.entry.js.map +0 -1
  302. package/dist/le-kit/p-ab6c1def.entry.js.map +0 -1
  303. package/dist/le-kit/p-ae4ead64.entry.js +0 -2
  304. package/dist/le-kit/p-ae4ead64.entry.js.map +0 -1
  305. package/dist/le-kit/p-b05d4511.entry.js +0 -2
  306. package/dist/le-kit/p-b05d4511.entry.js.map +0 -1
  307. package/dist/le-kit/p-b6ac02ff.entry.js +0 -2
  308. package/dist/le-kit/p-b6ac02ff.entry.js.map +0 -1
  309. package/dist/le-kit/p-c24769e2.entry.js +0 -2
  310. package/dist/le-kit/p-c24769e2.entry.js.map +0 -1
  311. package/dist/le-kit/p-dc0445ad.entry.js +0 -2
  312. package/dist/le-kit/p-dc0445ad.entry.js.map +0 -1
  313. package/dist/le-kit/p-eb5286f2.entry.js +0 -2
  314. package/dist/le-kit/p-eb5286f2.entry.js.map +0 -1
  315. package/dist/le-kit/p-f78b1ee6.entry.js +0 -2
  316. package/dist/le-kit/p-f78b1ee6.entry.js.map +0 -1
  317. /package/dist/le-kit/{p-516c8531.entry.js.map → p-884f57bd.entry.js.map} +0 -0
@@ -8,57 +8,43 @@ const leStackDefaultCss = () => `:host{display:block}:host([hidden]){display:non
8
8
  const LeStack = class {
9
9
  constructor(hostRef) {
10
10
  index.registerInstance(this, hostRef);
11
+ /**
12
+ * Direction of the stack layout
13
+ * @allowedValues horizontal | vertical
14
+ */
15
+ this.direction = 'horizontal';
16
+ /**
17
+ * Alignment of items on the cross axis
18
+ * @allowedValues start | center | end | stretch | baseline
19
+ */
20
+ this.align = 'stretch';
21
+ /**
22
+ * Distribution of items on the main axis
23
+ * @allowedValues start | center | end | space-between | space-around | space-evenly
24
+ */
25
+ this.justify = 'start';
26
+ /**
27
+ * Whether items should wrap to multiple lines
28
+ */
29
+ this.wrap = false;
30
+ /**
31
+ * Alignment of wrapped lines (only applies when wrap is true)
32
+ * @allowedValues start | center | end | stretch | space-between | space-around
33
+ */
34
+ this.alignContent = 'stretch';
35
+ /**
36
+ * Whether to reverse the order of items
37
+ */
38
+ this.reverse = false;
39
+ /**
40
+ * Whether the stack should take full width of its container
41
+ */
42
+ this.fullWidth = false;
43
+ /**
44
+ * Whether the stack should take full height of its container
45
+ */
46
+ this.fullHeight = false;
11
47
  }
12
- get el() { return index.getElement(this); }
13
- /**
14
- * Direction of the stack layout
15
- * @allowedValues horizontal | vertical
16
- */
17
- direction = 'horizontal';
18
- /**
19
- * Gap between items (CSS value like '8px', '1rem', 'var(--le-space-md)')
20
- */
21
- gap;
22
- /**
23
- * Alignment of items on the cross axis
24
- * @allowedValues start | center | end | stretch | baseline
25
- */
26
- align = 'stretch';
27
- /**
28
- * Distribution of items on the main axis
29
- * @allowedValues start | center | end | space-between | space-around | space-evenly
30
- */
31
- justify = 'start';
32
- /**
33
- * Whether items should wrap to multiple lines
34
- */
35
- wrap = false;
36
- /**
37
- * Alignment of wrapped lines (only applies when wrap is true)
38
- * @allowedValues start | center | end | stretch | space-between | space-around
39
- */
40
- alignContent = 'stretch';
41
- /**
42
- * Whether to reverse the order of items
43
- */
44
- reverse = false;
45
- /**
46
- * Maximum number of items allowed in the stack (for CMS validation)
47
- * @min 1
48
- */
49
- maxItems;
50
- /**
51
- * Whether the stack should take full width of its container
52
- */
53
- fullWidth = false;
54
- /**
55
- * Whether the stack should take full height of its container
56
- */
57
- fullHeight = false;
58
- /**
59
- * Padding inside the stack container (CSS value)
60
- */
61
- padding;
62
48
  getFlexDirection() {
63
49
  const base = this.direction === 'vertical' ? 'column' : 'row';
64
50
  return this.reverse ? `${base}-reverse` : base;
@@ -126,8 +112,9 @@ const LeStack = class {
126
112
  });
127
113
  // Slot style for admin mode - make items display in the same direction
128
114
  const slotStyle = `display: flex; flex-direction: ${this.getFlexDirection()}; gap: ${this.gap || 'var(--le-space-md)'}; flex-wrap: ${this.wrap ? 'wrap' : 'nowrap'}; justify-content: ${this.getJustifyContent()}; align-items: ${this.getAlignItems()};`;
129
- return (index.h("le-component", { key: '465b00b5165b3c19f0043f5ffaab5081464692dc', component: "le-stack", hostClass: hostClass }, index.h("div", { key: '1787122eea7ee7f2986581ef8ab3c65068ef799f', class: "stack", part: "stack", style: style }, index.h("le-slot", { key: '5be191bf1ea7d4edc2f27a6f97e57a038dc8cc94', name: "", description: `Items arranged ${this.direction}ly${this.maxItems ? ` (max ${this.maxItems})` : ''}`, type: "slot", "allowed-components": "le-text,le-box,le-card,le-button,le-stack", slotStyle: slotStyle }, index.h("slot", { key: '9b11206293f60733a0c59de456513088373ce245' })))));
115
+ return (index.h("le-component", { key: 'b38f41c08716826a9f495c9b737adee10f67bec8', component: "le-stack", hostClass: hostClass }, index.h("div", { key: 'd9e716473b3395f89a5d1dfcd064e6292565b828', class: "stack", part: "stack", style: style }, index.h("le-slot", { key: 'fc4d044642cbd9d1a25e300fffc8ad689a0133f2', name: "", description: `Items arranged ${this.direction}ly${this.maxItems ? ` (max ${this.maxItems})` : ''}`, type: "slot", "allowed-components": "le-text,le-box,le-card,le-button,le-stack", slotStyle: slotStyle }, index.h("slot", { key: '94e72a818af3bdb4543f86358ea8ecd048ef5055' })))));
130
116
  }
117
+ get el() { return index.getElement(this); }
131
118
  };
132
119
  LeStack.style = leStackDefaultCss();
133
120
 
@@ -8,55 +8,85 @@ const LeTabBar = class {
8
8
  constructor(hostRef) {
9
9
  index.registerInstance(this, hostRef);
10
10
  this.leTabChange = index.createEvent(this, "leTabChange");
11
+ /**
12
+ * Array of tab options defining the tabs to display.
13
+ */
14
+ this.tabs = [];
15
+ /**
16
+ * Whether tabs should stretch to fill available width.
17
+ */
18
+ this.fullWidth = true;
19
+ /**
20
+ * Whether to show labels in icon-only mode.
21
+ */
22
+ this.showLabels = false;
23
+ /**
24
+ * Position of the tab bar.
25
+ * @allowedValues top | bottom
26
+ */
27
+ this.position = 'top';
28
+ /**
29
+ * Size of the tabs.
30
+ * @allowedValues small | medium | large
31
+ */
32
+ this.size = 'medium';
33
+ /**
34
+ * Whether to show a border below the tab bar.
35
+ */
36
+ this.bordered = true;
37
+ /**
38
+ * Internal tab configurations (built from children or tabs prop)
39
+ */
40
+ this.tabConfigs = [];
41
+ /**
42
+ * Whether we're using declarative mode (le-tab-panel children)
43
+ */
44
+ this.isDeclarativeMode = false;
45
+ /**
46
+ * Internal state for focused tab index (for keyboard navigation)
47
+ */
48
+ this.focusedIndex = 0;
49
+ this.handleTabClick = (tab) => {
50
+ this.selectTab(tab);
51
+ };
52
+ this.handleKeyDown = (event) => {
53
+ const { tabConfigs } = this;
54
+ let newIndex = this.focusedIndex;
55
+ switch (event.key) {
56
+ case 'ArrowLeft':
57
+ event.preventDefault();
58
+ newIndex = this.findNextEnabledTab(-1);
59
+ break;
60
+ case 'ArrowRight':
61
+ event.preventDefault();
62
+ newIndex = this.findNextEnabledTab(1);
63
+ break;
64
+ case 'Home':
65
+ event.preventDefault();
66
+ newIndex = this.findFirstEnabledTab();
67
+ break;
68
+ case 'End':
69
+ event.preventDefault();
70
+ newIndex = this.findLastEnabledTab();
71
+ break;
72
+ case 'Enter':
73
+ case ' ':
74
+ event.preventDefault();
75
+ if (tabConfigs[this.focusedIndex]) {
76
+ this.selectTab(tabConfigs[this.focusedIndex]);
77
+ }
78
+ return;
79
+ default:
80
+ return;
81
+ }
82
+ if (newIndex !== this.focusedIndex) {
83
+ this.focusedIndex = newIndex;
84
+ if (tabConfigs[newIndex]) {
85
+ this.selectTab(tabConfigs[newIndex]);
86
+ }
87
+ }
88
+ };
11
89
  }
12
- get el() { return index.getElement(this); }
13
- /**
14
- * Array of tab options defining the tabs to display.
15
- */
16
- tabs = [];
17
- /**
18
- * The value of the currently selected tab.
19
- */
20
- selected;
21
- /**
22
- * Whether tabs should stretch to fill available width.
23
- */
24
- fullWidth = true;
25
- /**
26
- * Whether to show labels in icon-only mode.
27
- */
28
- showLabels = false;
29
- /**
30
- * Position of the tab bar.
31
- * @allowedValues top | bottom
32
- */
33
- position = 'top';
34
- /**
35
- * Size of the tabs.
36
- * @allowedValues small | medium | large
37
- */
38
- size = 'medium';
39
- /**
40
- * Whether to show a border below the tab bar.
41
- */
42
- bordered = true;
43
- /**
44
- * Internal tab configurations (built from children or tabs prop)
45
- */
46
- tabConfigs = [];
47
- /**
48
- * Whether we're using declarative mode (le-tab-panel children)
49
- */
50
- isDeclarativeMode = false;
51
- /**
52
- * Internal state for focused tab index (for keyboard navigation)
53
- */
54
- focusedIndex = 0;
55
- /**
56
- * Emitted when the selected tab changes.
57
- */
58
- leTabChange;
59
- mutationObserver;
60
90
  selectedChanged(newValue) {
61
91
  const index = this.tabConfigs.findIndex(t => t.value === newValue);
62
92
  if (index >= 0) {
@@ -155,46 +185,6 @@ const LeTabBar = class {
155
185
  this.selected = value;
156
186
  this.leTabChange.emit({ value, option: tab });
157
187
  }
158
- handleTabClick = (tab) => {
159
- this.selectTab(tab);
160
- };
161
- handleKeyDown = (event) => {
162
- const { tabConfigs } = this;
163
- let newIndex = this.focusedIndex;
164
- switch (event.key) {
165
- case 'ArrowLeft':
166
- event.preventDefault();
167
- newIndex = this.findNextEnabledTab(-1);
168
- break;
169
- case 'ArrowRight':
170
- event.preventDefault();
171
- newIndex = this.findNextEnabledTab(1);
172
- break;
173
- case 'Home':
174
- event.preventDefault();
175
- newIndex = this.findFirstEnabledTab();
176
- break;
177
- case 'End':
178
- event.preventDefault();
179
- newIndex = this.findLastEnabledTab();
180
- break;
181
- case 'Enter':
182
- case ' ':
183
- event.preventDefault();
184
- if (tabConfigs[this.focusedIndex]) {
185
- this.selectTab(tabConfigs[this.focusedIndex]);
186
- }
187
- return;
188
- default:
189
- return;
190
- }
191
- if (newIndex !== this.focusedIndex) {
192
- this.focusedIndex = newIndex;
193
- if (tabConfigs[newIndex]) {
194
- this.selectTab(tabConfigs[newIndex]);
195
- }
196
- }
197
- };
198
188
  findNextEnabledTab(direction) {
199
189
  const { tabConfigs } = this;
200
190
  let index = this.focusedIndex;
@@ -225,12 +215,13 @@ const LeTabBar = class {
225
215
  'position-top': this.position === 'top',
226
216
  'position-bottom': this.position === 'bottom',
227
217
  };
228
- return (index.h(index.Host, { key: '71b1a2d80884dc9a494edf55b28bfa178b44f284', class: classes }, index.h("le-component", { key: 'a09f1adff893b3b1f7c2f2ea0115133df906153f', component: "le-tab-bar" }, index.h("div", { key: 'f9b3046469fcaf0a3164fc5bb2038d54916dcb83', class: "tablist", role: "tablist", "aria-orientation": "horizontal", part: "tablist", onKeyDown: this.handleKeyDown }, index.h("le-slot", { key: '2a4ef6c858a7a0c8d9d2942d68183887153101c3', name: "", type: "slot", allowedComponents: "le-tab" }, tabConfigs.map(tab => {
218
+ return (index.h(index.Host, { key: 'f652526506b36c22ce349d7a35177ded9d7bdfdb', class: classes }, index.h("le-component", { key: 'f08e832354f7175492c29aa0761a617f2440b032', component: "le-tab-bar" }, index.h("div", { key: '6bb6f659626795d8dfd2df0eccfd817a6f561223', class: "tablist", role: "tablist", "aria-orientation": "horizontal", part: "tablist", onKeyDown: this.handleKeyDown }, index.h("le-slot", { key: 'c6b64eaf7777645bb1eb760ed25c42a0d657a152', name: "", type: "slot", allowedComponents: "le-tab" }, tabConfigs.map(tab => {
229
219
  const value = this.getTabValue(tab);
230
220
  const isSelected = value === selected;
231
221
  return (index.h("le-tab", { key: value, class: "tab", role: "tab", variant: "icon-only", label: tab.label, value: tab.value, icon: tab.icon, href: tab.href, selected: isSelected, disabled: tab.disabled, showLabel: this.showLabels, size: size, part: isSelected ? 'tab tab-active' : 'tab', "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": tab.disabled ? 'true' : undefined, tabIndex: -1, onClick: () => this.handleTabClick(tab) }, index.h("span", { class: "tab-label" }, tab.label)));
232
222
  }))))));
233
223
  }
224
+ get el() { return index.getElement(this); }
234
225
  static get watchers() { return {
235
226
  "selected": ["selectedChanged"],
236
227
  "tabs": ["tabsChanged"]
@@ -7,44 +7,25 @@ const leTabPanelCss = () => `:host{display:contents;--le-tab-panel-radius:var(--
7
7
  const LeTabPanel = class {
8
8
  constructor(hostRef) {
9
9
  index.registerInstance(this, hostRef);
10
+ /**
11
+ * Whether this tab is disabled.
12
+ */
13
+ this.disabled = false;
14
+ /**
15
+ * Whether to render the panel content only when active (lazy loading).
16
+ * When true, content is not rendered until the tab is first selected.
17
+ * When false (default), content is always in DOM but hidden when inactive.
18
+ */
19
+ this.lazy = false;
20
+ /**
21
+ * Internal: Whether this panel is currently active (set by parent le-tabs)
22
+ */
23
+ this.active = false;
24
+ /**
25
+ * Internal: Track if panel has ever been activated (for lazy rendering)
26
+ */
27
+ this.hasBeenActive = false;
10
28
  }
11
- get el() { return index.getElement(this); }
12
- /**
13
- * The label displayed in the tab button.
14
- */
15
- label;
16
- /**
17
- * The value used to identify this tab.
18
- * Defaults to the label if not provided.
19
- */
20
- value;
21
- /**
22
- * Icon displayed at the start of the tab button.
23
- * Can be an emoji, URL, or icon class.
24
- */
25
- iconStart;
26
- /**
27
- * Icon displayed at the end of the tab button.
28
- */
29
- iconEnd;
30
- /**
31
- * Whether this tab is disabled.
32
- */
33
- disabled = false;
34
- /**
35
- * Whether to render the panel content only when active (lazy loading).
36
- * When true, content is not rendered until the tab is first selected.
37
- * When false (default), content is always in DOM but hidden when inactive.
38
- */
39
- lazy = false;
40
- /**
41
- * Internal: Whether this panel is currently active (set by parent le-tabs)
42
- */
43
- active = false;
44
- /**
45
- * Internal: Track if panel has ever been activated (for lazy rendering)
46
- */
47
- hasBeenActive = false;
48
29
  activeChanged(isActive) {
49
30
  if (isActive && !this.hasBeenActive) {
50
31
  this.hasBeenActive = true;
@@ -84,12 +65,13 @@ const LeTabPanel = class {
84
65
  }
85
66
  render() {
86
67
  const shouldRender = this.shouldRenderContent();
87
- return (index.h("le-component", { key: '1315534f32fe8cc7f2ff1c0ec0457d30514064d4', component: "le-tab-panel" }, index.h("div", { key: '7544225e28b3be3e09269a669676515dc4ad097c', class: {
68
+ return (index.h("le-component", { key: '59065fc7bdcc672b1f57c4ae128de9d16a217df4', component: "le-tab-panel" }, index.h("div", { key: 'fedc22f870d44f09e377901ddb899165a732bc9a', class: {
88
69
  'tab-panel': true,
89
70
  'active': this.active,
90
71
  'lazy-hidden': this.lazy && !this.active,
91
- }, role: "tabpanel", "aria-hidden": !this.active ? 'true' : undefined, tabIndex: this.active ? 0 : -1 }, index.h("le-slot", { key: 'a686c87a4e5a62a6befb425141bd96b59273ec6b', name: "", description: "Tab panel content", type: "slot" }, shouldRender && index.h("slot", { key: '76bd67392762a5ddbf8124c5596c6cb37ecf44fa' })))));
72
+ }, role: "tabpanel", "aria-hidden": !this.active ? 'true' : undefined, tabIndex: this.active ? 0 : -1 }, index.h("le-slot", { key: '9bfd050807c1fe1b6565d1412a7c53cff09bef60', name: "", description: "Tab panel content", type: "slot" }, shouldRender && index.h("slot", { key: 'ab002fd0fd28ece94864d2774d35170b3f506881' })))));
92
73
  }
74
+ get el() { return index.getElement(this); }
93
75
  static get watchers() { return {
94
76
  "active": ["activeChanged"]
95
77
  }; }
@@ -12,82 +12,58 @@ const LeTab = class {
12
12
  constructor(hostRef) {
13
13
  index.registerInstance(this, hostRef);
14
14
  this.leClick = index.createEvent(this, "click");
15
+ /**
16
+ * Tab variant style
17
+ * @allowedValues solid | underlined | clear | enclosed | icon-only
18
+ */
19
+ this.variant = 'underlined';
20
+ /**
21
+ * Position of the tabs when used within a le-tabs component
22
+ * @allowedValues top | bottom | start | end
23
+ */
24
+ this.position = 'top';
25
+ /**
26
+ * Tab size
27
+ * @allowedValues small | medium | large
28
+ */
29
+ this.size = 'medium';
30
+ /**
31
+ * Whether the tab can get focus
32
+ * needed for accessibility when used in custom tab implementations
33
+ */
34
+ this.focusable = true;
35
+ /**
36
+ * Whether the tab is in a selected/active state
37
+ */
38
+ this.selected = false;
39
+ /**
40
+ * Whether the tab takes full width of its container
41
+ */
42
+ this.fullWidth = false;
43
+ /**
44
+ * Whether to show the label when in icon-only mode
45
+ */
46
+ this.showLabel = false;
47
+ /**
48
+ * Whether the tab is disabled
49
+ */
50
+ this.disabled = false;
51
+ /**
52
+ * Alignment of the tab label without the end icon
53
+ * @allowedValues start | center | space-between | end
54
+ */
55
+ this.align = 'center';
56
+ this.handleClick = (event) => {
57
+ // We stop the internal button click from bubbling up
58
+ event.stopPropagation();
59
+ if (this.disabled) {
60
+ event.preventDefault();
61
+ return;
62
+ }
63
+ // And emit our own click event from the host element
64
+ this.leClick.emit(event);
65
+ };
15
66
  }
16
- get el() { return index.getElement(this); }
17
- /**
18
- * Mode of the popover should be 'default' for internal use
19
- */
20
- mode;
21
- /**
22
- * Label if it is not provided via slot
23
- */
24
- label;
25
- /**
26
- * Value of the tab, defaults to label if not provided
27
- */
28
- value;
29
- /**
30
- * Tab variant style
31
- * @allowedValues solid | underlined | clear | enclosed | icon-only
32
- */
33
- variant = 'underlined';
34
- /**
35
- * Position of the tabs when used within a le-tabs component
36
- * @allowedValues top | bottom | start | end
37
- */
38
- position = 'top';
39
- /**
40
- * Tab size
41
- * @allowedValues small | medium | large
42
- */
43
- size = 'medium';
44
- /**
45
- * Whether the tab can get focus
46
- * needed for accessibility when used in custom tab implementations
47
- */
48
- focusable = true;
49
- /**
50
- * Whether the tab is in a selected/active state
51
- */
52
- selected = false;
53
- /**
54
- * Whether the tab takes full width of its container
55
- */
56
- fullWidth = false;
57
- /**
58
- * Icon only tab image or emoji
59
- * if this prop is set, the tab will render only the icon slot
60
- */
61
- icon;
62
- /**
63
- * Whether to show the label when in icon-only mode
64
- */
65
- showLabel = false;
66
- /**
67
- * Start icon image or emoji
68
- */
69
- iconStart;
70
- /**
71
- * End icon image or emoji
72
- */
73
- iconEnd;
74
- /**
75
- * Whether the tab is disabled
76
- */
77
- disabled = false;
78
- /**
79
- * Optional href to make the tab act as a link
80
- */
81
- href;
82
- /**
83
- * Link target when href is set
84
- */
85
- target;
86
- /**
87
- * Alignment of the tab label without the end icon
88
- * @allowedValues start | center | space-between | end
89
- */
90
- align = 'center';
91
67
  /**
92
68
  * Get tab configuration for parent component
93
69
  */
@@ -101,21 +77,6 @@ const LeTab = class {
101
77
  disabled: this.disabled,
102
78
  };
103
79
  }
104
- /**
105
- * Emitted when the tab is clicked.
106
- * This is a custom event that wraps the native click but ensures the target is the le-tab.
107
- */
108
- leClick;
109
- handleClick = (event) => {
110
- // We stop the internal button click from bubbling up
111
- event.stopPropagation();
112
- if (this.disabled) {
113
- event.preventDefault();
114
- return;
115
- }
116
- // And emit our own click event from the host element
117
- this.leClick.emit(event);
118
- };
119
80
  render() {
120
81
  const classes = utils.classnames(`variant-${this.variant}`, `size-${this.size}`, `position-${this.position}`, {
121
82
  'selected': this.selected,
@@ -127,8 +88,9 @@ const LeTab = class {
127
88
  const attrs = this.href
128
89
  ? { href: this.href, target: this.target, role: 'button' }
129
90
  : { disabled: this.disabled };
130
- return (index.h(index.Host, { key: 'a539044017f98ddaa7636df1457b669f56c19d94' }, index.h("le-component", { key: 'b6df3e0738be09d00f3cd802b3cd06af4402e746', component: "le-tab" }, index.h(TagType, { key: 'a37f2d404da74b5b0d99bbb0b9ff57121903ee2d', class: utils.classnames('le-tab-container', `le-tab-align-${this.align}`, classes), part: "button", ...attrs, onClick: this.handleClick, tabIndex: this.focusable ? 0 : -1 }, this.icon !== undefined ? (index.h("div", { class: "icon-only" }, index.h("div", { class: "icon" }, this.icon), this.showLabel && index.h("span", { class: "icon-label" }, this.label))) : (index.h(index.Fragment, null, index.h("span", { class: "le-tab-label" }, this.iconStart && (index.h("span", { class: "icon-start", part: "icon-start" }, this.iconStart)), index.h("le-slot", { name: "", description: "Tab text", type: "text", class: "content", part: "content" }, index.h("slot", null, this.label))), this.iconEnd && (index.h("span", { class: "icon-end", part: "icon-end" }, this.iconEnd))))))));
91
+ return (index.h(index.Host, { key: '1c4f36bb0cd97c1fea114d5119425507d133cf55' }, index.h("le-component", { key: '5a8755d8cf973d2f7d9f25e8d984f4a35047c6c2', component: "le-tab" }, index.h(TagType, { key: '875b8ef5905a15e3c114001f3a7b05ce3731e037', class: utils.classnames('le-tab-container', `le-tab-align-${this.align}`, classes), part: "button", ...attrs, onClick: this.handleClick, tabIndex: this.focusable ? 0 : -1 }, this.icon !== undefined ? (index.h("div", { class: "icon-only" }, index.h("div", { class: "icon" }, this.icon), this.showLabel && index.h("span", { class: "icon-label" }, this.label))) : (index.h(index.Fragment, null, index.h("span", { class: "le-tab-label" }, this.iconStart && (index.h("span", { class: "icon-start", part: "icon-start" }, this.iconStart)), index.h("le-slot", { name: "", description: "Tab text", type: "text", class: "content", part: "content" }, index.h("slot", null, this.label))), this.iconEnd && (index.h("span", { class: "icon-end", part: "icon-end" }, this.iconEnd))))))));
131
92
  }
93
+ get el() { return index.getElement(this); }
132
94
  };
133
95
  LeTab.style = leTabCss();
134
96