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
@@ -13,94 +13,45 @@ const LeBox$1 = /*@__PURE__*/ proxyCustomElement(class LeBox extends HTMLElement
13
13
  this.__registerHost();
14
14
  }
15
15
  this.__attachShadow();
16
+ /**
17
+ * Flex grow factor - how much the item should grow relative to siblings
18
+ * @min 0
19
+ */
20
+ this.grow = 0;
21
+ /**
22
+ * Flex shrink factor - how much the item should shrink relative to siblings
23
+ * @min 0
24
+ */
25
+ this.shrink = 1;
26
+ /**
27
+ * Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')
28
+ */
29
+ this.basis = 'auto';
30
+ /**
31
+ * Self-alignment override for this item on the cross axis
32
+ * @allowedValues auto | start | center | end | stretch | baseline
33
+ */
34
+ this.alignSelf = 'auto';
35
+ /**
36
+ * Internal horizontal alignment of content
37
+ * @allowedValues start | center | end | stretch
38
+ */
39
+ this.alignContent = 'stretch';
40
+ /**
41
+ * Internal vertical alignment of content
42
+ * @allowedValues start | center | end | stretch
43
+ */
44
+ this.justifyContent = 'start';
45
+ /**
46
+ * Whether to display box content as flex (for internal alignment)
47
+ */
48
+ this.displayFlex = false;
49
+ /**
50
+ * Direction of internal flex layout when displayFlex is true
51
+ * @allowedValues horizontal | vertical
52
+ */
53
+ this.innerDirection = 'vertical';
16
54
  }
17
- get el() { return this; }
18
- /**
19
- * Flex grow factor - how much the item should grow relative to siblings
20
- * @min 0
21
- */
22
- grow = 0;
23
- /**
24
- * Flex shrink factor - how much the item should shrink relative to siblings
25
- * @min 0
26
- */
27
- shrink = 1;
28
- /**
29
- * Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')
30
- */
31
- basis = 'auto';
32
- /**
33
- * Width of the box (CSS value like '100px', '50%', 'auto')
34
- */
35
- width;
36
- /**
37
- * Height of the box (CSS value)
38
- */
39
- height;
40
- /**
41
- * Minimum width constraint
42
- */
43
- minWidth;
44
- /**
45
- * Maximum width constraint
46
- */
47
- maxWidth;
48
- /**
49
- * Minimum height constraint
50
- */
51
- minHeight;
52
- /**
53
- * Maximum height constraint
54
- */
55
- maxHeight;
56
- /**
57
- * Background color or CSS value (e.g., '#f0f0f0', 'var(--le-color-primary-light)')
58
- */
59
- background;
60
- /**
61
- * Border radius (e.g., '8px', 'var(--le-radius-md)')
62
- */
63
- borderRadius;
64
- /**
65
- * Border style (e.g., '1px solid #ccc', '2px dashed var(--le-color-border)')
66
- */
67
- border;
68
- /**
69
- * Self-alignment override for this item on the cross axis
70
- * @allowedValues auto | start | center | end | stretch | baseline
71
- */
72
- alignSelf = 'auto';
73
- /**
74
- * Internal horizontal alignment of content
75
- * @allowedValues start | center | end | stretch
76
- */
77
- alignContent = 'stretch';
78
- /**
79
- * Internal vertical alignment of content
80
- * @allowedValues start | center | end | stretch
81
- */
82
- justifyContent = 'start';
83
- /**
84
- * Padding inside the box (CSS value like '8px', '1rem')
85
- */
86
- padding;
87
- /**
88
- * Order in the flex container (lower values come first)
89
- */
90
- order;
91
- /**
92
- * Whether to display box content as flex (for internal alignment)
93
- */
94
- displayFlex = false;
95
- /**
96
- * Direction of internal flex layout when displayFlex is true
97
- * @allowedValues horizontal | vertical
98
- */
99
- innerDirection = 'vertical';
100
- /**
101
- * Gap between internal flex items when displayFlex is true
102
- */
103
- innerGap;
104
55
  getAlignSelf() {
105
56
  const alignMap = {
106
57
  auto: 'auto',
@@ -180,10 +131,11 @@ const LeBox$1 = /*@__PURE__*/ proxyCustomElement(class LeBox extends HTMLElement
180
131
  'display-flex': this.displayFlex,
181
132
  [`inner-${this.innerDirection}`]: this.displayFlex,
182
133
  });
183
- return (h(Host, { key: '01fad47e9fdff2931a8f0a26d540bb1a5da6a626', style: hostStyle, class: hostClass }, h("le-component", { key: '2d6b2588889925835e91ecbf6be811d21b47b015', component: "le-box" }, h("div", { key: 'd43fd71f7f9e1211bb2dfaaf577c6c9bef78b794', class: "box", part: "box" }, h("div", { key: '1b8b1680dfeb7e6f31ac627d55ae05796bef4f02', class: "content", part: "content", style: contentStyle }, h("le-slot", { key: '8af26e1c5047b9d5ab9f4ae0464c34bf3e931805', name: "", description: "Content inside this flex item", type: "slot", "allowed-components": "le-text,le-card,le-button,le-stack,le-box" }, h("slot", { key: 'db95a80650aa9846eb27ccd75ee074a86a9ef47c' })))))));
134
+ return (h(Host, { key: '7ff795b1c7e8947ec3c807d387d1bfd6eaec0e78', style: hostStyle, class: hostClass }, h("le-component", { key: 'f9d95344461ac913dcf2cbd653541f0f2ce961ea', component: "le-box" }, h("div", { key: '9c772c7fcca7f1401601eb8f730acd2edced6de2', class: "box", part: "box" }, h("div", { key: '62d77dadf5966a6bd73ef839281c20574460716d', class: "content", part: "content", style: contentStyle }, h("le-slot", { key: 'f4a02189f884db240cfc7070a600983e905aedfb', name: "", description: "Content inside this flex item", type: "slot", "allowed-components": "le-text,le-card,le-button,le-stack,le-box" }, h("slot", { key: '57857570d54c3c1144dff8989733e5ba07c5407e' })))))));
184
135
  }
136
+ get el() { return this; }
185
137
  static get style() { return leBoxCss(); }
186
- }, [769, "le-box", {
138
+ }, [257, "le-box", {
187
139
  "grow": [2],
188
140
  "shrink": [2],
189
141
  "basis": [1],
@@ -1 +1 @@
1
- {"file":"le-box.js","mappings":"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","names":["LeBox","__stencil_proxyCustomElement"],"sources":["src/components/le-box/le-box.css?tag=le-box&encapsulation=shadow","src/components/le-box/le-box.tsx"],"sourcesContent":["/**\n * le-box default styles\n *\n * Flex item properties are applied inline via hostStyle.\n * This CSS handles visual styling and theming.\n */\n\n:host {\n display: block;\n box-sizing: border-box;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n/* Box container - full size by default */\n.box {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n\n/* Content wrapper */\n.content {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n background: var(--le-box-bg, transparent);\n border-radius: var(--le-box-border-radius, 0);\n padding: var(--le-box-padding, 0);\n}\n\n/* When displayFlex is enabled, ensure content stretches */\n:host(.display-flex) .content {\n min-height: 100%;\n}\n","import { Component, Prop, h, Element, Host } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A flexible box component for use as a flex item within le-stack.\n *\n * `le-box` wraps content and provides flex item properties like grow, shrink,\n * basis, and self-alignment. It can also control its internal content alignment.\n *\n * @slot - Default slot for box content\n *\n * @cssprop --le-box-bg - Background color\n * @cssprop --le-box-padding - Padding inside the box\n * @cssprop --le-box-border-radius - Border radius\n *\n * @csspart box - The main box container\n * @csspart content - The inner content wrapper\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-box',\n styleUrl: 'le-box.css',\n shadow: true,\n})\nexport class LeBox {\n @Element() el: HTMLElement;\n\n /**\n * Flex grow factor - how much the item should grow relative to siblings\n * @min 0\n */\n @Prop() grow: number = 0;\n\n /**\n * Flex shrink factor - how much the item should shrink relative to siblings\n * @min 0\n */\n @Prop() shrink: number = 1;\n\n /**\n * Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')\n */\n @Prop() basis: string = 'auto';\n\n /**\n * Width of the box (CSS value like '100px', '50%', 'auto')\n */\n @Prop() width?: string;\n\n /**\n * Height of the box (CSS value)\n */\n @Prop() height?: string;\n\n /**\n * Minimum width constraint\n */\n @Prop() minWidth?: string;\n\n /**\n * Maximum width constraint\n */\n @Prop() maxWidth?: string;\n\n /**\n * Minimum height constraint\n */\n @Prop() minHeight?: string;\n\n /**\n * Maximum height constraint\n */\n @Prop() maxHeight?: string;\n\n /**\n * Background color or CSS value (e.g., '#f0f0f0', 'var(--le-color-primary-light)')\n */\n @Prop() background?: string;\n\n /**\n * Border radius (e.g., '8px', 'var(--le-radius-md)')\n */\n @Prop() borderRadius?: string;\n\n /**\n * Border style (e.g., '1px solid #ccc', '2px dashed var(--le-color-border)')\n */\n @Prop() border?: string;\n\n /**\n * Self-alignment override for this item on the cross axis\n * @allowedValues auto | start | center | end | stretch | baseline\n */\n @Prop() alignSelf: 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'auto';\n\n /**\n * Internal horizontal alignment of content\n * @allowedValues start | center | end | stretch\n */\n @Prop() alignContent: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n\n /**\n * Internal vertical alignment of content\n * @allowedValues start | center | end | stretch\n */\n @Prop() justifyContent: 'start' | 'center' | 'end' | 'stretch' = 'start';\n\n /**\n * Padding inside the box (CSS value like '8px', '1rem')\n */\n @Prop() padding?: string;\n\n /**\n * Order in the flex container (lower values come first)\n */\n @Prop() order?: number;\n\n /**\n * Whether to display box content as flex (for internal alignment)\n */\n @Prop() displayFlex: boolean = false;\n\n /**\n * Direction of internal flex layout when displayFlex is true\n * @allowedValues horizontal | vertical\n */\n @Prop() innerDirection: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Gap between internal flex items when displayFlex is true\n */\n @Prop() innerGap?: string;\n\n private getAlignSelf(): string {\n const alignMap: Record<string, string> = {\n auto: 'auto',\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n };\n return alignMap[this.alignSelf] || 'auto';\n }\n\n private getContentAlign(): string {\n const alignMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n };\n return alignMap[this.alignContent] || 'stretch';\n }\n\n private getContentJustify(): string {\n const justifyMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n };\n return justifyMap[this.justifyContent] || 'flex-start';\n }\n\n render() {\n // Host styles for flex item behavior\n const hostStyle: { [key: string]: string } = {\n flexGrow: String(this.grow),\n flexShrink: String(this.shrink),\n flexBasis: this.basis,\n alignSelf: this.getAlignSelf(),\n };\n\n if (this.width) hostStyle.width = this.width;\n if (this.height) hostStyle.height = this.height;\n if (this.minWidth) hostStyle.minWidth = this.minWidth;\n if (this.maxWidth) hostStyle.maxWidth = this.maxWidth;\n if (this.minHeight) hostStyle.minHeight = this.minHeight;\n if (this.maxHeight) hostStyle.maxHeight = this.maxHeight;\n if (this.order !== undefined) hostStyle.order = String(this.order);\n\n // Inner content styles\n const contentStyle: { [key: string]: string } = {};\n\n if (this.padding) {\n contentStyle.padding = this.padding;\n }\n if (this.background) {\n contentStyle.background = this.background;\n }\n if (this.borderRadius) {\n contentStyle.borderRadius = this.borderRadius;\n }\n if (this.border) {\n contentStyle.border = this.border;\n }\n\n if (this.displayFlex) {\n contentStyle.display = 'flex';\n contentStyle.flexDirection = this.innerDirection === 'vertical' ? 'column' : 'row';\n contentStyle.alignItems = this.getContentAlign();\n contentStyle.justifyContent = this.getContentJustify();\n if (this.innerGap) {\n contentStyle.gap = this.innerGap;\n }\n }\n\n const hostClass = classnames({\n 'has-grow': this.grow > 0,\n 'display-flex': this.displayFlex,\n [`inner-${this.innerDirection}`]: this.displayFlex,\n });\n\n return (\n <Host style={hostStyle} class={hostClass}>\n <le-component component=\"le-box\">\n <div class=\"box\" part=\"box\">\n <div class=\"content\" part=\"content\" style={contentStyle}>\n <le-slot\n name=\"\"\n description=\"Content inside this flex item\"\n type=\"slot\"\n allowed-components=\"le-text,le-card,le-button,le-stack,le-box\"\n >\n <slot></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"le-box.js","mappings":"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","names":["LeBox","__stencil_proxyCustomElement"],"sources":["src/components/le-box/le-box.css?tag=le-box&encapsulation=shadow","src/components/le-box/le-box.tsx"],"sourcesContent":["/**\n * le-box default styles\n *\n * Flex item properties are applied inline via hostStyle.\n * This CSS handles visual styling and theming.\n */\n\n:host {\n display: block;\n box-sizing: border-box;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n/* Box container - full size by default */\n.box {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n\n/* Content wrapper */\n.content {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n background: var(--le-box-bg, transparent);\n border-radius: var(--le-box-border-radius, 0);\n padding: var(--le-box-padding, 0);\n}\n\n/* When displayFlex is enabled, ensure content stretches */\n:host(.display-flex) .content {\n min-height: 100%;\n}\n","import { Component, Prop, h, Element, Host } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A flexible box component for use as a flex item within le-stack.\n *\n * `le-box` wraps content and provides flex item properties like grow, shrink,\n * basis, and self-alignment. It can also control its internal content alignment.\n *\n * @slot - Default slot for box content\n *\n * @cssprop --le-box-bg - Background color\n * @cssprop --le-box-padding - Padding inside the box\n * @cssprop --le-box-border-radius - Border radius\n *\n * @csspart box - The main box container\n * @csspart content - The inner content wrapper\n *\n * @cmsEditable true\n * @cmsCategory Layout\n */\n@Component({\n tag: 'le-box',\n styleUrl: 'le-box.css',\n shadow: true,\n})\nexport class LeBox {\n @Element() el: HTMLElement;\n\n /**\n * Flex grow factor - how much the item should grow relative to siblings\n * @min 0\n */\n @Prop() grow: number = 0;\n\n /**\n * Flex shrink factor - how much the item should shrink relative to siblings\n * @min 0\n */\n @Prop() shrink: number = 1;\n\n /**\n * Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')\n */\n @Prop() basis: string = 'auto';\n\n /**\n * Width of the box (CSS value like '100px', '50%', 'auto')\n */\n @Prop() width?: string;\n\n /**\n * Height of the box (CSS value)\n */\n @Prop() height?: string;\n\n /**\n * Minimum width constraint\n */\n @Prop() minWidth?: string;\n\n /**\n * Maximum width constraint\n */\n @Prop() maxWidth?: string;\n\n /**\n * Minimum height constraint\n */\n @Prop() minHeight?: string;\n\n /**\n * Maximum height constraint\n */\n @Prop() maxHeight?: string;\n\n /**\n * Background color or CSS value (e.g., '#f0f0f0', 'var(--le-color-primary-light)')\n */\n @Prop() background?: string;\n\n /**\n * Border radius (e.g., '8px', 'var(--le-radius-md)')\n */\n @Prop() borderRadius?: string;\n\n /**\n * Border style (e.g., '1px solid #ccc', '2px dashed var(--le-color-border)')\n */\n @Prop() border?: string;\n\n /**\n * Self-alignment override for this item on the cross axis\n * @allowedValues auto | start | center | end | stretch | baseline\n */\n @Prop() alignSelf: 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'auto';\n\n /**\n * Internal horizontal alignment of content\n * @allowedValues start | center | end | stretch\n */\n @Prop() alignContent: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n\n /**\n * Internal vertical alignment of content\n * @allowedValues start | center | end | stretch\n */\n @Prop() justifyContent: 'start' | 'center' | 'end' | 'stretch' = 'start';\n\n /**\n * Padding inside the box (CSS value like '8px', '1rem')\n */\n @Prop() padding?: string;\n\n /**\n * Order in the flex container (lower values come first)\n */\n @Prop() order?: number;\n\n /**\n * Whether to display box content as flex (for internal alignment)\n */\n @Prop() displayFlex: boolean = false;\n\n /**\n * Direction of internal flex layout when displayFlex is true\n * @allowedValues horizontal | vertical\n */\n @Prop() innerDirection: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Gap between internal flex items when displayFlex is true\n */\n @Prop() innerGap?: string;\n\n private getAlignSelf(): string {\n const alignMap: Record<string, string> = {\n auto: 'auto',\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n };\n return alignMap[this.alignSelf] || 'auto';\n }\n\n private getContentAlign(): string {\n const alignMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n };\n return alignMap[this.alignContent] || 'stretch';\n }\n\n private getContentJustify(): string {\n const justifyMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n };\n return justifyMap[this.justifyContent] || 'flex-start';\n }\n\n render() {\n // Host styles for flex item behavior\n const hostStyle: { [key: string]: string } = {\n flexGrow: String(this.grow),\n flexShrink: String(this.shrink),\n flexBasis: this.basis,\n alignSelf: this.getAlignSelf(),\n };\n\n if (this.width) hostStyle.width = this.width;\n if (this.height) hostStyle.height = this.height;\n if (this.minWidth) hostStyle.minWidth = this.minWidth;\n if (this.maxWidth) hostStyle.maxWidth = this.maxWidth;\n if (this.minHeight) hostStyle.minHeight = this.minHeight;\n if (this.maxHeight) hostStyle.maxHeight = this.maxHeight;\n if (this.order !== undefined) hostStyle.order = String(this.order);\n\n // Inner content styles\n const contentStyle: { [key: string]: string } = {};\n\n if (this.padding) {\n contentStyle.padding = this.padding;\n }\n if (this.background) {\n contentStyle.background = this.background;\n }\n if (this.borderRadius) {\n contentStyle.borderRadius = this.borderRadius;\n }\n if (this.border) {\n contentStyle.border = this.border;\n }\n\n if (this.displayFlex) {\n contentStyle.display = 'flex';\n contentStyle.flexDirection = this.innerDirection === 'vertical' ? 'column' : 'row';\n contentStyle.alignItems = this.getContentAlign();\n contentStyle.justifyContent = this.getContentJustify();\n if (this.innerGap) {\n contentStyle.gap = this.innerGap;\n }\n }\n\n const hostClass = classnames({\n 'has-grow': this.grow > 0,\n 'display-flex': this.displayFlex,\n [`inner-${this.innerDirection}`]: this.displayFlex,\n });\n\n return (\n <Host style={hostStyle} class={hostClass}>\n <le-component component=\"le-box\">\n <div class=\"box\" part=\"box\">\n <div class=\"content\" part=\"content\" style={contentStyle}>\n <le-slot\n name=\"\"\n description=\"Content inside this flex item\"\n type=\"slot\"\n allowed-components=\"le-text,le-card,le-button,le-stack,le-box\"\n >\n <slot></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface LeBreadcrumbs extends Components.LeBreadcrumbs, HTMLElement {}
4
+ export const LeBreadcrumbs: {
5
+ prototype: LeBreadcrumbs;
6
+ new (): LeBreadcrumbs;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,327 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host, Fragment, transformTag } from '@stencil/core/internal/client';
2
+ import { g as generateId, c as classnames } from './utils.js';
3
+ import { d as defineCustomElement$e } from './le-bar2.js';
4
+ import { d as defineCustomElement$2, a as defineCustomElement$3, b as defineCustomElement$4, c as defineCustomElement$5, e as defineCustomElement$a, f as defineCustomElement$c, g as defineCustomElement$d } from './le-button2.js';
5
+ import { d as defineCustomElement$b } from './le-collapse2.js';
6
+ import { d as defineCustomElement$9 } from './le-dropdown-base2.js';
7
+ import { d as defineCustomElement$8 } from './le-icon2.js';
8
+ import { d as defineCustomElement$7 } from './le-navigation2.js';
9
+ import { d as defineCustomElement$6 } from './le-popover2.js';
10
+
11
+ const leBreadcrumbsCss = () => `:host{display:block}.breadcrumbs{display:flex;align-items:center;gap:var(--le-space-xs);min-width:0}.list{display:flex;align-items:center;gap:var(--le-space-xs);min-width:0;flex:1}.list.wrap{flex-wrap:wrap}.list.scroll{overflow-x:auto;white-space:nowrap;scrollbar-width:none}.list.scroll::-webkit-scrollbar{display:none}.item{--le-button-padding-x:var(--le-spacing-2);--le-button-padding-y:var(--le-spacing-1)}.item.current{color:var(--le-color-text);font-weight:var(--le-font-weight-medium)}.item-popover{--le-popover-padding:var(--le-space-xs)}.separator{display:inline-flex;align-items:center;color:var(--le-color-text-tertiary, var(--le-color-text-secondary))}.separator ::slotted(*){display:inline-flex;align-items:center}.more-trigger{display:inline-flex;align-items:center;appearance:none;border:0;background:none;padding:0;color:inherit;cursor:pointer}.hidden-slot{display:none}`;
12
+
13
+ const LeBreadcrumbs$1 = /*@__PURE__*/ proxyCustomElement(class LeBreadcrumbs extends HTMLElement {
14
+ constructor(registerHost) {
15
+ super();
16
+ if (registerHost !== false) {
17
+ this.__registerHost();
18
+ }
19
+ this.__attachShadow();
20
+ this.leBreadcrumbSelect = createEvent(this, "leBreadcrumbSelect", 7);
21
+ /**
22
+ * Breadcrumb items (supports JSON string).
23
+ */
24
+ this.items = [];
25
+ /**
26
+ * Accessible label for the breadcrumbs navigation.
27
+ */
28
+ this.label = 'Breadcrumbs';
29
+ /**
30
+ * Separator icon name (used if no separator slot is provided).
31
+ */
32
+ this.separatorIcon = 'chevron-right';
33
+ /**
34
+ * Overflow behavior: collapse (default), wrap, or scroll.
35
+ */
36
+ this.overflowMode = 'collapse';
37
+ /**
38
+ * Minimum visible items before collapsing.
39
+ */
40
+ this.minVisibleItems = 2;
41
+ this.hiddenIndices = [];
42
+ this.separatorTemplate = '';
43
+ this.instanceId = generateId('le-breadcrumbs');
44
+ this.recomputeQueued = false;
45
+ this.handleSeparatorSlotChange = (ev) => {
46
+ const slot = ev.target;
47
+ const nodes = slot.assignedNodes({ flatten: true });
48
+ const html = nodes
49
+ .map(node => {
50
+ if (node.nodeType === Node.TEXT_NODE) {
51
+ return node.textContent || '';
52
+ }
53
+ if (node.nodeType === Node.ELEMENT_NODE) {
54
+ return node.outerHTML || '';
55
+ }
56
+ return '';
57
+ })
58
+ .join('')
59
+ .trim();
60
+ this.separatorTemplate = html;
61
+ this.scheduleOverflowRecompute();
62
+ };
63
+ this.handleItemClick = (item, id, ev) => {
64
+ const href = item.href || item.url;
65
+ this.leBreadcrumbSelect.emit({ item, id, href, originalEvent: ev });
66
+ };
67
+ this.handleKeyDown = (ev) => {
68
+ if (ev.key !== 'ArrowRight' && ev.key !== 'ArrowLeft')
69
+ return;
70
+ const focusables = Array.from(this.el.shadowRoot?.querySelectorAll('a,button,[tabindex="0"]') || []);
71
+ if (focusables.length === 0)
72
+ return;
73
+ const current = document.activeElement;
74
+ const idx = focusables.findIndex(el => el === current);
75
+ if (idx === -1)
76
+ return;
77
+ ev.preventDefault();
78
+ const nextIdx = ev.key === 'ArrowRight' ? idx + 1 : idx - 1;
79
+ const target = focusables[(nextIdx + focusables.length) % focusables.length];
80
+ target?.focus();
81
+ };
82
+ }
83
+ componentDidLoad() {
84
+ this.setupResizeObserver();
85
+ this.scheduleOverflowRecompute();
86
+ }
87
+ disconnectedCallback() {
88
+ this.resizeObserver?.disconnect();
89
+ }
90
+ handleInputsChange() {
91
+ this.scheduleOverflowRecompute();
92
+ }
93
+ setupResizeObserver() {
94
+ if (typeof window === 'undefined' || !('ResizeObserver' in window))
95
+ return;
96
+ this.resizeObserver = new ResizeObserver(() => this.scheduleOverflowRecompute());
97
+ this.resizeObserver.observe(this.el);
98
+ }
99
+ get parsedItems() {
100
+ if (typeof this.items === 'string') {
101
+ try {
102
+ return JSON.parse(this.items);
103
+ }
104
+ catch {
105
+ return [];
106
+ }
107
+ }
108
+ return this.items;
109
+ }
110
+ getItemId(item, index) {
111
+ return item.id ?? `${this.instanceId}:${index}`;
112
+ }
113
+ scheduleOverflowRecompute() {
114
+ if (this.overflowMode !== 'collapse') {
115
+ if (this.hiddenIndices.length) {
116
+ this.hiddenIndices = [];
117
+ }
118
+ return;
119
+ }
120
+ if (this.recomputeQueued)
121
+ return;
122
+ this.recomputeQueued = true;
123
+ requestAnimationFrame(() => this.recomputeOverflow());
124
+ }
125
+ nextFrame() {
126
+ return new Promise(resolve => requestAnimationFrame(() => resolve()));
127
+ }
128
+ async recomputeOverflow() {
129
+ this.recomputeQueued = false;
130
+ if (this.overflowMode !== 'collapse') {
131
+ return;
132
+ }
133
+ const items = this.parsedItems;
134
+ if (!this.listEl || items.length <= Math.max(2, this.minVisibleItems)) {
135
+ if (this.hiddenIndices.length) {
136
+ this.hiddenIndices = [];
137
+ }
138
+ return;
139
+ }
140
+ // Reset hidden items first
141
+ if (this.hiddenIndices.length) {
142
+ this.hiddenIndices = [];
143
+ await this.nextFrame();
144
+ }
145
+ const containerWidth = this.listEl.clientWidth;
146
+ if (!containerWidth)
147
+ return;
148
+ const candidates = items.map((_, idx) => idx).slice(1, -1);
149
+ const hidden = [];
150
+ let attempts = 0;
151
+ while (this.listEl.scrollWidth > containerWidth &&
152
+ attempts < candidates.length &&
153
+ items.length - hidden.length > this.minVisibleItems) {
154
+ const next = candidates.shift();
155
+ if (next === undefined)
156
+ break;
157
+ hidden.push(next);
158
+ this.hiddenIndices = [...hidden];
159
+ await this.nextFrame();
160
+ attempts += 1;
161
+ }
162
+ // If still overflowing, hide first then last as a last resort
163
+ if (this.listEl.scrollWidth > containerWidth &&
164
+ items.length - hidden.length > this.minVisibleItems) {
165
+ if (!hidden.includes(0)) {
166
+ hidden.unshift(0);
167
+ this.hiddenIndices = [...hidden];
168
+ await this.nextFrame();
169
+ }
170
+ }
171
+ if (this.listEl.scrollWidth > containerWidth &&
172
+ items.length - hidden.length > this.minVisibleItems) {
173
+ const lastIndex = items.length - 1;
174
+ if (!hidden.includes(lastIndex)) {
175
+ hidden.push(lastIndex);
176
+ this.hiddenIndices = [...hidden];
177
+ await this.nextFrame();
178
+ }
179
+ }
180
+ }
181
+ renderSeparator() {
182
+ console.log('separatorTemplate', this.separatorTemplate || 'no-template', this.separatorIcon);
183
+ if (this.separatorTemplate) {
184
+ return h("span", { class: "separator", "aria-hidden": "true", innerHTML: this.separatorTemplate });
185
+ }
186
+ return (h("span", { class: "separator", "aria-hidden": "true" }, h("le-icon", { name: this.separatorIcon })));
187
+ }
188
+ renderItem(item, index) {
189
+ const id = this.getItemId(item, index);
190
+ const hasChildren = Array.isArray(item.children) && item.children.length > 0;
191
+ const isCurrent = !!item.selected;
192
+ const itemClass = classnames('item', { current: isCurrent });
193
+ const icontent = item.icon || item.iconStart;
194
+ const content = (h("le-button", { slot: hasChildren ? 'trigger' : undefined, variant: "clear", color: "secondary", class: itemClass, onClick: ev => this.handleItemClick(item, id, ev), "aria-haspopup": "menu", "aria-current": isCurrent ? 'page' : null, part: item.part, iconStart: icontent }, h("span", { class: "item-label" }, item.label)));
195
+ if (hasChildren) {
196
+ return (h("le-popover", { position: "bottom", align: "start", "show-close": "false", class: "item-popover" }, content, h("le-navigation", { orientation: "vertical", items: item.children, style: { minWidth: '200px' } })));
197
+ }
198
+ return content;
199
+ }
200
+ renderMore(hiddenItems) {
201
+ if (hiddenItems.length === 0)
202
+ return null;
203
+ return (h("le-popover", { position: "bottom", align: "start", "show-close": "false" }, h("button", { slot: "trigger", class: "more-trigger", type: "button", "aria-haspopup": "menu" }, h("slot", { name: "more-trigger" }, h("le-icon", { name: "ellipsis-horizontal" }))), h("le-navigation", { orientation: "vertical", items: hiddenItems, style: { minWidth: '200px' } })));
204
+ }
205
+ render() {
206
+ const items = this.parsedItems;
207
+ const indexedItems = items.map((item, index) => ({ item, index }));
208
+ const hiddenSet = new Set(this.hiddenIndices);
209
+ const hiddenItems = indexedItems.filter(({ index }) => hiddenSet.has(index));
210
+ const visibleItems = indexedItems.filter(({ index }) => !hiddenSet.has(index));
211
+ const shouldCollapse = this.overflowMode === 'collapse' && hiddenItems.length > 0;
212
+ const firstVisible = visibleItems[0];
213
+ const remainingVisible = visibleItems.slice(1);
214
+ const firstHidden = hiddenSet.has(0);
215
+ return (h(Host, { key: '6da8c091e08c97f903d6e840d02bca6a321ed0ba', onKeyDown: this.handleKeyDown }, h("nav", { key: 'ddc78c68de5a49d59a3d7cfa446ce7a4dea02366', class: "breadcrumbs", "aria-label": this.label }, h("slot", { key: 'c76c6164b589bdad8715a8adbe94d39dab261e71', name: "start" }), h("div", { key: '80fecb4159d873e7d5994299229f80610f0ca1ed', class: classnames('list', {
216
+ wrap: this.overflowMode === 'wrap',
217
+ scroll: this.overflowMode === 'scroll',
218
+ }), ref: el => (this.listEl = el) }, !firstHidden && firstVisible
219
+ ? this.renderItem(firstVisible.item, firstVisible.index)
220
+ : null, shouldCollapse && !firstHidden && firstVisible ? this.renderSeparator() : null, shouldCollapse ? this.renderMore(hiddenItems.map(h => h.item)) : null, (firstHidden ? visibleItems : remainingVisible).map(({ item, index }, i) => (h(Fragment, null, this.renderSeparator(), h("span", { class: "crumb", key: `${item.label}-${index}-${i}` }, this.renderItem(item, index)))))), h("slot", { key: 'cd9f1f1200554f43cd144f07870aa3063de9a843', name: "end" })), h("span", { key: '3bd953f8c8a4bae9d2e1b3bbe61977d92b1f0f50', class: "hidden-slot", "aria-hidden": "true" }, h("slot", { key: '5deeddaba836a0ac6c698d25ed799670231c3acd', name: "separator", onSlotchange: this.handleSeparatorSlotChange }))));
221
+ }
222
+ get el() { return this; }
223
+ static get watchers() { return {
224
+ "items": ["handleInputsChange"],
225
+ "overflowMode": ["handleInputsChange"],
226
+ "minVisibleItems": ["handleInputsChange"]
227
+ }; }
228
+ static get style() { return leBreadcrumbsCss(); }
229
+ }, [257, "le-breadcrumbs", {
230
+ "items": [1],
231
+ "label": [1],
232
+ "separatorIcon": [1, "separator-icon"],
233
+ "overflowMode": [1, "overflow-mode"],
234
+ "minVisibleItems": [2, "min-visible-items"],
235
+ "hiddenIndices": [32],
236
+ "separatorTemplate": [32]
237
+ }, undefined, {
238
+ "items": ["handleInputsChange"],
239
+ "overflowMode": ["handleInputsChange"],
240
+ "minVisibleItems": ["handleInputsChange"]
241
+ }]);
242
+ function defineCustomElement$1() {
243
+ if (typeof customElements === "undefined") {
244
+ return;
245
+ }
246
+ const components = ["le-breadcrumbs", "le-bar", "le-button", "le-checkbox", "le-collapse", "le-component", "le-dropdown-base", "le-icon", "le-navigation", "le-popover", "le-popup", "le-select", "le-slot", "le-string-input"];
247
+ components.forEach(tagName => { switch (tagName) {
248
+ case "le-breadcrumbs":
249
+ if (!customElements.get(transformTag(tagName))) {
250
+ customElements.define(transformTag(tagName), LeBreadcrumbs$1);
251
+ }
252
+ break;
253
+ case "le-bar":
254
+ if (!customElements.get(transformTag(tagName))) {
255
+ defineCustomElement$e();
256
+ }
257
+ break;
258
+ case "le-button":
259
+ if (!customElements.get(transformTag(tagName))) {
260
+ defineCustomElement$d();
261
+ }
262
+ break;
263
+ case "le-checkbox":
264
+ if (!customElements.get(transformTag(tagName))) {
265
+ defineCustomElement$c();
266
+ }
267
+ break;
268
+ case "le-collapse":
269
+ if (!customElements.get(transformTag(tagName))) {
270
+ defineCustomElement$b();
271
+ }
272
+ break;
273
+ case "le-component":
274
+ if (!customElements.get(transformTag(tagName))) {
275
+ defineCustomElement$a();
276
+ }
277
+ break;
278
+ case "le-dropdown-base":
279
+ if (!customElements.get(transformTag(tagName))) {
280
+ defineCustomElement$9();
281
+ }
282
+ break;
283
+ case "le-icon":
284
+ if (!customElements.get(transformTag(tagName))) {
285
+ defineCustomElement$8();
286
+ }
287
+ break;
288
+ case "le-navigation":
289
+ if (!customElements.get(transformTag(tagName))) {
290
+ defineCustomElement$7();
291
+ }
292
+ break;
293
+ case "le-popover":
294
+ if (!customElements.get(transformTag(tagName))) {
295
+ defineCustomElement$6();
296
+ }
297
+ break;
298
+ case "le-popup":
299
+ if (!customElements.get(transformTag(tagName))) {
300
+ defineCustomElement$5();
301
+ }
302
+ break;
303
+ case "le-select":
304
+ if (!customElements.get(transformTag(tagName))) {
305
+ defineCustomElement$4();
306
+ }
307
+ break;
308
+ case "le-slot":
309
+ if (!customElements.get(transformTag(tagName))) {
310
+ defineCustomElement$3();
311
+ }
312
+ break;
313
+ case "le-string-input":
314
+ if (!customElements.get(transformTag(tagName))) {
315
+ defineCustomElement$2();
316
+ }
317
+ break;
318
+ } });
319
+ }
320
+
321
+ const LeBreadcrumbs = LeBreadcrumbs$1;
322
+ const defineCustomElement = defineCustomElement$1;
323
+
324
+ export { LeBreadcrumbs, defineCustomElement };
325
+ //# sourceMappingURL=le-breadcrumbs.js.map
326
+
327
+ //# sourceMappingURL=le-breadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"file":"le-breadcrumbs.js","mappings":"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","names":["LeBreadcrumbs","__stencil_proxyCustomElement"],"sources":["src/components/le-breadcrumbs/le-breadcrumbs.css?tag=le-breadcrumbs&encapsulation=shadow","src/components/le-breadcrumbs/le-breadcrumbs.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.breadcrumbs {\n display: flex;\n align-items: center;\n gap: var(--le-space-xs);\n min-width: 0;\n}\n\n.list {\n display: flex;\n align-items: center;\n gap: var(--le-space-xs);\n min-width: 0;\n flex: 1;\n}\n\n.list.wrap {\n flex-wrap: wrap;\n}\n\n.list.scroll {\n overflow-x: auto;\n white-space: nowrap;\n scrollbar-width: none;\n}\n\n.list.scroll::-webkit-scrollbar {\n display: none;\n}\n\n.item {\n --le-button-padding-x: var(--le-spacing-2);\n --le-button-padding-y: var(--le-spacing-1);\n}\n\n.item.current {\n color: var(--le-color-text);\n font-weight: var(--le-font-weight-medium);\n}\n\n.item-popover {\n --le-popover-padding: var(--le-space-xs);\n}\n\n.separator {\n display: inline-flex;\n align-items: center;\n color: var(--le-color-text-tertiary, var(--le-color-text-secondary));\n}\n\n.separator ::slotted(*) {\n display: inline-flex;\n align-items: center;\n}\n\n.more-trigger {\n display: inline-flex;\n align-items: center;\n appearance: none;\n border: 0;\n background: none;\n padding: 0;\n color: inherit;\n cursor: pointer;\n}\n\n.hidden-slot {\n display: none;\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n Fragment,\n} from '@stencil/core';\nimport { LeOption } from '../../types/options';\nimport { classnames, generateId } from '../../utils/utils';\n\nexport interface LeBreadcrumbSelectDetail {\n item: LeOption;\n id: string;\n href?: string;\n originalEvent: MouseEvent | KeyboardEvent;\n}\n\n@Component({\n tag: 'le-breadcrumbs',\n styleUrl: 'le-breadcrumbs.css',\n shadow: true,\n})\nexport class LeBreadcrumbs {\n @Element() el: HTMLElement;\n\n /**\n * Breadcrumb items (supports JSON string).\n */\n @Prop() items: LeOption[] | string = [];\n\n /**\n * Accessible label for the breadcrumbs navigation.\n */\n @Prop() label: string = 'Breadcrumbs';\n\n /**\n * Separator icon name (used if no separator slot is provided).\n */\n @Prop() separatorIcon: string = 'chevron-right';\n\n /**\n * Overflow behavior: collapse (default), wrap, or scroll.\n */\n @Prop() overflowMode: 'collapse' | 'wrap' | 'scroll' = 'collapse';\n\n /**\n * Minimum visible items before collapsing.\n */\n @Prop() minVisibleItems: number = 2;\n\n /**\n * Emitted when a breadcrumb item is selected.\n */\n @Event({ cancelable: true }) leBreadcrumbSelect: EventEmitter<LeBreadcrumbSelectDetail>;\n\n @State() private hiddenIndices: number[] = [];\n @State() private separatorTemplate: string = '';\n\n private listEl?: HTMLElement;\n private resizeObserver?: ResizeObserver;\n private instanceId: string = generateId('le-breadcrumbs');\n private recomputeQueued: boolean = false;\n\n componentDidLoad() {\n this.setupResizeObserver();\n this.scheduleOverflowRecompute();\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n }\n\n @Watch('items')\n @Watch('overflowMode')\n @Watch('minVisibleItems')\n handleInputsChange() {\n this.scheduleOverflowRecompute();\n }\n\n private setupResizeObserver() {\n if (typeof window === 'undefined' || !('ResizeObserver' in window)) return;\n this.resizeObserver = new ResizeObserver(() => this.scheduleOverflowRecompute());\n this.resizeObserver.observe(this.el);\n }\n\n private get parsedItems(): LeOption[] {\n if (typeof this.items === 'string') {\n try {\n return JSON.parse(this.items);\n } catch {\n return [];\n }\n }\n return this.items;\n }\n\n private getItemId(item: LeOption, index: number): string {\n return item.id ?? `${this.instanceId}:${index}`;\n }\n\n private handleSeparatorSlotChange = (ev: Event) => {\n const slot = ev.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n const html = nodes\n .map(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || '';\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n return (node as HTMLElement).outerHTML || '';\n }\n return '';\n })\n .join('')\n .trim();\n\n this.separatorTemplate = html;\n this.scheduleOverflowRecompute();\n };\n\n private scheduleOverflowRecompute() {\n if (this.overflowMode !== 'collapse') {\n if (this.hiddenIndices.length) {\n this.hiddenIndices = [];\n }\n return;\n }\n\n if (this.recomputeQueued) return;\n this.recomputeQueued = true;\n requestAnimationFrame(() => this.recomputeOverflow());\n }\n\n private nextFrame(): Promise<void> {\n return new Promise(resolve => requestAnimationFrame(() => resolve()));\n }\n\n private async recomputeOverflow() {\n this.recomputeQueued = false;\n\n if (this.overflowMode !== 'collapse') {\n return;\n }\n\n const items = this.parsedItems;\n if (!this.listEl || items.length <= Math.max(2, this.minVisibleItems)) {\n if (this.hiddenIndices.length) {\n this.hiddenIndices = [];\n }\n return;\n }\n\n // Reset hidden items first\n if (this.hiddenIndices.length) {\n this.hiddenIndices = [];\n await this.nextFrame();\n }\n\n const containerWidth = this.listEl.clientWidth;\n if (!containerWidth) return;\n\n const candidates = items.map((_, idx) => idx).slice(1, -1);\n const hidden: number[] = [];\n\n let attempts = 0;\n while (\n this.listEl.scrollWidth > containerWidth &&\n attempts < candidates.length &&\n items.length - hidden.length > this.minVisibleItems\n ) {\n const next = candidates.shift();\n if (next === undefined) break;\n hidden.push(next);\n this.hiddenIndices = [...hidden];\n await this.nextFrame();\n attempts += 1;\n }\n\n // If still overflowing, hide first then last as a last resort\n if (\n this.listEl.scrollWidth > containerWidth &&\n items.length - hidden.length > this.minVisibleItems\n ) {\n if (!hidden.includes(0)) {\n hidden.unshift(0);\n this.hiddenIndices = [...hidden];\n await this.nextFrame();\n }\n }\n\n if (\n this.listEl.scrollWidth > containerWidth &&\n items.length - hidden.length > this.minVisibleItems\n ) {\n const lastIndex = items.length - 1;\n if (!hidden.includes(lastIndex)) {\n hidden.push(lastIndex);\n this.hiddenIndices = [...hidden];\n await this.nextFrame();\n }\n }\n }\n\n private handleItemClick = (item: LeOption, id: string, ev: MouseEvent) => {\n const href = (item as any).href || (item as any).url;\n this.leBreadcrumbSelect.emit({ item, id, href, originalEvent: ev });\n };\n\n private handleKeyDown = (ev: KeyboardEvent) => {\n if (ev.key !== 'ArrowRight' && ev.key !== 'ArrowLeft') return;\n const focusables = Array.from(\n this.el.shadowRoot?.querySelectorAll<HTMLElement>('a,button,[tabindex=\"0\"]') || [],\n );\n\n if (focusables.length === 0) return;\n const current = document.activeElement as HTMLElement | null;\n const idx = focusables.findIndex(el => el === current);\n if (idx === -1) return;\n\n ev.preventDefault();\n const nextIdx = ev.key === 'ArrowRight' ? idx + 1 : idx - 1;\n const target = focusables[(nextIdx + focusables.length) % focusables.length];\n target?.focus();\n };\n\n private renderSeparator() {\n console.log('separatorTemplate', this.separatorTemplate || 'no-template', this.separatorIcon);\n if (this.separatorTemplate) {\n return <span class=\"separator\" aria-hidden=\"true\" innerHTML={this.separatorTemplate}></span>;\n }\n\n return (\n <span class=\"separator\" aria-hidden=\"true\">\n <le-icon name={this.separatorIcon} />\n </span>\n );\n }\n\n private renderItem(item: LeOption, index: number) {\n const id = this.getItemId(item, index);\n const hasChildren = Array.isArray(item.children) && item.children.length > 0;\n const isCurrent = !!item.selected;\n\n const itemClass = classnames('item', { current: isCurrent });\n const icontent = item.icon || item.iconStart;\n const content = (\n <le-button\n slot={hasChildren ? 'trigger' : undefined}\n variant=\"clear\"\n color=\"secondary\"\n class={itemClass}\n onClick={ev => this.handleItemClick(item, id, ev)}\n aria-haspopup=\"menu\"\n aria-current={isCurrent ? 'page' : null}\n part={item.part}\n iconStart={icontent}\n >\n <span class=\"item-label\">{item.label}</span>\n </le-button>\n );\n\n if (hasChildren) {\n return (\n <le-popover position=\"bottom\" align=\"start\" show-close=\"false\" class=\"item-popover\">\n {content}\n <le-navigation\n orientation=\"vertical\"\n items={item.children as LeOption[]}\n style={{ minWidth: '200px' }}\n ></le-navigation>\n </le-popover>\n );\n }\n\n return content;\n }\n\n private renderMore(hiddenItems: LeOption[]) {\n if (hiddenItems.length === 0) return null;\n\n return (\n <le-popover position=\"bottom\" align=\"start\" show-close=\"false\">\n <button slot=\"trigger\" class=\"more-trigger\" type=\"button\" aria-haspopup=\"menu\">\n <slot name=\"more-trigger\">\n <le-icon name=\"ellipsis-horizontal\" />\n </slot>\n </button>\n <le-navigation\n orientation=\"vertical\"\n items={hiddenItems}\n style={{ minWidth: '200px' }}\n ></le-navigation>\n </le-popover>\n );\n }\n\n render() {\n const items = this.parsedItems;\n const indexedItems = items.map((item, index) => ({ item, index }));\n const hiddenSet = new Set(this.hiddenIndices);\n const hiddenItems = indexedItems.filter(({ index }) => hiddenSet.has(index));\n const visibleItems = indexedItems.filter(({ index }) => !hiddenSet.has(index));\n const shouldCollapse = this.overflowMode === 'collapse' && hiddenItems.length > 0;\n\n const firstVisible = visibleItems[0];\n const remainingVisible = visibleItems.slice(1);\n const firstHidden = hiddenSet.has(0);\n\n return (\n <Host onKeyDown={this.handleKeyDown}>\n <nav class=\"breadcrumbs\" aria-label={this.label}>\n <slot name=\"start\"></slot>\n\n <div\n class={classnames('list', {\n wrap: this.overflowMode === 'wrap',\n scroll: this.overflowMode === 'scroll',\n })}\n ref={el => (this.listEl = el as HTMLElement)}\n >\n {!firstHidden && firstVisible\n ? this.renderItem(firstVisible.item, firstVisible.index)\n : null}\n\n {shouldCollapse && !firstHidden && firstVisible ? this.renderSeparator() : null}\n {shouldCollapse ? this.renderMore(hiddenItems.map(h => h.item)) : null}\n\n {(firstHidden ? visibleItems : remainingVisible).map(({ item, index }, i) => (\n <Fragment>\n {this.renderSeparator()}\n <span class=\"crumb\" key={`${item.label}-${index}-${i}`}>\n {this.renderItem(item, index)}\n </span>\n </Fragment>\n ))}\n </div>\n\n <slot name=\"end\"></slot>\n </nav>\n\n <span class=\"hidden-slot\" aria-hidden=\"true\">\n <slot name=\"separator\" onSlotchange={this.handleSeparatorSlotChange}></slot>\n </span>\n </Host>\n );\n }\n}\n"],"version":3}