le-kit 0.5.2 → 0.5.4

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 (475) hide show
  1. package/LLM_CONTEXT.md +22 -33
  2. package/package.json +3 -1
  3. package/readme.md +2 -0
  4. package/dist/cjs/index-BzadfLTc.js +0 -1864
  5. package/dist/cjs/index-BzadfLTc.js.map +0 -1
  6. package/dist/cjs/index.cjs.js +0 -124
  7. package/dist/cjs/index.cjs.js.map +0 -1
  8. package/dist/cjs/le-bar_16.cjs.entry.js +0 -3709
  9. package/dist/cjs/le-box.cjs.entry.js +0 -184
  10. package/dist/cjs/le-card.cjs.entry.js +0 -29
  11. package/dist/cjs/le-code-input.cjs.entry.js +0 -181
  12. package/dist/cjs/le-combobox.cjs.entry.js +0 -237
  13. package/dist/cjs/le-header-placeholder.cjs.entry.js +0 -18
  14. package/dist/cjs/le-kit.cjs.js +0 -27
  15. package/dist/cjs/le-kit.cjs.js.map +0 -1
  16. package/dist/cjs/le-multiselect.cjs.entry.js +0 -306
  17. package/dist/cjs/le-number-input.cjs.entry.js +0 -202
  18. package/dist/cjs/le-round-progress.cjs.entry.js +0 -106
  19. package/dist/cjs/le-segmented-control.cjs.entry.js +0 -245
  20. package/dist/cjs/le-side-panel-toggle.cjs.entry.js +0 -229
  21. package/dist/cjs/le-side-panel.cjs.entry.js +0 -546
  22. package/dist/cjs/le-stack.cjs.entry.js +0 -135
  23. package/dist/cjs/le-tab-bar.cjs.entry.js +0 -242
  24. package/dist/cjs/le-tab-panel.cjs.entry.js +0 -100
  25. package/dist/cjs/le-tab.cjs.entry.js +0 -136
  26. package/dist/cjs/le-tabs.cjs.entry.js +0 -307
  27. package/dist/cjs/le-tag.cjs.entry.js +0 -68
  28. package/dist/cjs/le-text.cjs.entry.js +0 -335
  29. package/dist/cjs/le-turntable.cjs.entry.js +0 -139
  30. package/dist/cjs/loader.cjs.js +0 -15
  31. package/dist/cjs/loader.cjs.js.map +0 -1
  32. package/dist/cjs/utils-Dxx9WhWK.js +0 -152
  33. package/dist/cjs/utils-Dxx9WhWK.js.map +0 -1
  34. package/dist/collection/assets/icons/chevron-down.svg +0 -3
  35. package/dist/collection/collection-manifest.json +0 -47
  36. package/dist/collection/components/le-bar/le-bar.css +0 -255
  37. package/dist/collection/components/le-bar/le-bar.js +0 -680
  38. package/dist/collection/components/le-bar/le-bar.js.map +0 -1
  39. package/dist/collection/components/le-box/le-box.css +0 -37
  40. package/dist/collection/components/le-box/le-box.js +0 -614
  41. package/dist/collection/components/le-box/le-box.js.map +0 -1
  42. package/dist/collection/components/le-button/le-button.css +0 -290
  43. package/dist/collection/components/le-button/le-button.js +0 -460
  44. package/dist/collection/components/le-button/le-button.js.map +0 -1
  45. package/dist/collection/components/le-card/le-card.css +0 -74
  46. package/dist/collection/components/le-card/le-card.js +0 -102
  47. package/dist/collection/components/le-card/le-card.js.map +0 -1
  48. package/dist/collection/components/le-checkbox/le-checkbox.css +0 -93
  49. package/dist/collection/components/le-checkbox/le-checkbox.js +0 -192
  50. package/dist/collection/components/le-checkbox/le-checkbox.js.map +0 -1
  51. package/dist/collection/components/le-code-input/le-code-input.css +0 -106
  52. package/dist/collection/components/le-code-input/le-code-input.js +0 -466
  53. package/dist/collection/components/le-code-input/le-code-input.js.map +0 -1
  54. package/dist/collection/components/le-collapse/le-collapse.css +0 -31
  55. package/dist/collection/components/le-collapse/le-collapse.js +0 -184
  56. package/dist/collection/components/le-collapse/le-collapse.js.map +0 -1
  57. package/dist/collection/components/le-combobox/le-combobox.css +0 -144
  58. package/dist/collection/components/le-combobox/le-combobox.js +0 -659
  59. package/dist/collection/components/le-combobox/le-combobox.js.map +0 -1
  60. package/dist/collection/components/le-component/le-component.css +0 -189
  61. package/dist/collection/components/le-component/le-component.js +0 -367
  62. package/dist/collection/components/le-component/le-component.js.map +0 -1
  63. package/dist/collection/components/le-current-heading/le-current-heading.css +0 -13
  64. package/dist/collection/components/le-current-heading/le-current-heading.js +0 -130
  65. package/dist/collection/components/le-current-heading/le-current-heading.js.map +0 -1
  66. package/dist/collection/components/le-dropdown-base/le-dropdown-base.css +0 -167
  67. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +0 -761
  68. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +0 -1
  69. package/dist/collection/components/le-header/le-header.css +0 -120
  70. package/dist/collection/components/le-header/le-header.js +0 -508
  71. package/dist/collection/components/le-header/le-header.js.map +0 -1
  72. package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +0 -21
  73. package/dist/collection/components/le-header-placeholder/le-header-placeholder.js.map +0 -1
  74. package/dist/collection/components/le-icon/le-icon.css +0 -13
  75. package/dist/collection/components/le-icon/le-icon.js +0 -185
  76. package/dist/collection/components/le-icon/le-icon.js.map +0 -1
  77. package/dist/collection/components/le-multiselect/le-multiselect.css +0 -163
  78. package/dist/collection/components/le-multiselect/le-multiselect.js +0 -734
  79. package/dist/collection/components/le-multiselect/le-multiselect.js.map +0 -1
  80. package/dist/collection/components/le-navigation/le-navigation.css +0 -330
  81. package/dist/collection/components/le-navigation/le-navigation.js +0 -700
  82. package/dist/collection/components/le-navigation/le-navigation.js.map +0 -1
  83. package/dist/collection/components/le-number-input/le-number-input.css +0 -135
  84. package/dist/collection/components/le-number-input/le-number-input.js +0 -515
  85. package/dist/collection/components/le-number-input/le-number-input.js.map +0 -1
  86. package/dist/collection/components/le-popover/le-popover.css +0 -163
  87. package/dist/collection/components/le-popover/le-popover.js +0 -853
  88. package/dist/collection/components/le-popover/le-popover.js.map +0 -1
  89. package/dist/collection/components/le-popup/le-popup.api.js +0 -102
  90. package/dist/collection/components/le-popup/le-popup.api.js.map +0 -1
  91. package/dist/collection/components/le-popup/le-popup.css +0 -222
  92. package/dist/collection/components/le-popup/le-popup.js +0 -626
  93. package/dist/collection/components/le-popup/le-popup.js.map +0 -1
  94. package/dist/collection/components/le-round-progress/le-round-progress.css +0 -34
  95. package/dist/collection/components/le-round-progress/le-round-progress.js +0 -184
  96. package/dist/collection/components/le-round-progress/le-round-progress.js.map +0 -1
  97. package/dist/collection/components/le-scroll-progress/le-scroll-progress.css +0 -29
  98. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +0 -186
  99. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +0 -1
  100. package/dist/collection/components/le-segmented-control/le-segmented-control.css +0 -78
  101. package/dist/collection/components/le-segmented-control/le-segmented-control.js +0 -445
  102. package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +0 -1
  103. package/dist/collection/components/le-select/le-select.css +0 -121
  104. package/dist/collection/components/le-select/le-select.js +0 -578
  105. package/dist/collection/components/le-select/le-select.js.map +0 -1
  106. package/dist/collection/components/le-side-panel/le-side-panel.css +0 -193
  107. package/dist/collection/components/le-side-panel/le-side-panel.js +0 -953
  108. package/dist/collection/components/le-side-panel/le-side-panel.js.map +0 -1
  109. package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js +0 -610
  110. package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js.map +0 -1
  111. package/dist/collection/components/le-slot/le-slot.default.css +0 -222
  112. package/dist/collection/components/le-slot/le-slot.js +0 -638
  113. package/dist/collection/components/le-slot/le-slot.js.map +0 -1
  114. package/dist/collection/components/le-stack/le-stack.default.css +0 -37
  115. package/dist/collection/components/le-stack/le-stack.js +0 -389
  116. package/dist/collection/components/le-stack/le-stack.js.map +0 -1
  117. package/dist/collection/components/le-string-input/le-string-input.css +0 -83
  118. package/dist/collection/components/le-string-input/le-string-input.js +0 -413
  119. package/dist/collection/components/le-string-input/le-string-input.js.map +0 -1
  120. package/dist/collection/components/le-tab/le-tab.css +0 -289
  121. package/dist/collection/components/le-tab/le-tab.js +0 -565
  122. package/dist/collection/components/le-tab/le-tab.js.map +0 -1
  123. package/dist/collection/components/le-tab-bar/le-tab-bar.css +0 -89
  124. package/dist/collection/components/le-tab-bar/le-tab-bar.js +0 -467
  125. package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +0 -1
  126. package/dist/collection/components/le-tab-panel/le-tab-panel.css +0 -30
  127. package/dist/collection/components/le-tab-panel/le-tab-panel.js +0 -302
  128. package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +0 -1
  129. package/dist/collection/components/le-tabs/le-tabs.css +0 -146
  130. package/dist/collection/components/le-tabs/le-tabs.js +0 -588
  131. package/dist/collection/components/le-tabs/le-tabs.js.map +0 -1
  132. package/dist/collection/components/le-tag/le-tag.css +0 -139
  133. package/dist/collection/components/le-tag/le-tag.js +0 -266
  134. package/dist/collection/components/le-tag/le-tag.js.map +0 -1
  135. package/dist/collection/components/le-text/le-text.css +0 -169
  136. package/dist/collection/components/le-text/le-text.js +0 -475
  137. package/dist/collection/components/le-text/le-text.js.map +0 -1
  138. package/dist/collection/components/le-turntable/le-turntable.css +0 -10
  139. package/dist/collection/components/le-turntable/le-turntable.js +0 -210
  140. package/dist/collection/components/le-turntable/le-turntable.js.map +0 -1
  141. package/dist/collection/dist/components/assets/custom-elements.json +0 -11935
  142. package/dist/collection/dist/components/assets/icons/chevron-down.json +0 -13
  143. package/dist/collection/dist/components/assets/icons/chevron-down.svg +0 -3
  144. package/dist/collection/dist/components/assets/icons/ellipsis-horizontal.json +0 -14
  145. package/dist/collection/dist/components/assets/icons/ellipsis-vertical.json +0 -14
  146. package/dist/collection/dist/components/assets/icons/hamburger.json +0 -14
  147. package/dist/collection/dist/components/assets/icons/side-panel.json +0 -61
  148. package/dist/collection/dist/themes/base.css +0 -89
  149. package/dist/collection/dist/themes/dark.css +0 -104
  150. package/dist/collection/dist/themes/default.css +0 -112
  151. package/dist/collection/dist/themes/gradient.css +0 -104
  152. package/dist/collection/dist/themes/index.css +0 -76
  153. package/dist/collection/dist/themes/minimal.css +0 -104
  154. package/dist/collection/dist/themes/warm.css +0 -104
  155. package/dist/collection/global/app.js +0 -177
  156. package/dist/collection/global/app.js.map +0 -1
  157. package/dist/collection/index.js +0 -16
  158. package/dist/collection/index.js.map +0 -1
  159. package/dist/collection/types/blocks.js +0 -115
  160. package/dist/collection/types/blocks.js.map +0 -1
  161. package/dist/collection/types/options.js +0 -2
  162. package/dist/collection/types/options.js.map +0 -1
  163. package/dist/collection/utils/utils.js +0 -141
  164. package/dist/collection/utils/utils.js.map +0 -1
  165. package/dist/components/app.js +0 -180
  166. package/dist/components/app.js.map +0 -1
  167. package/dist/components/assets/custom-elements.json +0 -11935
  168. package/dist/components/assets/icons/chevron-down.json +0 -13
  169. package/dist/components/assets/icons/chevron-down.svg +0 -3
  170. package/dist/components/assets/icons/ellipsis-horizontal.json +0 -14
  171. package/dist/components/assets/icons/ellipsis-vertical.json +0 -14
  172. package/dist/components/assets/icons/hamburger.json +0 -14
  173. package/dist/components/assets/icons/side-panel.json +0 -61
  174. package/dist/components/index.d.ts +0 -33
  175. package/dist/components/index.js +0 -12
  176. package/dist/components/index.js.map +0 -1
  177. package/dist/components/le-bar.d.ts +0 -11
  178. package/dist/components/le-bar.js +0 -9
  179. package/dist/components/le-bar.js.map +0 -1
  180. package/dist/components/le-bar2.js +0 -506
  181. package/dist/components/le-bar2.js.map +0 -1
  182. package/dist/components/le-box.d.ts +0 -11
  183. package/dist/components/le-box.js +0 -273
  184. package/dist/components/le-box.js.map +0 -1
  185. package/dist/components/le-button.d.ts +0 -11
  186. package/dist/components/le-button.js +0 -9
  187. package/dist/components/le-button.js.map +0 -1
  188. package/dist/components/le-button2.js +0 -1791
  189. package/dist/components/le-button2.js.map +0 -1
  190. package/dist/components/le-card.d.ts +0 -11
  191. package/dist/components/le-card.js +0 -100
  192. package/dist/components/le-card.js.map +0 -1
  193. package/dist/components/le-checkbox.d.ts +0 -11
  194. package/dist/components/le-checkbox.js +0 -9
  195. package/dist/components/le-checkbox.js.map +0 -1
  196. package/dist/components/le-code-input.d.ts +0 -11
  197. package/dist/components/le-code-input.js +0 -265
  198. package/dist/components/le-code-input.js.map +0 -1
  199. package/dist/components/le-collapse.d.ts +0 -11
  200. package/dist/components/le-collapse.js +0 -9
  201. package/dist/components/le-collapse.js.map +0 -1
  202. package/dist/components/le-collapse2.js +0 -138
  203. package/dist/components/le-collapse2.js.map +0 -1
  204. package/dist/components/le-combobox.d.ts +0 -11
  205. package/dist/components/le-combobox.js +0 -326
  206. package/dist/components/le-combobox.js.map +0 -1
  207. package/dist/components/le-component.d.ts +0 -11
  208. package/dist/components/le-component.js +0 -9
  209. package/dist/components/le-component.js.map +0 -1
  210. package/dist/components/le-current-heading.d.ts +0 -11
  211. package/dist/components/le-current-heading.js +0 -93
  212. package/dist/components/le-current-heading.js.map +0 -1
  213. package/dist/components/le-dropdown-base.d.ts +0 -11
  214. package/dist/components/le-dropdown-base.js +0 -9
  215. package/dist/components/le-dropdown-base.js.map +0 -1
  216. package/dist/components/le-dropdown-base2.js +0 -393
  217. package/dist/components/le-dropdown-base2.js.map +0 -1
  218. package/dist/components/le-header-placeholder.d.ts +0 -11
  219. package/dist/components/le-header-placeholder.js +0 -37
  220. package/dist/components/le-header-placeholder.js.map +0 -1
  221. package/dist/components/le-header.d.ts +0 -11
  222. package/dist/components/le-header.js +0 -349
  223. package/dist/components/le-header.js.map +0 -1
  224. package/dist/components/le-icon.d.ts +0 -11
  225. package/dist/components/le-icon.js +0 -9
  226. package/dist/components/le-icon.js.map +0 -1
  227. package/dist/components/le-icon2.js +0 -150
  228. package/dist/components/le-icon2.js.map +0 -1
  229. package/dist/components/le-multiselect.d.ts +0 -11
  230. package/dist/components/le-multiselect.js +0 -405
  231. package/dist/components/le-multiselect.js.map +0 -1
  232. package/dist/components/le-navigation.d.ts +0 -11
  233. package/dist/components/le-navigation.js +0 -502
  234. package/dist/components/le-navigation.js.map +0 -1
  235. package/dist/components/le-number-input.d.ts +0 -11
  236. package/dist/components/le-number-input.js +0 -288
  237. package/dist/components/le-number-input.js.map +0 -1
  238. package/dist/components/le-popover.d.ts +0 -11
  239. package/dist/components/le-popover.js +0 -9
  240. package/dist/components/le-popover.js.map +0 -1
  241. package/dist/components/le-popover2.js +0 -667
  242. package/dist/components/le-popover2.js.map +0 -1
  243. package/dist/components/le-popup.api.js +0 -106
  244. package/dist/components/le-popup.api.js.map +0 -1
  245. package/dist/components/le-popup.d.ts +0 -11
  246. package/dist/components/le-popup.js +0 -9
  247. package/dist/components/le-popup.js.map +0 -1
  248. package/dist/components/le-round-progress.d.ts +0 -11
  249. package/dist/components/le-round-progress.js +0 -135
  250. package/dist/components/le-round-progress.js.map +0 -1
  251. package/dist/components/le-scroll-progress.d.ts +0 -11
  252. package/dist/components/le-scroll-progress.js +0 -142
  253. package/dist/components/le-scroll-progress.js.map +0 -1
  254. package/dist/components/le-segmented-control.d.ts +0 -11
  255. package/dist/components/le-segmented-control.js +0 -331
  256. package/dist/components/le-segmented-control.js.map +0 -1
  257. package/dist/components/le-select.d.ts +0 -11
  258. package/dist/components/le-select.js +0 -9
  259. package/dist/components/le-select.js.map +0 -1
  260. package/dist/components/le-side-panel-toggle.d.ts +0 -11
  261. package/dist/components/le-side-panel-toggle.js +0 -9
  262. package/dist/components/le-side-panel-toggle.js.map +0 -1
  263. package/dist/components/le-side-panel-toggle2.js +0 -311
  264. package/dist/components/le-side-panel-toggle2.js.map +0 -1
  265. package/dist/components/le-side-panel.d.ts +0 -11
  266. package/dist/components/le-side-panel.js +0 -660
  267. package/dist/components/le-side-panel.js.map +0 -1
  268. package/dist/components/le-slot.d.ts +0 -11
  269. package/dist/components/le-slot.js +0 -9
  270. package/dist/components/le-slot.js.map +0 -1
  271. package/dist/components/le-stack.d.ts +0 -11
  272. package/dist/components/le-stack.js +0 -215
  273. package/dist/components/le-stack.js.map +0 -1
  274. package/dist/components/le-string-input.d.ts +0 -11
  275. package/dist/components/le-string-input.js +0 -9
  276. package/dist/components/le-string-input.js.map +0 -1
  277. package/dist/components/le-tab-bar.d.ts +0 -11
  278. package/dist/components/le-tab-bar.js +0 -330
  279. package/dist/components/le-tab-bar.js.map +0 -1
  280. package/dist/components/le-tab-panel.d.ts +0 -11
  281. package/dist/components/le-tab-panel.js +0 -182
  282. package/dist/components/le-tab-panel.js.map +0 -1
  283. package/dist/components/le-tab.d.ts +0 -11
  284. package/dist/components/le-tab.js +0 -9
  285. package/dist/components/le-tab.js.map +0 -1
  286. package/dist/components/le-tab2.js +0 -220
  287. package/dist/components/le-tab2.js.map +0 -1
  288. package/dist/components/le-tabs.d.ts +0 -11
  289. package/dist/components/le-tabs.js +0 -397
  290. package/dist/components/le-tabs.js.map +0 -1
  291. package/dist/components/le-tag.d.ts +0 -11
  292. package/dist/components/le-tag.js +0 -9
  293. package/dist/components/le-tag.js.map +0 -1
  294. package/dist/components/le-tag2.js +0 -141
  295. package/dist/components/le-tag2.js.map +0 -1
  296. package/dist/components/le-text.d.ts +0 -11
  297. package/dist/components/le-text.js +0 -415
  298. package/dist/components/le-text.js.map +0 -1
  299. package/dist/components/le-turntable.d.ts +0 -11
  300. package/dist/components/le-turntable.js +0 -164
  301. package/dist/components/le-turntable.js.map +0 -1
  302. package/dist/components/utils.js +0 -146
  303. package/dist/components/utils.js.map +0 -1
  304. package/dist/docs.d.ts +0 -443
  305. package/dist/docs.json +0 -14289
  306. package/dist/esm/index-DFTm5BqT.js +0 -1844
  307. package/dist/esm/index-DFTm5BqT.js.map +0 -1
  308. package/dist/esm/index.js +0 -109
  309. package/dist/esm/index.js.map +0 -1
  310. package/dist/esm/le-bar_16.entry.js +0 -3692
  311. package/dist/esm/le-box.entry.js +0 -182
  312. package/dist/esm/le-box.entry.js.map +0 -1
  313. package/dist/esm/le-card.entry.js +0 -27
  314. package/dist/esm/le-card.entry.js.map +0 -1
  315. package/dist/esm/le-code-input.entry.js +0 -179
  316. package/dist/esm/le-code-input.entry.js.map +0 -1
  317. package/dist/esm/le-combobox.entry.js +0 -235
  318. package/dist/esm/le-combobox.entry.js.map +0 -1
  319. package/dist/esm/le-header-placeholder.entry.js +0 -16
  320. package/dist/esm/le-header-placeholder.entry.js.map +0 -1
  321. package/dist/esm/le-kit.js +0 -23
  322. package/dist/esm/le-kit.js.map +0 -1
  323. package/dist/esm/le-multiselect.entry.js +0 -304
  324. package/dist/esm/le-multiselect.entry.js.map +0 -1
  325. package/dist/esm/le-number-input.entry.js +0 -200
  326. package/dist/esm/le-number-input.entry.js.map +0 -1
  327. package/dist/esm/le-round-progress.entry.js +0 -104
  328. package/dist/esm/le-round-progress.entry.js.map +0 -1
  329. package/dist/esm/le-segmented-control.entry.js +0 -243
  330. package/dist/esm/le-segmented-control.entry.js.map +0 -1
  331. package/dist/esm/le-side-panel-toggle.entry.js +0 -227
  332. package/dist/esm/le-side-panel-toggle.entry.js.map +0 -1
  333. package/dist/esm/le-side-panel.entry.js +0 -544
  334. package/dist/esm/le-side-panel.entry.js.map +0 -1
  335. package/dist/esm/le-stack.entry.js +0 -133
  336. package/dist/esm/le-stack.entry.js.map +0 -1
  337. package/dist/esm/le-tab-bar.entry.js +0 -240
  338. package/dist/esm/le-tab-bar.entry.js.map +0 -1
  339. package/dist/esm/le-tab-panel.entry.js +0 -98
  340. package/dist/esm/le-tab-panel.entry.js.map +0 -1
  341. package/dist/esm/le-tab.entry.js +0 -134
  342. package/dist/esm/le-tab.entry.js.map +0 -1
  343. package/dist/esm/le-tabs.entry.js +0 -305
  344. package/dist/esm/le-tabs.entry.js.map +0 -1
  345. package/dist/esm/le-tag.entry.js +0 -66
  346. package/dist/esm/le-tag.entry.js.map +0 -1
  347. package/dist/esm/le-text.entry.js +0 -333
  348. package/dist/esm/le-text.entry.js.map +0 -1
  349. package/dist/esm/le-turntable.entry.js +0 -137
  350. package/dist/esm/le-turntable.entry.js.map +0 -1
  351. package/dist/esm/loader.js +0 -13
  352. package/dist/esm/loader.js.map +0 -1
  353. package/dist/esm/utils-DZYCZLrF.js +0 -146
  354. package/dist/esm/utils-DZYCZLrF.js.map +0 -1
  355. package/dist/index.cjs.js +0 -1
  356. package/dist/index.js +0 -1
  357. package/dist/le-kit/dist/components/assets/custom-elements.json +0 -11935
  358. package/dist/le-kit/dist/components/assets/icons/chevron-down.json +0 -13
  359. package/dist/le-kit/dist/components/assets/icons/chevron-down.svg +0 -3
  360. package/dist/le-kit/dist/components/assets/icons/ellipsis-horizontal.json +0 -14
  361. package/dist/le-kit/dist/components/assets/icons/ellipsis-vertical.json +0 -14
  362. package/dist/le-kit/dist/components/assets/icons/hamburger.json +0 -14
  363. package/dist/le-kit/dist/components/assets/icons/side-panel.json +0 -61
  364. package/dist/le-kit/dist/themes/base.css +0 -89
  365. package/dist/le-kit/dist/themes/dark.css +0 -104
  366. package/dist/le-kit/dist/themes/default.css +0 -112
  367. package/dist/le-kit/dist/themes/gradient.css +0 -104
  368. package/dist/le-kit/dist/themes/index.css +0 -76
  369. package/dist/le-kit/dist/themes/minimal.css +0 -104
  370. package/dist/le-kit/dist/themes/warm.css +0 -104
  371. package/dist/le-kit/index.esm.js +0 -2
  372. package/dist/le-kit/index.esm.js.map +0 -1
  373. package/dist/le-kit/le-kit.css +0 -1
  374. package/dist/le-kit/le-kit.esm.js +0 -2
  375. package/dist/le-kit/le-kit.esm.js.map +0 -1
  376. package/dist/le-kit/loader.esm.js.map +0 -1
  377. package/dist/le-kit/p-221d379a.entry.js +0 -2
  378. package/dist/le-kit/p-221d379a.entry.js.map +0 -1
  379. package/dist/le-kit/p-24112ca3.entry.js +0 -2
  380. package/dist/le-kit/p-24112ca3.entry.js.map +0 -1
  381. package/dist/le-kit/p-2c6d080d.entry.js +0 -2
  382. package/dist/le-kit/p-2c6d080d.entry.js.map +0 -1
  383. package/dist/le-kit/p-46276e77.entry.js +0 -2
  384. package/dist/le-kit/p-46276e77.entry.js.map +0 -1
  385. package/dist/le-kit/p-516c8531.entry.js +0 -2
  386. package/dist/le-kit/p-516c8531.entry.js.map +0 -1
  387. package/dist/le-kit/p-6ae60ba5.entry.js +0 -2
  388. package/dist/le-kit/p-6ae60ba5.entry.js.map +0 -1
  389. package/dist/le-kit/p-6b69f9a2.entry.js +0 -2
  390. package/dist/le-kit/p-6b69f9a2.entry.js.map +0 -1
  391. package/dist/le-kit/p-6d14306f.entry.js +0 -2
  392. package/dist/le-kit/p-6d14306f.entry.js.map +0 -1
  393. package/dist/le-kit/p-7bcdf2d4.entry.js +0 -2
  394. package/dist/le-kit/p-7bcdf2d4.entry.js.map +0 -1
  395. package/dist/le-kit/p-7cf1e23c.entry.js +0 -2
  396. package/dist/le-kit/p-7cf1e23c.entry.js.map +0 -1
  397. package/dist/le-kit/p-85f2fd4d.entry.js +0 -2
  398. package/dist/le-kit/p-85f2fd4d.entry.js.map +0 -1
  399. package/dist/le-kit/p-98242429.entry.js +0 -2
  400. package/dist/le-kit/p-98242429.entry.js.map +0 -1
  401. package/dist/le-kit/p-D8RYDS9p.js +0 -2
  402. package/dist/le-kit/p-D8RYDS9p.js.map +0 -1
  403. package/dist/le-kit/p-DFTm5BqT.js +0 -3
  404. package/dist/le-kit/p-DFTm5BqT.js.map +0 -1
  405. package/dist/le-kit/p-ab6c1def.entry.js +0 -2
  406. package/dist/le-kit/p-ab6c1def.entry.js.map +0 -1
  407. package/dist/le-kit/p-ae4ead64.entry.js +0 -2
  408. package/dist/le-kit/p-ae4ead64.entry.js.map +0 -1
  409. package/dist/le-kit/p-b05d4511.entry.js +0 -2
  410. package/dist/le-kit/p-b05d4511.entry.js.map +0 -1
  411. package/dist/le-kit/p-b6ac02ff.entry.js +0 -2
  412. package/dist/le-kit/p-b6ac02ff.entry.js.map +0 -1
  413. package/dist/le-kit/p-c24769e2.entry.js +0 -2
  414. package/dist/le-kit/p-c24769e2.entry.js.map +0 -1
  415. package/dist/le-kit/p-dc0445ad.entry.js +0 -2
  416. package/dist/le-kit/p-dc0445ad.entry.js.map +0 -1
  417. package/dist/le-kit/p-eb5286f2.entry.js +0 -2
  418. package/dist/le-kit/p-eb5286f2.entry.js.map +0 -1
  419. package/dist/le-kit/p-f78b1ee6.entry.js +0 -2
  420. package/dist/le-kit/p-f78b1ee6.entry.js.map +0 -1
  421. package/dist/themes/base.css +0 -89
  422. package/dist/themes/dark.css +0 -104
  423. package/dist/themes/default.css +0 -112
  424. package/dist/themes/gradient.css +0 -104
  425. package/dist/themes/index.css +0 -76
  426. package/dist/themes/minimal.css +0 -104
  427. package/dist/themes/warm.css +0 -104
  428. package/dist/types/components/le-bar/le-bar.d.ts +0 -131
  429. package/dist/types/components/le-box/le-box.d.ts +0 -111
  430. package/dist/types/components/le-button/le-button.d.ts +0 -93
  431. package/dist/types/components/le-card/le-card.d.ts +0 -37
  432. package/dist/types/components/le-checkbox/le-checkbox.d.ts +0 -46
  433. package/dist/types/components/le-code-input/le-code-input.d.ts +0 -102
  434. package/dist/types/components/le-collapse/le-collapse.d.ts +0 -43
  435. package/dist/types/components/le-combobox/le-combobox.d.ts +0 -128
  436. package/dist/types/components/le-component/le-component.d.ts +0 -115
  437. package/dist/types/components/le-current-heading/le-current-heading.d.ts +0 -25
  438. package/dist/types/components/le-dropdown-base/le-dropdown-base.d.ts +0 -118
  439. package/dist/types/components/le-header/le-header.d.ts +0 -115
  440. package/dist/types/components/le-header-placeholder/le-header-placeholder.d.ts +0 -13
  441. package/dist/types/components/le-icon/le-icon.d.ts +0 -28
  442. package/dist/types/components/le-multiselect/le-multiselect.d.ts +0 -143
  443. package/dist/types/components/le-navigation/le-navigation.d.ts +0 -125
  444. package/dist/types/components/le-number-input/le-number-input.d.ts +0 -106
  445. package/dist/types/components/le-popover/le-popover.d.ts +0 -129
  446. package/dist/types/components/le-popup/le-popup.api.d.ts +0 -73
  447. package/dist/types/components/le-popup/le-popup.d.ts +0 -127
  448. package/dist/types/components/le-round-progress/le-round-progress.d.ts +0 -37
  449. package/dist/types/components/le-scroll-progress/le-scroll-progress.d.ts +0 -40
  450. package/dist/types/components/le-segmented-control/le-segmented-control.d.ts +0 -82
  451. package/dist/types/components/le-select/le-select.d.ts +0 -125
  452. package/dist/types/components/le-side-panel/le-side-panel.d.ts +0 -100
  453. package/dist/types/components/le-side-panel-toggle/le-side-panel-toggle.d.ts +0 -48
  454. package/dist/types/components/le-slot/le-slot.d.ts +0 -149
  455. package/dist/types/components/le-stack/le-stack.d.ts +0 -73
  456. package/dist/types/components/le-string-input/le-string-input.d.ts +0 -91
  457. package/dist/types/components/le-tab/le-tab.d.ts +0 -116
  458. package/dist/types/components/le-tab-bar/le-tab-bar.d.ts +0 -88
  459. package/dist/types/components/le-tab-panel/le-tab-panel.d.ts +0 -75
  460. package/dist/types/components/le-tabs/le-tabs.d.ts +0 -108
  461. package/dist/types/components/le-tag/le-tag.d.ts +0 -78
  462. package/dist/types/components/le-text/le-text.d.ts +0 -141
  463. package/dist/types/components/le-turntable/le-turntable.d.ts +0 -55
  464. package/dist/types/components.d.ts +0 -5716
  465. package/dist/types/global/app.d.ts +0 -96
  466. package/dist/types/index.d.ts +0 -16
  467. package/dist/types/stencil-public-runtime.d.ts +0 -1799
  468. package/dist/types/types/blocks.d.ts +0 -136
  469. package/dist/types/types/options.d.ts +0 -143
  470. package/dist/types/utils/utils.d.ts +0 -54
  471. package/loader/cdn.js +0 -1
  472. package/loader/index.cjs.js +0 -1
  473. package/loader/index.d.ts +0 -24
  474. package/loader/index.es2017.js +0 -1
  475. package/loader/index.js +0 -2
@@ -1,544 +0,0 @@
1
- import { r as registerInstance, c as createEvent, a as getElement, h } from './index-DFTm5BqT.js';
2
-
3
- const leSidePanelCss = () => `:host{display:block;height:100%;--le-side-panel-width:280px;--le-side-panel-margin:0px;--le-side-panel-backdrop:var(--le-color-backdrop);--le-side-panel-border-radius:var(--le-radius-lg)}.host{position:relative;height:100%;min-height:0}.layout{display:flex;align-items:stretch;min-width:0;height:100%;min-height:0}.layout.start{flex-direction:row}.layout.end{flex-direction:row-reverse}.inlinePanel{flex:0 0 auto;width:var(--le-side-panel-width);min-width:0;height:100%;overflow:hidden;transition:width var(--le-side-panel-transition, var(--le-transition-normal))}.inlinePanel.hidden{width:0}.inlinePanel .panel{transform:translateX(0);opacity:1;transition:transform var(--le-side-panel-transition, var(--le-transition-normal)),
4
- opacity var(--le-side-panel-transition, var(--le-transition-normal))}.layout.start .inlinePanel.hidden .panel{transform:translateX(-100%);opacity:0;pointer-events:none}.layout.end .inlinePanel.hidden .panel{transform:translateX(100%);opacity:0;pointer-events:none}.content{flex:1 1 auto;min-width:0;height:100%;min-height:0}.panel{position:relative;height:100%;max-height:min(calc(100% - (var(--le-side-panel-margin) * 2)), calc(100vh - (var(--le-side-panel-margin) * 2)));margin:var(--le-side-panel-margin);border-radius:var(--le-side-panel-border-radius);background:var(--le-color-surface, #fff);color:var(--le-color-text, #000);border-right:1px solid var(--le-color-border, rgba(0, 0, 0, 0.12));box-sizing:border-box}.panel.end{border-right:0;border-left:1px solid var(--le-color-border, rgba(0, 0, 0, 0.12))}.panel-scroller{height:100%;overflow:auto}.close{position:absolute;top:4px;right:4px;z-index:1;border:0;border-radius:6px;background:transparent;color:inherit;cursor:pointer}.handle{position:absolute;top:0;bottom:0;width:10px;cursor:col-resize}.handle.start{right:-5px}.handle.end{left:-5px}.overlayRoot{position:absolute;inset:0;background:var(--le-side-panel-backdrop);z-index:var(--le-z-modal-backdrop, 1040);opacity:0;pointer-events:none;transition:opacity var(--le-side-panel-transition, var(--le-transition-normal));height:100%}.overlayRoot.visible{opacity:1;pointer-events:auto}.overlayPanelWrap{position:absolute;top:0;bottom:0;width:min(100%, var(--le-side-panel-width));height:100%;z-index:var(--le-z-modal, 1050);display:flex;align-items:stretch}.overlayPanelWrap.start{left:0;transform:translateX(-100%)}.overlayPanelWrap.end{right:0;transform:translateX(100%)}.overlayPanelWrap.visible.start,.overlayPanelWrap.visible.end{transform:translateX(0)}.overlayPanelWrap{transition:transform var(--le-side-panel-transition, var(--le-transition-normal))}.host[data-resizing='true'] .panel,.host[data-resizing='true'] .overlayPanelWrap,.host[data-resizing='true'] .inlinePanel{transition:none}@media (prefers-reduced-motion: reduce){.overlayPanelWrap,.overlayRoot,.inlinePanel{transition:none}}`;
5
-
6
- function clamp(value, min, max) {
7
- return Math.min(max, Math.max(min, value));
8
- }
9
- function readCssVariablePixels(varName) {
10
- const v = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();
11
- if (!v) {
12
- return undefined;
13
- }
14
- const parsed = Number.parseFloat(v);
15
- return Number.isFinite(parsed) ? parsed : undefined;
16
- }
17
- function parseCollapseAtPx(value) {
18
- if (!value) {
19
- return undefined;
20
- }
21
- const trimmed = value.trim();
22
- if (!trimmed) {
23
- return undefined;
24
- }
25
- if (trimmed.startsWith('--')) {
26
- const fromVar = readCssVariablePixels(trimmed);
27
- return fromVar;
28
- }
29
- const numeric = Number.parseFloat(trimmed);
30
- return Number.isFinite(numeric) ? numeric : undefined;
31
- }
32
- const LeSidePanel = class {
33
- constructor(hostRef) {
34
- registerInstance(this, hostRef);
35
- this.leSidePanelOpenChange = createEvent(this, "leSidePanelOpenChange");
36
- this.leSidePanelCollapsedChange = createEvent(this, "leSidePanelCollapsedChange");
37
- this.leSidePanelWidthChange = createEvent(this, "leSidePanelWidthChange");
38
- }
39
- get el() { return getElement(this); }
40
- /**
41
- * Optional id used to match toggle requests.
42
- * If set, the panel only responds to toggle events with the same `panelId`.
43
- */
44
- panelId;
45
- /** Which side the panel is attached to. */
46
- side = 'start';
47
- /** Width breakpoint (in px or a CSS var like `--le-breakpoint-md`) below which the panel enters "narrow" mode. */
48
- collapseAt;
49
- /** Behavior when in narrow mode. */
50
- narrowBehavior = 'overlay';
51
- /**
52
- * Panel open state for narrow mode.
53
- * - overlay: controls modal drawer visibility
54
- * - push: controls whether panel is shown (non-modal)
55
- */
56
- open = false;
57
- /** Panel collapsed state for wide mode (fully hidden). */
58
- collapsed = false;
59
- /** Default panel width in pixels. */
60
- panelWidth = 280;
61
- /** Minimum allowed width when resizable. */
62
- minPanelWidth = 220;
63
- /** Maximum allowed width when resizable. */
64
- maxPanelWidth = 420;
65
- /** Allows users to resize the panel by dragging its edge. */
66
- resizable = false;
67
- /** When set, panel width + collapsed state are persisted in localStorage. */
68
- persistKey;
69
- /** Show a close button inside the panel (primarily used in narrow overlay mode). */
70
- showCloseButton = true;
71
- /** When crossing to wide mode, automatically show the panel (collapsed=false). */
72
- autoShowOnWide = true;
73
- /** When crossing to narrow mode, automatically hide the panel (open=false). */
74
- autoHideOnNarrow = true;
75
- /** Accessible label for the panel navigation region. */
76
- panelLabel = 'Navigation';
77
- leSidePanelOpenChange;
78
- leSidePanelCollapsedChange;
79
- leSidePanelWidthChange;
80
- isNarrow = false;
81
- responsiveReady = false;
82
- overlayMounted = false;
83
- overlayVisible = false;
84
- currentWidthPx;
85
- resizing = false;
86
- resizeObserver;
87
- panelEl;
88
- overlayWrapEl;
89
- focusedBeforeOpen;
90
- dragPointerId;
91
- dragStartX;
92
- dragStartWidth;
93
- connectedCallback() {
94
- this.restorePersistedState();
95
- this.currentWidthPx = clamp(this.currentWidthPx || this.panelWidth, this.minPanelWidth, this.maxPanelWidth);
96
- if ('ResizeObserver' in window) {
97
- this.resizeObserver = new ResizeObserver(() => {
98
- this.recomputeNarrow();
99
- });
100
- this.resizeObserver.observe(this.el);
101
- }
102
- // Ensure we get at least one post-layout measurement.
103
- {
104
- requestAnimationFrame(() => this.recomputeNarrow());
105
- }
106
- }
107
- componentWillLoad() {
108
- this.recomputeNarrow();
109
- }
110
- disconnectedCallback() {
111
- this.resizeObserver?.disconnect();
112
- this.teardownDragListeners();
113
- }
114
- isModalOverlayActive() {
115
- return this.isNarrow && this.narrowBehavior === 'overlay' && this.open;
116
- }
117
- syncOverlayToState() {
118
- const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';
119
- if (!shouldUseOverlay) {
120
- this.overlayVisible = false;
121
- this.overlayMounted = false;
122
- return;
123
- }
124
- if (this.open) {
125
- if (!this.overlayMounted) {
126
- this.overlayMounted = true;
127
- this.overlayVisible = false;
128
- requestAnimationFrame(() => {
129
- if (this.isNarrow && this.narrowBehavior === 'overlay' && this.open) {
130
- this.overlayVisible = true;
131
- this.focusFirstInsidePanel();
132
- }
133
- });
134
- }
135
- return;
136
- }
137
- // Closed: allow unmount to be handled by transition end / fallback timeout.
138
- this.overlayVisible = false;
139
- }
140
- onPanelWidthChanged() {
141
- if (!Number.isFinite(this.panelWidth)) {
142
- return;
143
- }
144
- if (!this.resizing) {
145
- this.currentWidthPx = clamp(this.panelWidth, this.minPanelWidth, this.maxPanelWidth);
146
- this.persistState();
147
- }
148
- }
149
- onCollapsedChanged() {
150
- this.persistState();
151
- this.leSidePanelCollapsedChange.emit({ collapsed: this.collapsed, panelId: this.panelId });
152
- }
153
- onOpenChanged(newValue) {
154
- const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';
155
- if (!shouldUseOverlay) {
156
- this.persistState();
157
- this.leSidePanelOpenChange.emit({ open: this.open, panelId: this.panelId });
158
- return;
159
- }
160
- if (newValue) {
161
- this.focusedBeforeOpen = document.activeElement || null;
162
- this.overlayMounted = true;
163
- this.overlayVisible = false;
164
- requestAnimationFrame(() => {
165
- this.overlayVisible = true;
166
- this.focusFirstInsidePanel();
167
- });
168
- }
169
- else {
170
- this.overlayVisible = false;
171
- this.persistState();
172
- this.restoreFocusAfterClose();
173
- // Fallback: if transitionend doesn't fire, ensure overlay unmounts.
174
- // (e.g. interrupted transitions or unusual browser behavior)
175
- window.setTimeout(() => {
176
- const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';
177
- if (shouldUseOverlay && !this.open && !this.overlayVisible) {
178
- this.overlayMounted = false;
179
- }
180
- }, 350);
181
- }
182
- this.leSidePanelOpenChange.emit({ open: this.open, panelId: this.panelId });
183
- }
184
- onResponsivePropChanged() {
185
- this.recomputeNarrow();
186
- }
187
- onDocumentKeyDown(ev) {
188
- if (!this.isModalOverlayActive()) {
189
- return;
190
- }
191
- if (ev.key === 'Escape') {
192
- ev.preventDefault();
193
- ev.stopPropagation();
194
- this.open = false;
195
- return;
196
- }
197
- if (ev.key !== 'Tab') {
198
- return;
199
- }
200
- const panel = this.panelEl;
201
- if (!panel) {
202
- return;
203
- }
204
- const focusables = this.getFocusableElements(panel);
205
- if (focusables.length === 0) {
206
- ev.preventDefault();
207
- try {
208
- panel.focus();
209
- }
210
- catch {
211
- // ignore
212
- }
213
- return;
214
- }
215
- const first = focusables[0];
216
- const last = focusables[focusables.length - 1];
217
- const active = document.activeElement;
218
- if (ev.shiftKey) {
219
- if (!active || active === first || !panel.contains(active)) {
220
- ev.preventDefault();
221
- try {
222
- last.focus();
223
- }
224
- catch {
225
- // ignore
226
- }
227
- }
228
- }
229
- else {
230
- if (active === last) {
231
- ev.preventDefault();
232
- try {
233
- first.focus();
234
- }
235
- catch {
236
- // ignore
237
- }
238
- }
239
- }
240
- }
241
- onToggleRequest(ev) {
242
- const detail = ev.detail;
243
- if (!detail || !detail.action) {
244
- return;
245
- }
246
- // panelId matching rules:
247
- // - If this panel has panelId: respond only when detail.panelId matches.
248
- // - If this panel has no panelId: respond only when detail.panelId is empty.
249
- const requestedId = detail.panelId || '';
250
- const myId = this.panelId || '';
251
- if (myId !== requestedId) {
252
- return;
253
- }
254
- if (this.isNarrow) {
255
- this.applyActionToOpen(detail.action);
256
- }
257
- else {
258
- this.applyActionToCollapsed(detail.action);
259
- }
260
- }
261
- applyActionToOpen(action) {
262
- if (action === 'open') {
263
- this.open = true;
264
- return;
265
- }
266
- if (action === 'close') {
267
- this.open = false;
268
- return;
269
- }
270
- this.open = !this.open;
271
- }
272
- applyActionToCollapsed(action) {
273
- if (action === 'open') {
274
- this.collapsed = false;
275
- return;
276
- }
277
- if (action === 'close') {
278
- this.collapsed = true;
279
- return;
280
- }
281
- this.collapsed = !this.collapsed;
282
- }
283
- recomputeNarrow() {
284
- const collapseAtPx = parseCollapseAtPx(this.collapseAt);
285
- if (!collapseAtPx) {
286
- this.isNarrow = false;
287
- this.responsiveReady = true;
288
- this.syncOverlayToState();
289
- return;
290
- }
291
- const width = this.el.clientWidth;
292
- // If we can't measure yet (common on first paint), don't guess a mode.
293
- // This prevents a brief "wide" flash before ResizeObserver kicks in.
294
- if (!(width > 0)) {
295
- this.responsiveReady = false;
296
- return;
297
- }
298
- this.responsiveReady = true;
299
- const nextIsNarrow = width < collapseAtPx;
300
- const prevIsNarrow = this.isNarrow;
301
- this.isNarrow = nextIsNarrow;
302
- if (prevIsNarrow !== nextIsNarrow) {
303
- if (nextIsNarrow) {
304
- if (this.autoHideOnNarrow) {
305
- this.open = false;
306
- }
307
- }
308
- else {
309
- // entering wide mode
310
- this.open = false;
311
- this.overlayVisible = false;
312
- this.overlayMounted = false;
313
- if (this.autoShowOnWide) {
314
- this.collapsed = false;
315
- }
316
- }
317
- }
318
- this.syncOverlayToState();
319
- }
320
- restorePersistedState() {
321
- if (!this.persistKey) {
322
- return;
323
- }
324
- try {
325
- const raw = window.localStorage.getItem(this.persistKey);
326
- if (!raw) {
327
- return;
328
- }
329
- const parsed = JSON.parse(raw);
330
- if (typeof parsed.width === 'number' && Number.isFinite(parsed.width)) {
331
- this.currentWidthPx = parsed.width;
332
- }
333
- if (typeof parsed.collapsed === 'boolean') {
334
- this.collapsed = parsed.collapsed;
335
- }
336
- }
337
- catch {
338
- // ignore
339
- }
340
- }
341
- persistState() {
342
- if (!this.persistKey) {
343
- return;
344
- }
345
- const payload = {
346
- width: this.currentWidthPx,
347
- collapsed: this.collapsed,
348
- };
349
- try {
350
- window.localStorage.setItem(this.persistKey, JSON.stringify(payload));
351
- }
352
- catch {
353
- // ignore
354
- }
355
- }
356
- focusFirstInsidePanel() {
357
- const root = this.panelEl;
358
- if (!root) {
359
- return;
360
- }
361
- const candidates = this.getFocusableElements(root);
362
- for (const el of candidates) {
363
- if (el.hasAttribute('disabled')) {
364
- continue;
365
- }
366
- const tabindex = el.getAttribute('tabindex');
367
- if (tabindex === '-1') {
368
- continue;
369
- }
370
- try {
371
- el.focus();
372
- return;
373
- }
374
- catch {
375
- // ignore
376
- }
377
- }
378
- }
379
- getFocusableElements(root) {
380
- const selector = 'button,[href],input,select,textarea,[tabindex]:not([tabindex="-1"])';
381
- const all = Array.from(root.querySelectorAll(selector));
382
- return all.filter(el => {
383
- if (el.hasAttribute('disabled')) {
384
- return false;
385
- }
386
- const tabindex = el.getAttribute('tabindex');
387
- if (tabindex === '-1') {
388
- return false;
389
- }
390
- return true;
391
- });
392
- }
393
- restoreFocusAfterClose() {
394
- const prev = this.focusedBeforeOpen;
395
- this.focusedBeforeOpen = null;
396
- if (prev && document.contains(prev)) {
397
- try {
398
- prev.focus();
399
- }
400
- catch {
401
- // ignore
402
- }
403
- }
404
- }
405
- onOverlayTransitionEnd = (ev) => {
406
- if (ev.target !== this.overlayWrapEl) {
407
- return;
408
- }
409
- if (ev.propertyName !== 'transform') {
410
- return;
411
- }
412
- const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';
413
- if (!shouldUseOverlay) {
414
- return;
415
- }
416
- if (!this.open && !this.overlayVisible) {
417
- this.overlayMounted = false;
418
- }
419
- };
420
- onOverlayPointerDown = (ev) => {
421
- // Close on any click outside the panel.
422
- const panel = this.panelEl;
423
- if (!panel) {
424
- return;
425
- }
426
- const path = ev.composedPath();
427
- if (!path.includes(panel)) {
428
- this.open = false;
429
- }
430
- };
431
- startResizeDrag = (ev) => {
432
- if (!this.resizable) {
433
- return;
434
- }
435
- // No resizing if fully hidden.
436
- if (!this.isNarrow && this.collapsed) {
437
- return;
438
- }
439
- if (this.isNarrow && this.narrowBehavior === 'overlay' && !this.open) {
440
- return;
441
- }
442
- if (this.isNarrow && this.narrowBehavior === 'push' && !this.open) {
443
- return;
444
- }
445
- this.resizing = true;
446
- this.dragPointerId = ev.pointerId;
447
- this.dragStartX = ev.clientX;
448
- this.dragStartWidth = this.currentWidthPx;
449
- ev.currentTarget?.setPointerCapture?.(ev.pointerId);
450
- window.addEventListener('pointermove', this.onResizeDragMove, { passive: false });
451
- window.addEventListener('pointerup', this.onResizeDragEnd, { passive: true });
452
- window.addEventListener('pointercancel', this.onResizeDragEnd, { passive: true });
453
- };
454
- onResizeDragMove = (ev) => {
455
- if (!this.resizing || this.dragPointerId !== ev.pointerId) {
456
- return;
457
- }
458
- ev.preventDefault();
459
- const startX = this.dragStartX ?? ev.clientX;
460
- const startWidth = this.dragStartWidth ?? this.currentWidthPx;
461
- const delta = ev.clientX - startX;
462
- const dir = this.side === 'start' ? 1 : -1;
463
- const nextWidth = clamp(startWidth + delta * dir, this.minPanelWidth, this.maxPanelWidth);
464
- this.currentWidthPx = nextWidth;
465
- this.leSidePanelWidthChange.emit({ width: this.currentWidthPx, panelId: this.panelId });
466
- };
467
- onResizeDragEnd = (ev) => {
468
- if (!this.resizing || this.dragPointerId !== ev.pointerId) {
469
- return;
470
- }
471
- this.resizing = false;
472
- this.dragPointerId = undefined;
473
- this.dragStartX = undefined;
474
- this.dragStartWidth = undefined;
475
- this.teardownDragListeners();
476
- this.persistState();
477
- this.leSidePanelWidthChange.emit({ width: this.currentWidthPx, panelId: this.panelId });
478
- };
479
- teardownDragListeners() {
480
- window.removeEventListener('pointermove', this.onResizeDragMove);
481
- window.removeEventListener('pointerup', this.onResizeDragEnd);
482
- window.removeEventListener('pointercancel', this.onResizeDragEnd);
483
- }
484
- renderPanelInner(opts) {
485
- const renderPanelSlot = opts?.renderPanelSlot ?? true;
486
- const showClose = this.showCloseButton && this.isNarrow && this.narrowBehavior === 'overlay';
487
- const tabIndex = this.isNarrow && this.narrowBehavior === 'overlay' ? -1 : null;
488
- return (h("div", { class: {
489
- panel: true,
490
- start: this.side === 'start',
491
- end: this.side === 'end',
492
- resizing: this.resizing,
493
- }, part: "panel", ref: el => (this.panelEl = el), role: "navigation", "aria-label": this.panelLabel, tabindex: tabIndex }, showClose ? (h("le-side-panel-toggle", { "panel-id": "demo-side", action: "toggle", shortcut: "Mod+B", variant: "clear", class: "close", part: "close-button", "aria-label": "Close panel", "icon-only": "true", style: {
494
- '--le-button-icon-only-padding': 'var(--le-space-sm)',
495
- }, onClick: () => (this.open = false) }, h("slot", { name: "close-icon", slot: "icon-only" }, h("le-icon", { name: "side-panel" })))) : null, h("div", { class: "panel-scroller", part: "panel-scroller" }, renderPanelSlot ? h("slot", { name: "panel" }) : null), this.resizable ? (h("div", { class: {
496
- handle: true,
497
- start: this.side === 'start',
498
- end: this.side === 'end',
499
- }, part: "resize-handle", role: "separator", "aria-orientation": "vertical", tabindex: -1, onPointerDown: this.startResizeDrag })) : null));
500
- }
501
- render() {
502
- const widthStyle = {
503
- '--le-side-panel-width': `${this.currentWidthPx}px`,
504
- };
505
- const isOverlay = this.isNarrow && this.narrowBehavior === 'overlay';
506
- const isModalOverlayOpen = isOverlay && this.open;
507
- const allowPanel = this.responsiveReady;
508
- const showWidePanel = allowPanel && !this.isNarrow && !this.collapsed;
509
- const showNarrowPushPanel = allowPanel && this.isNarrow && this.narrowBehavior === 'push' && this.open;
510
- const layoutHasInlinePanel = showWidePanel || showNarrowPushPanel;
511
- return (h("div", { key: '692aa465f1a1b8c40ec21d0780eb61d9cebdc6bf', class: {
512
- host: true,
513
- narrow: this.isNarrow,
514
- wide: !this.isNarrow,
515
- overlay: isOverlay,
516
- push: !isOverlay,
517
- collapsed: !this.isNarrow && this.collapsed,
518
- }, style: widthStyle, "data-resizing": this.resizing ? 'true' : null }, h("div", { key: 'a01741c802b6eaa8f70bd9265e0b2a19e5cf29cf', class: {
519
- 'layout': true,
520
- 'has-panel': layoutHasInlinePanel,
521
- 'start': this.side === 'start',
522
- 'end': this.side === 'end',
523
- } }, h("div", { key: '8795da430749e8af45175166a51848ca9c673f06', class: {
524
- inlinePanel: true,
525
- hidden: !layoutHasInlinePanel,
526
- }, "aria-hidden": !layoutHasInlinePanel ? 'true' : null }, this.renderPanelInner({ renderPanelSlot: !isOverlay })), h("div", { key: '16ed86717a59b27b2bc96ee703b53a74a9963595', class: "content", part: "content", "aria-hidden": isModalOverlayOpen ? 'true' : null }, h("slot", { key: '445b23491194a96bbca4f7c7dc869dc0ba327daa' }))), allowPanel && isOverlay && this.overlayMounted ? (h("div", { class: { overlayRoot: true, visible: this.overlayVisible }, part: "scrim", role: "presentation", onPointerDown: this.onOverlayPointerDown, "aria-hidden": isModalOverlayOpen ? null : 'true' }, h("div", { class: {
527
- overlayPanelWrap: true,
528
- visible: this.overlayVisible,
529
- start: this.side === 'start',
530
- end: this.side === 'end',
531
- }, part: "overlay", ref: el => (this.overlayWrapEl = el), onTransitionEnd: this.onOverlayTransitionEnd, role: "dialog", "aria-modal": "true" }, this.renderPanelInner({ renderPanelSlot: true })))) : null));
532
- }
533
- static get watchers() { return {
534
- "panelWidth": ["onPanelWidthChanged"],
535
- "collapsed": ["onCollapsedChanged"],
536
- "open": ["onOpenChanged"],
537
- "collapseAt": ["onResponsivePropChanged"],
538
- "narrowBehavior": ["onResponsivePropChanged"]
539
- }; }
540
- };
541
- LeSidePanel.style = leSidePanelCss();
542
-
543
- export { LeSidePanel as le_side_panel };
544
- //# sourceMappingURL=le-side-panel.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"le-side-panel.entry.js","sources":["src/components/le-side-panel/le-side-panel.css?tag=le-side-panel&encapsulation=shadow","src/components/le-side-panel/le-side-panel.tsx"],"sourcesContent":[":host {\n display: block;\n height: 100%;\n\n /* Default values */\n --le-side-panel-width: 280px;\n --le-side-panel-margin: 0px;\n --le-side-panel-backdrop: var(--le-color-backdrop);\n --le-side-panel-border-radius: var(--le-radius-lg);\n}\n\n.host {\n position: relative;\n height: 100%;\n min-height: 0;\n}\n\n.layout {\n display: flex;\n align-items: stretch;\n min-width: 0;\n height: 100%;\n min-height: 0;\n}\n\n.layout.start {\n flex-direction: row;\n}\n\n.layout.end {\n flex-direction: row-reverse;\n}\n\n.inlinePanel {\n flex: 0 0 auto;\n width: var(--le-side-panel-width);\n min-width: 0;\n height: 100%;\n overflow: hidden;\n transition: width var(--le-side-panel-transition, var(--le-transition-normal));\n}\n\n.inlinePanel.hidden {\n width: 0;\n}\n\n.inlinePanel .panel {\n transform: translateX(0);\n opacity: 1;\n transition:\n transform var(--le-side-panel-transition, var(--le-transition-normal)),\n opacity var(--le-side-panel-transition, var(--le-transition-normal));\n}\n\n.layout.start .inlinePanel.hidden .panel {\n transform: translateX(-100%);\n opacity: 0;\n pointer-events: none;\n}\n\n.layout.end .inlinePanel.hidden .panel {\n transform: translateX(100%);\n opacity: 0;\n pointer-events: none;\n}\n\n.content {\n flex: 1 1 auto;\n min-width: 0;\n height: 100%;\n min-height: 0;\n}\n\n.panel {\n position: relative;\n height: 100%;\n max-height: min(calc(100% - (var(--le-side-panel-margin) * 2)), calc(100vh - (var(--le-side-panel-margin) * 2)));\n margin: var(--le-side-panel-margin);\n border-radius: var(--le-side-panel-border-radius);\n\n background: var(--le-color-surface, #fff);\n color: var(--le-color-text, #000);\n\n border-right: 1px solid var(--le-color-border, rgba(0, 0, 0, 0.12));\n box-sizing: border-box;\n}\n\n.panel.end {\n border-right: 0;\n border-left: 1px solid var(--le-color-border, rgba(0, 0, 0, 0.12));\n}\n\n.panel-scroller {\n height: 100%;\n overflow: auto;\n}\n\n.close {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 1;\n\n border: 0;\n border-radius: 6px;\n\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\n.handle {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 10px;\n cursor: col-resize;\n}\n\n.handle.start {\n right: -5px;\n}\n\n.handle.end {\n left: -5px;\n}\n\n/* Overlay (contained within component) */\n.overlayRoot {\n position: absolute;\n inset: 0;\n background: var(--le-side-panel-backdrop);\n z-index: var(--le-z-modal-backdrop, 1040);\n\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--le-side-panel-transition, var(--le-transition-normal));\n\n height: 100%;\n}\n\n.overlayRoot.visible {\n opacity: 1;\n pointer-events: auto;\n}\n\n.overlayPanelWrap {\n position: absolute;\n top: 0;\n bottom: 0;\n width: min(100%, var(--le-side-panel-width));\n\n height: 100%;\n\n z-index: var(--le-z-modal, 1050);\n\n display: flex;\n align-items: stretch;\n}\n\n.overlayPanelWrap.start {\n left: 0;\n transform: translateX(-100%);\n}\n\n.overlayPanelWrap.end {\n right: 0;\n transform: translateX(100%);\n}\n\n.overlayPanelWrap.visible.start,\n.overlayPanelWrap.visible.end {\n transform: translateX(0);\n}\n\n.overlayPanelWrap {\n transition: transform var(--le-side-panel-transition, var(--le-transition-normal));\n}\n\n/* Disable transitions while dragging */\n.host[data-resizing='true'] .panel,\n.host[data-resizing='true'] .overlayPanelWrap,\n.host[data-resizing='true'] .inlinePanel {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .overlayPanelWrap,\n .overlayRoot,\n .inlinePanel {\n transition: none;\n }\n}\n","import {\n Build,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\nexport type LeSidePanelSide = 'start' | 'end';\nexport type LeSidePanelNarrowBehavior = 'overlay' | 'push';\nexport type LeSidePanelToggleAction = 'toggle' | 'open' | 'close';\n\nexport type LeSidePanelRequestToggleDetail = {\n panelId?: string;\n action: LeSidePanelToggleAction;\n};\n\ntype PersistedSidePanelState = {\n width?: number;\n collapsed?: boolean;\n};\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction readCssVariablePixels(varName: string): number | undefined {\n if (!Build.isBrowser) {\n return undefined;\n }\n const v = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n if (!v) {\n return undefined;\n }\n const parsed = Number.parseFloat(v);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction parseCollapseAtPx(value?: string): number | undefined {\n if (!value) {\n return undefined;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.startsWith('--')) {\n const fromVar = readCssVariablePixels(trimmed);\n return fromVar;\n }\n\n const numeric = Number.parseFloat(trimmed);\n return Number.isFinite(numeric) ? numeric : undefined;\n}\n\n@Component({\n tag: 'le-side-panel',\n styleUrl: 'le-side-panel.css',\n shadow: true,\n})\nexport class LeSidePanel {\n @Element() el: HTMLElement;\n\n /**\n * Optional id used to match toggle requests.\n * If set, the panel only responds to toggle events with the same `panelId`.\n */\n @Prop() panelId?: string;\n\n /** Which side the panel is attached to. */\n @Prop() side: LeSidePanelSide = 'start';\n\n /** Width breakpoint (in px or a CSS var like `--le-breakpoint-md`) below which the panel enters \"narrow\" mode. */\n @Prop() collapseAt?: string;\n\n /** Behavior when in narrow mode. */\n @Prop() narrowBehavior: LeSidePanelNarrowBehavior = 'overlay';\n\n /**\n * Panel open state for narrow mode.\n * - overlay: controls modal drawer visibility\n * - push: controls whether panel is shown (non-modal)\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /** Panel collapsed state for wide mode (fully hidden). */\n @Prop({ mutable: true, reflect: true }) collapsed: boolean = false;\n\n /** Default panel width in pixels. */\n @Prop() panelWidth: number = 280;\n\n /** Minimum allowed width when resizable. */\n @Prop() minPanelWidth: number = 220;\n\n /** Maximum allowed width when resizable. */\n @Prop() maxPanelWidth: number = 420;\n\n /** Allows users to resize the panel by dragging its edge. */\n @Prop() resizable: boolean = false;\n\n /** When set, panel width + collapsed state are persisted in localStorage. */\n @Prop() persistKey?: string;\n\n /** Show a close button inside the panel (primarily used in narrow overlay mode). */\n @Prop() showCloseButton: boolean = true;\n\n /** When crossing to wide mode, automatically show the panel (collapsed=false). */\n @Prop() autoShowOnWide: boolean = true;\n\n /** When crossing to narrow mode, automatically hide the panel (open=false). */\n @Prop() autoHideOnNarrow: boolean = true;\n\n /** Accessible label for the panel navigation region. */\n @Prop() panelLabel: string = 'Navigation';\n\n @Event({ eventName: 'leSidePanelOpenChange', bubbles: true, composed: true })\n leSidePanelOpenChange: EventEmitter<{ open: boolean; panelId?: string }>;\n\n @Event({ eventName: 'leSidePanelCollapsedChange', bubbles: true, composed: true })\n leSidePanelCollapsedChange: EventEmitter<{ collapsed: boolean; panelId?: string }>;\n\n @Event({ eventName: 'leSidePanelWidthChange', bubbles: true, composed: true })\n leSidePanelWidthChange: EventEmitter<{ width: number; panelId?: string }>;\n\n @State() private isNarrow: boolean = false;\n @State() private responsiveReady: boolean = false;\n @State() private overlayMounted: boolean = false;\n @State() private overlayVisible: boolean = false;\n @State() private currentWidthPx: number;\n @State() private resizing: boolean = false;\n\n private resizeObserver?: ResizeObserver;\n private panelEl?: HTMLElement;\n private overlayWrapEl?: HTMLElement;\n private focusedBeforeOpen?: HTMLElement | null;\n\n private dragPointerId?: number;\n private dragStartX?: number;\n private dragStartWidth?: number;\n\n connectedCallback() {\n this.restorePersistedState();\n this.currentWidthPx = clamp(\n this.currentWidthPx || this.panelWidth,\n this.minPanelWidth,\n this.maxPanelWidth,\n );\n\n if (Build.isBrowser && 'ResizeObserver' in window) {\n this.resizeObserver = new ResizeObserver(() => {\n this.recomputeNarrow();\n });\n this.resizeObserver.observe(this.el);\n }\n\n // Ensure we get at least one post-layout measurement.\n if (Build.isBrowser) {\n requestAnimationFrame(() => this.recomputeNarrow());\n }\n }\n\n componentWillLoad() {\n this.recomputeNarrow();\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.teardownDragListeners();\n }\n\n private isModalOverlayActive(): boolean {\n return this.isNarrow && this.narrowBehavior === 'overlay' && this.open;\n }\n\n private syncOverlayToState() {\n const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';\n if (!shouldUseOverlay) {\n this.overlayVisible = false;\n this.overlayMounted = false;\n return;\n }\n\n if (this.open) {\n if (!this.overlayMounted) {\n this.overlayMounted = true;\n this.overlayVisible = false;\n requestAnimationFrame(() => {\n if (this.isNarrow && this.narrowBehavior === 'overlay' && this.open) {\n this.overlayVisible = true;\n this.focusFirstInsidePanel();\n }\n });\n }\n return;\n }\n\n // Closed: allow unmount to be handled by transition end / fallback timeout.\n this.overlayVisible = false;\n }\n\n @Watch('panelWidth')\n protected onPanelWidthChanged() {\n if (!Number.isFinite(this.panelWidth)) {\n return;\n }\n if (!this.resizing) {\n this.currentWidthPx = clamp(this.panelWidth, this.minPanelWidth, this.maxPanelWidth);\n this.persistState();\n }\n }\n\n @Watch('collapsed')\n protected onCollapsedChanged() {\n this.persistState();\n this.leSidePanelCollapsedChange.emit({ collapsed: this.collapsed, panelId: this.panelId });\n }\n\n @Watch('open')\n protected onOpenChanged(newValue: boolean) {\n const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';\n\n if (!shouldUseOverlay) {\n this.persistState();\n this.leSidePanelOpenChange.emit({ open: this.open, panelId: this.panelId });\n return;\n }\n\n if (newValue) {\n this.focusedBeforeOpen = (document.activeElement as HTMLElement) || null;\n this.overlayMounted = true;\n this.overlayVisible = false;\n requestAnimationFrame(() => {\n this.overlayVisible = true;\n this.focusFirstInsidePanel();\n });\n } else {\n this.overlayVisible = false;\n this.persistState();\n this.restoreFocusAfterClose();\n\n // Fallback: if transitionend doesn't fire, ensure overlay unmounts.\n // (e.g. interrupted transitions or unusual browser behavior)\n window.setTimeout(() => {\n const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';\n if (shouldUseOverlay && !this.open && !this.overlayVisible) {\n this.overlayMounted = false;\n }\n }, 350);\n }\n\n this.leSidePanelOpenChange.emit({ open: this.open, panelId: this.panelId });\n }\n\n @Watch('collapseAt')\n @Watch('narrowBehavior')\n protected onResponsivePropChanged() {\n this.recomputeNarrow();\n }\n\n @Listen('keydown', { target: 'document', capture: true })\n protected onDocumentKeyDown(ev: KeyboardEvent) {\n if (!Build.isBrowser) {\n return;\n }\n if (!this.isModalOverlayActive()) {\n return;\n }\n\n if (ev.key === 'Escape') {\n ev.preventDefault();\n ev.stopPropagation();\n this.open = false;\n return;\n }\n\n if (ev.key !== 'Tab') {\n return;\n }\n\n const panel = this.panelEl;\n if (!panel) {\n return;\n }\n\n const focusables = this.getFocusableElements(panel);\n if (focusables.length === 0) {\n ev.preventDefault();\n try {\n panel.focus();\n } catch {\n // ignore\n }\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (ev.shiftKey) {\n if (!active || active === first || !panel.contains(active)) {\n ev.preventDefault();\n try {\n last.focus();\n } catch {\n // ignore\n }\n }\n } else {\n if (active === last) {\n ev.preventDefault();\n try {\n first.focus();\n } catch {\n // ignore\n }\n }\n }\n }\n\n @Listen('leSidePanelRequestToggle', { target: 'document' })\n protected onToggleRequest(ev: CustomEvent<LeSidePanelRequestToggleDetail>) {\n const detail = ev.detail;\n if (!detail || !detail.action) {\n return;\n }\n\n // panelId matching rules:\n // - If this panel has panelId: respond only when detail.panelId matches.\n // - If this panel has no panelId: respond only when detail.panelId is empty.\n const requestedId = detail.panelId || '';\n const myId = this.panelId || '';\n if (myId !== requestedId) {\n return;\n }\n\n if (this.isNarrow) {\n this.applyActionToOpen(detail.action);\n } else {\n this.applyActionToCollapsed(detail.action);\n }\n }\n\n private applyActionToOpen(action: LeSidePanelToggleAction) {\n if (action === 'open') {\n this.open = true;\n return;\n }\n if (action === 'close') {\n this.open = false;\n return;\n }\n this.open = !this.open;\n }\n\n private applyActionToCollapsed(action: LeSidePanelToggleAction) {\n if (action === 'open') {\n this.collapsed = false;\n return;\n }\n if (action === 'close') {\n this.collapsed = true;\n return;\n }\n this.collapsed = !this.collapsed;\n }\n\n private recomputeNarrow() {\n const collapseAtPx = parseCollapseAtPx(this.collapseAt);\n if (!collapseAtPx) {\n this.isNarrow = false;\n this.responsiveReady = true;\n this.syncOverlayToState();\n return;\n }\n\n const width = this.el.clientWidth;\n\n // If we can't measure yet (common on first paint), don't guess a mode.\n // This prevents a brief \"wide\" flash before ResizeObserver kicks in.\n if (!(width > 0)) {\n this.responsiveReady = false;\n return;\n }\n\n this.responsiveReady = true;\n const nextIsNarrow = width < collapseAtPx;\n\n const prevIsNarrow = this.isNarrow;\n this.isNarrow = nextIsNarrow;\n\n if (prevIsNarrow !== nextIsNarrow) {\n if (nextIsNarrow) {\n if (this.autoHideOnNarrow) {\n this.open = false;\n }\n } else {\n // entering wide mode\n this.open = false;\n this.overlayVisible = false;\n this.overlayMounted = false;\n\n if (this.autoShowOnWide) {\n this.collapsed = false;\n }\n }\n }\n\n this.syncOverlayToState();\n }\n\n private restorePersistedState() {\n if (!Build.isBrowser || !this.persistKey) {\n return;\n }\n try {\n const raw = window.localStorage.getItem(this.persistKey);\n if (!raw) {\n return;\n }\n const parsed = JSON.parse(raw) as PersistedSidePanelState;\n if (typeof parsed.width === 'number' && Number.isFinite(parsed.width)) {\n this.currentWidthPx = parsed.width;\n }\n if (typeof parsed.collapsed === 'boolean') {\n this.collapsed = parsed.collapsed;\n }\n } catch {\n // ignore\n }\n }\n\n private persistState() {\n if (!Build.isBrowser || !this.persistKey) {\n return;\n }\n const payload: PersistedSidePanelState = {\n width: this.currentWidthPx,\n collapsed: this.collapsed,\n };\n try {\n window.localStorage.setItem(this.persistKey, JSON.stringify(payload));\n } catch {\n // ignore\n }\n }\n\n private focusFirstInsidePanel() {\n if (!Build.isBrowser) {\n return;\n }\n\n const root = this.panelEl;\n if (!root) {\n return;\n }\n\n const candidates = this.getFocusableElements(root);\n for (const el of candidates) {\n if (el.hasAttribute('disabled')) {\n continue;\n }\n const tabindex = el.getAttribute('tabindex');\n if (tabindex === '-1') {\n continue;\n }\n try {\n el.focus();\n return;\n } catch {\n // ignore\n }\n }\n }\n\n private getFocusableElements(root: HTMLElement): HTMLElement[] {\n const selector = 'button,[href],input,select,textarea,[tabindex]:not([tabindex=\"-1\"])';\n const all = Array.from(root.querySelectorAll<HTMLElement>(selector));\n return all.filter(el => {\n if (el.hasAttribute('disabled')) {\n return false;\n }\n const tabindex = el.getAttribute('tabindex');\n if (tabindex === '-1') {\n return false;\n }\n return true;\n });\n }\n\n private restoreFocusAfterClose() {\n if (!Build.isBrowser) {\n return;\n }\n const prev = this.focusedBeforeOpen;\n this.focusedBeforeOpen = null;\n if (prev && document.contains(prev)) {\n try {\n prev.focus();\n } catch {\n // ignore\n }\n }\n }\n\n private onOverlayTransitionEnd = (ev: TransitionEvent) => {\n if (ev.target !== this.overlayWrapEl) {\n return;\n }\n if (ev.propertyName !== 'transform') {\n return;\n }\n\n const shouldUseOverlay = this.isNarrow && this.narrowBehavior === 'overlay';\n if (!shouldUseOverlay) {\n return;\n }\n\n if (!this.open && !this.overlayVisible) {\n this.overlayMounted = false;\n }\n };\n\n private onOverlayPointerDown = (ev: PointerEvent) => {\n // Close on any click outside the panel.\n const panel = this.panelEl;\n if (!panel) {\n return;\n }\n const path = ev.composedPath();\n if (!path.includes(panel)) {\n this.open = false;\n }\n };\n\n private startResizeDrag = (ev: PointerEvent) => {\n if (!this.resizable) {\n return;\n }\n // No resizing if fully hidden.\n if (!this.isNarrow && this.collapsed) {\n return;\n }\n if (this.isNarrow && this.narrowBehavior === 'overlay' && !this.open) {\n return;\n }\n if (this.isNarrow && this.narrowBehavior === 'push' && !this.open) {\n return;\n }\n\n this.resizing = true;\n this.dragPointerId = ev.pointerId;\n this.dragStartX = ev.clientX;\n this.dragStartWidth = this.currentWidthPx;\n\n (ev.currentTarget as HTMLElement)?.setPointerCapture?.(ev.pointerId);\n\n window.addEventListener('pointermove', this.onResizeDragMove, { passive: false });\n window.addEventListener('pointerup', this.onResizeDragEnd, { passive: true });\n window.addEventListener('pointercancel', this.onResizeDragEnd, { passive: true });\n };\n\n private onResizeDragMove = (ev: PointerEvent) => {\n if (!this.resizing || this.dragPointerId !== ev.pointerId) {\n return;\n }\n ev.preventDefault();\n\n const startX = this.dragStartX ?? ev.clientX;\n const startWidth = this.dragStartWidth ?? this.currentWidthPx;\n\n const delta = ev.clientX - startX;\n const dir = this.side === 'start' ? 1 : -1;\n const nextWidth = clamp(startWidth + delta * dir, this.minPanelWidth, this.maxPanelWidth);\n this.currentWidthPx = nextWidth;\n this.leSidePanelWidthChange.emit({ width: this.currentWidthPx, panelId: this.panelId });\n };\n\n private onResizeDragEnd = (ev: PointerEvent) => {\n if (!this.resizing || this.dragPointerId !== ev.pointerId) {\n return;\n }\n\n this.resizing = false;\n this.dragPointerId = undefined;\n this.dragStartX = undefined;\n this.dragStartWidth = undefined;\n\n this.teardownDragListeners();\n this.persistState();\n this.leSidePanelWidthChange.emit({ width: this.currentWidthPx, panelId: this.panelId });\n };\n\n private teardownDragListeners() {\n window.removeEventListener('pointermove', this.onResizeDragMove as any);\n window.removeEventListener('pointerup', this.onResizeDragEnd as any);\n window.removeEventListener('pointercancel', this.onResizeDragEnd as any);\n }\n\n private renderPanelInner(opts?: { renderPanelSlot?: boolean }) {\n const renderPanelSlot = opts?.renderPanelSlot ?? true;\n const showClose = this.showCloseButton && this.isNarrow && this.narrowBehavior === 'overlay';\n const tabIndex = this.isNarrow && this.narrowBehavior === 'overlay' ? -1 : null;\n\n return (\n <div\n class={{\n panel: true,\n start: this.side === 'start',\n end: this.side === 'end',\n resizing: this.resizing,\n }}\n part=\"panel\"\n ref={el => (this.panelEl = el as HTMLElement)}\n role=\"navigation\"\n aria-label={this.panelLabel}\n tabindex={tabIndex as any}\n >\n {showClose ? (\n <le-side-panel-toggle\n panel-id=\"demo-side\"\n action=\"toggle\"\n shortcut=\"Mod+B\"\n variant=\"clear\"\n class=\"close\"\n part=\"close-button\"\n aria-label=\"Close panel\"\n icon-only=\"true\"\n style={{\n '--le-button-icon-only-padding': 'var(--le-space-sm)',\n }}\n onClick={() => (this.open = false)}\n >\n <slot name=\"close-icon\" slot=\"icon-only\">\n <le-icon name=\"side-panel\" />\n </slot>\n </le-side-panel-toggle>\n ) : null}\n\n <div class=\"panel-scroller\" part=\"panel-scroller\">\n {renderPanelSlot ? <slot name=\"panel\" /> : null}\n </div>\n\n {this.resizable ? (\n <div\n class={{\n handle: true,\n start: this.side === 'start',\n end: this.side === 'end',\n }}\n part=\"resize-handle\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex={-1}\n onPointerDown={this.startResizeDrag}\n />\n ) : null}\n </div>\n );\n }\n\n render() {\n const widthStyle = {\n '--le-side-panel-width': `${this.currentWidthPx}px`,\n };\n\n const isOverlay = this.isNarrow && this.narrowBehavior === 'overlay';\n const isModalOverlayOpen = isOverlay && this.open;\n\n const allowPanel = this.responsiveReady;\n\n const showWidePanel = allowPanel && !this.isNarrow && !this.collapsed;\n const showNarrowPushPanel =\n allowPanel && this.isNarrow && this.narrowBehavior === 'push' && this.open;\n\n const layoutHasInlinePanel = showWidePanel || showNarrowPushPanel;\n\n return (\n <div\n class={{\n host: true,\n narrow: this.isNarrow,\n wide: !this.isNarrow,\n overlay: isOverlay,\n push: !isOverlay,\n collapsed: !this.isNarrow && this.collapsed,\n }}\n style={widthStyle as any}\n data-resizing={this.resizing ? 'true' : null}\n >\n {/* Wide + narrow push layout */}\n <div\n class={{\n 'layout': true,\n 'has-panel': layoutHasInlinePanel,\n 'start': this.side === 'start',\n 'end': this.side === 'end',\n }}\n >\n <div\n class={{\n inlinePanel: true,\n hidden: !layoutHasInlinePanel,\n }}\n aria-hidden={!layoutHasInlinePanel ? 'true' : null}\n >\n {/* In narrow overlay mode, only the overlay should own the named slot. */}\n {this.renderPanelInner({ renderPanelSlot: !isOverlay })}\n </div>\n\n <div class=\"content\" part=\"content\" aria-hidden={isModalOverlayOpen ? 'true' : null}>\n <slot />\n </div>\n </div>\n\n {/* Narrow overlay modal (contained within this component) */}\n {allowPanel && isOverlay && this.overlayMounted ? (\n <div\n class={{ overlayRoot: true, visible: this.overlayVisible }}\n part=\"scrim\"\n role=\"presentation\"\n onPointerDown={this.onOverlayPointerDown}\n aria-hidden={isModalOverlayOpen ? null : 'true'}\n >\n <div\n class={{\n overlayPanelWrap: true,\n visible: this.overlayVisible,\n start: this.side === 'start',\n end: this.side === 'end',\n }}\n part=\"overlay\"\n ref={el => (this.overlayWrapEl = el as HTMLElement)}\n onTransitionEnd={this.onOverlayTransitionEnd}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {this.renderPanelInner({ renderPanelSlot: true })}\n </div>\n </div>\n ) : null}\n </div>\n );\n }\n}\n"],"names":[],"mappings":"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"}