le-kit 0.5.1 → 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 +1371 -1043
  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 +1371 -1043
  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 +1371 -1043
  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-6b69f9a2.entry.js +0 -2
  289. package/dist/le-kit/p-6b69f9a2.entry.js.map +0 -1
  290. package/dist/le-kit/p-6d14306f.entry.js +0 -2
  291. package/dist/le-kit/p-6d14306f.entry.js.map +0 -1
  292. package/dist/le-kit/p-7bcdf2d4.entry.js +0 -2
  293. package/dist/le-kit/p-7bcdf2d4.entry.js.map +0 -1
  294. package/dist/le-kit/p-7cf1e23c.entry.js +0 -2
  295. package/dist/le-kit/p-7cf1e23c.entry.js.map +0 -1
  296. package/dist/le-kit/p-85f2fd4d.entry.js +0 -2
  297. package/dist/le-kit/p-85f2fd4d.entry.js.map +0 -1
  298. package/dist/le-kit/p-98242429.entry.js +0 -2
  299. package/dist/le-kit/p-98242429.entry.js.map +0 -1
  300. package/dist/le-kit/p-ab6c1def.entry.js.map +0 -1
  301. package/dist/le-kit/p-ae4ead64.entry.js +0 -2
  302. package/dist/le-kit/p-ae4ead64.entry.js.map +0 -1
  303. package/dist/le-kit/p-b05d4511.entry.js +0 -2
  304. package/dist/le-kit/p-b05d4511.entry.js.map +0 -1
  305. package/dist/le-kit/p-b6ac02ff.entry.js +0 -2
  306. package/dist/le-kit/p-b6ac02ff.entry.js.map +0 -1
  307. package/dist/le-kit/p-c24769e2.entry.js +0 -2
  308. package/dist/le-kit/p-c24769e2.entry.js.map +0 -1
  309. package/dist/le-kit/p-dc0445ad.entry.js +0 -2
  310. package/dist/le-kit/p-dc0445ad.entry.js.map +0 -1
  311. package/dist/le-kit/p-eb5286f2.entry.js +0 -2
  312. package/dist/le-kit/p-eb5286f2.entry.js.map +0 -1
  313. package/dist/le-kit/p-eb710c8e.entry.js +0 -2
  314. package/dist/le-kit/p-eb710c8e.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
@@ -9,68 +9,116 @@ const LeTabs = class {
9
9
  constructor(hostRef) {
10
10
  index.registerInstance(this, hostRef);
11
11
  this.leTabChange = index.createEvent(this, "leTabChange");
12
+ /**
13
+ * Array of tab options (programmatic mode).
14
+ * If le-tab-panel children exist, they take precedence.
15
+ */
16
+ this.tabs = [];
17
+ /**
18
+ * Orientation of the tabs.
19
+ * @allowedValues horizontal | vertical
20
+ */
21
+ this.orientation = 'horizontal';
22
+ /**
23
+ * Position of the tabs relative to the panels.
24
+ * @allowedValues start | end
25
+ */
26
+ this.position = 'start';
27
+ /**
28
+ * Tab variant style.
29
+ * @allowedValues underlined | solid | pills | enclosed | icon-only
30
+ */
31
+ this.variant = 'underlined';
32
+ /**
33
+ * Whether tabs should stretch to fill available width.
34
+ */
35
+ this.fullWidth = false;
36
+ /**
37
+ * Size of the tabs.
38
+ * @allowedValues sm | md | lg
39
+ */
40
+ this.size = 'medium';
41
+ /**
42
+ * Wrap the tabs if they exceed container width.
43
+ */
44
+ this.wrap = false;
45
+ /**
46
+ * Scroll behavior for overflowing tabs.
47
+ * @allowedValues auto | hidden | visible | scroll
48
+ */
49
+ this.overflow = 'auto';
50
+ /**
51
+ * Internal tab configurations (built from children or tabs prop)
52
+ */
53
+ this.tabConfigs = [];
54
+ /**
55
+ * Internal state for focused tab index (for keyboard navigation)
56
+ */
57
+ this.focusedIndex = 0;
58
+ /**
59
+ * Whether we're using declarative mode (le-tab-panel children)
60
+ */
61
+ this.isDeclarativeMode = false;
62
+ this.handleTabClick = (config) => {
63
+ this.selectTab(config);
64
+ };
65
+ this.handleKeyDown = (event) => {
66
+ const { tabConfigs, orientation } = this;
67
+ const isHorizontal = orientation === 'horizontal';
68
+ let newIndex = this.focusedIndex;
69
+ switch (event.key) {
70
+ case 'ArrowLeft':
71
+ if (isHorizontal) {
72
+ event.preventDefault();
73
+ newIndex = this.findNextEnabledTab(-1);
74
+ }
75
+ break;
76
+ case 'ArrowRight':
77
+ if (isHorizontal) {
78
+ event.preventDefault();
79
+ newIndex = this.findNextEnabledTab(1);
80
+ }
81
+ break;
82
+ case 'ArrowUp':
83
+ if (!isHorizontal) {
84
+ event.preventDefault();
85
+ newIndex = this.findNextEnabledTab(-1);
86
+ }
87
+ break;
88
+ case 'ArrowDown':
89
+ if (!isHorizontal) {
90
+ event.preventDefault();
91
+ newIndex = this.findNextEnabledTab(1);
92
+ }
93
+ break;
94
+ case 'Home':
95
+ event.preventDefault();
96
+ newIndex = this.findFirstEnabledTab();
97
+ break;
98
+ case 'End':
99
+ event.preventDefault();
100
+ newIndex = this.findLastEnabledTab();
101
+ break;
102
+ case 'Enter':
103
+ case ' ':
104
+ event.preventDefault();
105
+ if (tabConfigs[this.focusedIndex]) {
106
+ this.selectTab(tabConfigs[this.focusedIndex]);
107
+ }
108
+ return;
109
+ default:
110
+ return;
111
+ }
112
+ if (newIndex !== this.focusedIndex) {
113
+ this.focusedIndex = newIndex;
114
+ this.focusTab(newIndex);
115
+ // Auto-select on focus (recommended for tabs)
116
+ if (tabConfigs[newIndex]) {
117
+ this.selectTab(tabConfigs[newIndex]);
118
+ }
119
+ }
120
+ };
12
121
  }
13
- get el() { return index.getElement(this); }
14
- /**
15
- * Array of tab options (programmatic mode).
16
- * If le-tab-panel children exist, they take precedence.
17
- */
18
- tabs = [];
19
- /**
20
- * The value of the currently selected tab.
21
- * If not provided, defaults to the first tab.
22
- */
23
- selected;
24
- /**
25
- * Orientation of the tabs.
26
- * @allowedValues horizontal | vertical
27
- */
28
- orientation = 'horizontal';
29
- /**
30
- * Position of the tabs relative to the panels.
31
- * @allowedValues start | end
32
- */
33
- position = 'start';
34
- /**
35
- * Tab variant style.
36
- * @allowedValues underlined | solid | pills | enclosed | icon-only
37
- */
38
- variant = 'underlined';
39
- /**
40
- * Whether tabs should stretch to fill available width.
41
- */
42
- fullWidth = false;
43
- /**
44
- * Size of the tabs.
45
- * @allowedValues sm | md | lg
46
- */
47
- size = 'medium';
48
- /**
49
- * Wrap the tabs if they exceed container width.
50
- */
51
- wrap = false;
52
- /**
53
- * Scroll behavior for overflowing tabs.
54
- * @allowedValues auto | hidden | visible | scroll
55
- */
56
- overflow = 'auto';
57
- /**
58
- * Internal tab configurations (built from children or tabs prop)
59
- */
60
- tabConfigs = [];
61
- /**
62
- * Internal state for focused tab index (for keyboard navigation)
63
- */
64
- focusedIndex = 0;
65
- /**
66
- * Whether we're using declarative mode (le-tab-panel children)
67
- */
68
- isDeclarativeMode = false;
69
- /**
70
- * Emitted when the selected tab changes.
71
- */
72
- leTabChange;
73
- mutationObserver;
74
122
  selectedChanged(newValue) {
75
123
  const index = this.tabConfigs.findIndex(t => t.value === newValue);
76
124
  if (index >= 0) {
@@ -172,65 +220,6 @@ const LeTabs = class {
172
220
  },
173
221
  });
174
222
  }
175
- handleTabClick = (config) => {
176
- this.selectTab(config);
177
- };
178
- handleKeyDown = (event) => {
179
- const { tabConfigs, orientation } = this;
180
- const isHorizontal = orientation === 'horizontal';
181
- let newIndex = this.focusedIndex;
182
- switch (event.key) {
183
- case 'ArrowLeft':
184
- if (isHorizontal) {
185
- event.preventDefault();
186
- newIndex = this.findNextEnabledTab(-1);
187
- }
188
- break;
189
- case 'ArrowRight':
190
- if (isHorizontal) {
191
- event.preventDefault();
192
- newIndex = this.findNextEnabledTab(1);
193
- }
194
- break;
195
- case 'ArrowUp':
196
- if (!isHorizontal) {
197
- event.preventDefault();
198
- newIndex = this.findNextEnabledTab(-1);
199
- }
200
- break;
201
- case 'ArrowDown':
202
- if (!isHorizontal) {
203
- event.preventDefault();
204
- newIndex = this.findNextEnabledTab(1);
205
- }
206
- break;
207
- case 'Home':
208
- event.preventDefault();
209
- newIndex = this.findFirstEnabledTab();
210
- break;
211
- case 'End':
212
- event.preventDefault();
213
- newIndex = this.findLastEnabledTab();
214
- break;
215
- case 'Enter':
216
- case ' ':
217
- event.preventDefault();
218
- if (tabConfigs[this.focusedIndex]) {
219
- this.selectTab(tabConfigs[this.focusedIndex]);
220
- }
221
- return;
222
- default:
223
- return;
224
- }
225
- if (newIndex !== this.focusedIndex) {
226
- this.focusedIndex = newIndex;
227
- this.focusTab(newIndex);
228
- // Auto-select on focus (recommended for tabs)
229
- if (tabConfigs[newIndex]) {
230
- this.selectTab(tabConfigs[newIndex]);
231
- }
232
- }
233
- };
234
223
  findNextEnabledTab(direction) {
235
224
  const { tabConfigs } = this;
236
225
  let index = this.focusedIndex;
@@ -273,7 +262,7 @@ const LeTabs = class {
273
262
  : this.position === 'start'
274
263
  ? 'top'
275
264
  : 'bottom';
276
- return (index.h("le-component", { key: '9a92363db43231088e476bca66dbbf47f26ebf34', component: "le-tabs", hostClass: utils.classnames(classes) }, index.h("div", { key: '3c14f3367e2b281090721e5521bfa8a3b53f5b97', class: classes }, index.h("div", { key: 'cd4aad46f9a8e1ec5760f9388a0c4149556bfb06', class: {
265
+ return (index.h("le-component", { key: '0240e0ae8c8b2513e80e8a032101df47a2041e3d', component: "le-tabs", hostClass: utils.classnames(classes) }, index.h("div", { key: 'b063db57a29d4c212ed81a738c41d7e395f5618c', class: classes }, index.h("div", { key: '01ba40aac8cb13357c668d82daf7c34f7fb104e6', class: {
277
266
  'tablist': true,
278
267
  'wrap-tabs': this.wrap,
279
268
  [`overflow-${this.overflow}`]: true,
@@ -282,7 +271,7 @@ const LeTabs = class {
282
271
  const tabId = `tab-${config.value}`;
283
272
  const panelId = `panel-${config.value}`;
284
273
  return (index.h("le-tab", { key: config.value, id: tabId, class: "tab", mode: "default", variant: this.variant, selected: isSelected, disabled: config.disabled, size: this.size, position: tabPosition, align: this.orientation === 'vertical' ? 'start' : 'center', role: "tab", part: isSelected ? 'tab tab-active' : 'tab', "aria-selected": isSelected ? 'true' : 'false', "aria-controls": panelId, "aria-disabled": config.disabled ? 'true' : undefined, focusable: false, onClick: () => this.handleTabClick(config), iconStart: config.iconStart, iconEnd: config.iconEnd }, index.h("span", { class: "tab-label" }, config.label)));
285
- })), index.h("div", { key: '0b34e9ab8ce8f0e31ad9392bc3a6a60c92a0aa00', class: "panels", part: "panels" }, isDeclarativeMode ? (
274
+ })), index.h("div", { key: 'b1e16928f27f5083e94674e80b0ad397eb3e8fec', class: "panels", part: "panels" }, isDeclarativeMode ? (
286
275
  // Declarative mode - render slot for le-tab-panel children
287
276
  index.h("le-slot", { name: "", description: "Tab panels", type: "slot", allowedComponents: "le-tab-panel" }, index.h("slot", null))) : (
288
277
  // Programmatic mode - render named slots
@@ -296,6 +285,7 @@ const LeTabs = class {
296
285
  }, role: "tabpanel", part: "panel", "aria-labelledby": tabId, tabIndex: 0, hidden: !isSelected }, index.h("slot", { name: `panel-${config.value}` })));
297
286
  }))))));
298
287
  }
288
+ get el() { return index.getElement(this); }
299
289
  static get watchers() { return {
300
290
  "selected": ["selectedChanged"],
301
291
  "tabs": ["tabsChanged"]
@@ -8,46 +8,29 @@ const LeTag = class {
8
8
  constructor(hostRef) {
9
9
  index.registerInstance(this, hostRef);
10
10
  this.leDismiss = index.createEvent(this, "leDismiss");
11
+ /**
12
+ * Whether the tag can be dismissed (shows close button).
13
+ */
14
+ this.dismissible = false;
15
+ /**
16
+ * Whether the tag is disabled.
17
+ */
18
+ this.disabled = false;
19
+ /**
20
+ * The size of the tag.
21
+ */
22
+ this.size = 'medium';
23
+ /**
24
+ * The visual variant of the tag.
25
+ */
26
+ this.variant = 'default';
27
+ this.handleDismiss = (e) => {
28
+ e.stopPropagation();
29
+ if (!this.disabled) {
30
+ this.leDismiss.emit();
31
+ }
32
+ };
11
33
  }
12
- /**
13
- * The text label to display in the tag.
14
- */
15
- label;
16
- /**
17
- * Mode of the popover should be 'default' for internal use
18
- */
19
- mode;
20
- /**
21
- * Icon to display before the label.
22
- * Can be an emoji, URL, or icon name.
23
- */
24
- icon;
25
- /**
26
- * Whether the tag can be dismissed (shows close button).
27
- */
28
- dismissible = false;
29
- /**
30
- * Whether the tag is disabled.
31
- */
32
- disabled = false;
33
- /**
34
- * The size of the tag.
35
- */
36
- size = 'medium';
37
- /**
38
- * The visual variant of the tag.
39
- */
40
- variant = 'default';
41
- /**
42
- * Emitted when the dismiss button is clicked.
43
- */
44
- leDismiss;
45
- handleDismiss = (e) => {
46
- e.stopPropagation();
47
- if (!this.disabled) {
48
- this.leDismiss.emit();
49
- }
50
- };
51
34
  renderIcon() {
52
35
  if (!this.icon)
53
36
  return null;
@@ -59,7 +42,7 @@ const LeTag = class {
59
42
  return index.h("span", { class: "tag-icon" }, this.icon);
60
43
  }
61
44
  render() {
62
- return (index.h("le-component", { key: '8c76ae38877bbb3ba35588adadee0cf61b76ffed', component: "le-tag" }, index.h("span", { key: 'a2dd1709505e58baada6fb9b40312e207435e8a6', class: "tag" }, this.renderIcon(), index.h("span", { key: '99bac5f6df170af17de5550b9f0489538e9760bc', class: "tag-label" }, index.h("le-slot", { key: '41740e400b168986980e8ff93187af9828cca5f9', name: "", tag: "span", type: "text" }, index.h("slot", { key: 'd823f3dc74c1e49b89fe5fff2df9d7e244d7d591' }, this.label))), this.dismissible && (index.h("button", { key: '96a058e3cab2d7fb091e1e6ec77404f8cf80358c', type: "button", class: "tag-dismiss", onClick: this.handleDismiss, disabled: this.disabled, "aria-label": "Remove" }, index.h("svg", { key: 'bfbb3f7c73aef6f06f5c45e98d4047d2aa629f2c', viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("path", { key: '16a68b9458ccd806415d5ef8bda7fa1513cdf46d', d: "M4 4l8 8M12 4l-8 8" })))))));
45
+ return (index.h("le-component", { key: '6903620dec3042a396c4e39ed378f59e4889fb5f', component: "le-tag" }, index.h("span", { key: '23a31349e50aeb8a38bfdf22e6151562eaa16a6e', class: "tag" }, this.renderIcon(), index.h("span", { key: '8505dd5c9ed47baf702d947bf687875dd7c8283e', class: "tag-label" }, index.h("le-slot", { key: '1f7b44714f1f1b4f1a1a5af6925b15d6026cc7e4', name: "", tag: "span", type: "text" }, index.h("slot", { key: '7722a7f387284cbc3c8ef38deeff69c7a02282a8' }, this.label))), this.dismissible && (index.h("button", { key: 'ae937d67c269ef0ff504926623ed95061c750232', type: "button", class: "tag-dismiss", onClick: this.handleDismiss, disabled: this.disabled, "aria-label": "Remove" }, index.h("svg", { key: '9cf11ec361d62de7b6ef524c40edad13c1da9c06', viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("path", { key: 'e919bccb3fa4679f7e808960195d670685f1e0df', d: "M4 4l8 8M12 4l-8 8" })))))));
63
46
  }
64
47
  };
65
48
  LeTag.style = leTagCss();
@@ -8,62 +8,137 @@ const leTextCss = () => `:host{display:block}:host([hidden]){display:none}.le-te
8
8
  const LeText = class {
9
9
  constructor(hostRef) {
10
10
  index.registerInstance(this, hostRef);
11
+ /**
12
+ * The semantic variant/type of text element
13
+ * @allowedValues p | h1 | h2 | h3 | h4 | h5 | h6 | code | quote | label | small
14
+ */
15
+ this.variant = 'p';
16
+ /**
17
+ * Text alignment
18
+ * @allowedValues left | center | right | justify
19
+ */
20
+ this.align = 'left';
21
+ /**
22
+ * Whether the text should truncate with ellipsis
23
+ */
24
+ this.truncate = false;
25
+ /**
26
+ * Internal state to track admin mode
27
+ */
28
+ this.adminMode = false;
29
+ /**
30
+ * The HTML content being edited
31
+ */
32
+ this.content = '';
33
+ /**
34
+ * Whether the editor is focused (shows toolbar)
35
+ */
36
+ this.isFocused = false;
37
+ /**
38
+ * Current selection state for toolbar button highlighting
39
+ */
40
+ this.selectionState = {
41
+ isBold: false,
42
+ isItalic: false,
43
+ isUnderline: false,
44
+ isStrikethrough: false,
45
+ isLink: false,
46
+ blockType: 'p',
47
+ };
48
+ /**
49
+ * Handle input in the contenteditable
50
+ */
51
+ this.handleInput = () => {
52
+ if (this.editorRef) {
53
+ this.content = this.editorRef.innerHTML;
54
+ this.updateSelectionState();
55
+ }
56
+ };
57
+ /**
58
+ * Handle focus on the editor
59
+ */
60
+ this.handleFocus = () => {
61
+ this.isFocused = true;
62
+ this.updateSelectionState();
63
+ };
64
+ /**
65
+ * Handle blur on the editor
66
+ */
67
+ this.handleBlur = (e) => {
68
+ // Check if focus moved to toolbar
69
+ const relatedTarget = e.relatedTarget;
70
+ const toolbar = this.el.shadowRoot?.querySelector('.le-text-toolbar');
71
+ if (toolbar?.contains(relatedTarget)) {
72
+ // Focus moved to toolbar, keep it open
73
+ return;
74
+ }
75
+ // Small delay to allow toolbar clicks to register
76
+ setTimeout(() => {
77
+ if (!this.el.shadowRoot?.activeElement) {
78
+ this.isFocused = false;
79
+ this.syncContentToSlot();
80
+ }
81
+ }, 150);
82
+ };
83
+ /**
84
+ * Handle selection change to update toolbar state
85
+ */
86
+ this.handleSelectionChange = () => {
87
+ this.updateSelectionState();
88
+ };
89
+ /**
90
+ * Toggle bold formatting
91
+ */
92
+ this.toggleBold = (e) => {
93
+ e.preventDefault();
94
+ this.execCommand('bold');
95
+ };
96
+ /**
97
+ * Toggle italic formatting
98
+ */
99
+ this.toggleItalic = (e) => {
100
+ e.preventDefault();
101
+ this.execCommand('italic');
102
+ };
103
+ /**
104
+ * Toggle underline formatting
105
+ */
106
+ this.toggleUnderline = (e) => {
107
+ e.preventDefault();
108
+ this.execCommand('underline');
109
+ };
110
+ /**
111
+ * Toggle strikethrough formatting
112
+ */
113
+ this.toggleStrikethrough = (e) => {
114
+ e.preventDefault();
115
+ this.execCommand('strikeThrough');
116
+ };
117
+ /**
118
+ * Add or edit a link
119
+ */
120
+ this.toggleLink = (e) => {
121
+ e.preventDefault();
122
+ if (this.selectionState.isLink) {
123
+ // Remove link
124
+ this.execCommand('unlink');
125
+ }
126
+ else {
127
+ // Add link
128
+ const url = prompt('Enter URL:', 'https://');
129
+ if (url) {
130
+ this.execCommand('createLink', url);
131
+ }
132
+ }
133
+ };
134
+ /**
135
+ * Change the block type/variant
136
+ */
137
+ this.changeVariant = (e) => {
138
+ const select = e.target;
139
+ this.variant = select.value;
140
+ };
11
141
  }
12
- get el() { return index.getElement(this); }
13
- /**
14
- * The semantic variant/type of text element
15
- * @allowedValues p | h1 | h2 | h3 | h4 | h5 | h6 | code | quote | label | small
16
- */
17
- variant = 'p';
18
- /**
19
- * Text alignment
20
- * @allowedValues left | center | right | justify
21
- */
22
- align = 'left';
23
- /**
24
- * Text color (CSS value or theme token)
25
- */
26
- color;
27
- /**
28
- * Whether the text should truncate with ellipsis
29
- */
30
- truncate = false;
31
- /**
32
- * Maximum number of lines before truncating (requires truncate=true)
33
- */
34
- maxLines;
35
- /**
36
- * Internal state to track admin mode
37
- */
38
- adminMode = false;
39
- /**
40
- * The HTML content being edited
41
- */
42
- content = '';
43
- /**
44
- * Whether the editor is focused (shows toolbar)
45
- */
46
- isFocused = false;
47
- /**
48
- * Current selection state for toolbar button highlighting
49
- */
50
- selectionState = {
51
- isBold: false,
52
- isItalic: false,
53
- isUnderline: false,
54
- isStrikethrough: false,
55
- isLink: false,
56
- blockType: 'p',
57
- };
58
- /**
59
- * Reference to the contenteditable element
60
- */
61
- editorRef;
62
- /**
63
- * Reference to the slot element
64
- */
65
- slotRef;
66
- disconnectModeObserver;
67
142
  connectedCallback() {
68
143
  this.disconnectModeObserver = utils.observeModeChanges(this.el, mode => {
69
144
  const wasAdmin = this.adminMode;
@@ -145,47 +220,6 @@ const LeText = class {
145
220
  }
146
221
  }
147
222
  }
148
- /**
149
- * Handle input in the contenteditable
150
- */
151
- handleInput = () => {
152
- if (this.editorRef) {
153
- this.content = this.editorRef.innerHTML;
154
- this.updateSelectionState();
155
- }
156
- };
157
- /**
158
- * Handle focus on the editor
159
- */
160
- handleFocus = () => {
161
- this.isFocused = true;
162
- this.updateSelectionState();
163
- };
164
- /**
165
- * Handle blur on the editor
166
- */
167
- handleBlur = (e) => {
168
- // Check if focus moved to toolbar
169
- const relatedTarget = e.relatedTarget;
170
- const toolbar = this.el.shadowRoot?.querySelector('.le-text-toolbar');
171
- if (toolbar?.contains(relatedTarget)) {
172
- // Focus moved to toolbar, keep it open
173
- return;
174
- }
175
- // Small delay to allow toolbar clicks to register
176
- setTimeout(() => {
177
- if (!this.el.shadowRoot?.activeElement) {
178
- this.isFocused = false;
179
- this.syncContentToSlot();
180
- }
181
- }, 150);
182
- };
183
- /**
184
- * Handle selection change to update toolbar state
185
- */
186
- handleSelectionChange = () => {
187
- this.updateSelectionState();
188
- };
189
223
  /**
190
224
  * Update the selection state for toolbar highlighting
191
225
  */
@@ -228,58 +262,6 @@ const LeText = class {
228
262
  this.handleInput();
229
263
  this.updateSelectionState();
230
264
  }
231
- /**
232
- * Toggle bold formatting
233
- */
234
- toggleBold = (e) => {
235
- e.preventDefault();
236
- this.execCommand('bold');
237
- };
238
- /**
239
- * Toggle italic formatting
240
- */
241
- toggleItalic = (e) => {
242
- e.preventDefault();
243
- this.execCommand('italic');
244
- };
245
- /**
246
- * Toggle underline formatting
247
- */
248
- toggleUnderline = (e) => {
249
- e.preventDefault();
250
- this.execCommand('underline');
251
- };
252
- /**
253
- * Toggle strikethrough formatting
254
- */
255
- toggleStrikethrough = (e) => {
256
- e.preventDefault();
257
- this.execCommand('strikeThrough');
258
- };
259
- /**
260
- * Add or edit a link
261
- */
262
- toggleLink = (e) => {
263
- e.preventDefault();
264
- if (this.selectionState.isLink) {
265
- // Remove link
266
- this.execCommand('unlink');
267
- }
268
- else {
269
- // Add link
270
- const url = prompt('Enter URL:', 'https://');
271
- if (url) {
272
- this.execCommand('createLink', url);
273
- }
274
- }
275
- };
276
- /**
277
- * Change the block type/variant
278
- */
279
- changeVariant = (e) => {
280
- const select = e.target;
281
- this.variant = select.value;
282
- };
283
265
  /**
284
266
  * Render the formatting toolbar
285
267
  */
@@ -325,6 +307,7 @@ const LeText = class {
325
307
  // Default mode - render semantic element with slotted content
326
308
  return (index.h(index.Host, null, index.h(Tag, { class: textClass, part: "text", style: textStyle }, index.h("slot", { ref: el => (this.slotRef = el) }))));
327
309
  }
310
+ get el() { return index.getElement(this); }
328
311
  static get watchers() { return {
329
312
  "variant": ["onVariantChange"]
330
313
  }; }