le-kit 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/dist/{core/cjs/index-B0mg71He.js → cjs/index-C3iQZ-Ja.js} +10 -3
  2. package/dist/cjs/index-C3iQZ-Ja.js.map +1 -0
  3. package/dist/{core/cjs → cjs}/index.cjs.js +4 -3
  4. package/dist/cjs/index.cjs.js.map +1 -0
  5. package/dist/{core/cjs → cjs}/le-box.cjs.entry.js +3 -3
  6. package/dist/cjs/le-box.entry.cjs.js.map +1 -0
  7. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-popup.le-slot.le-string-input.entry.cjs.js.map +1 -0
  8. package/dist/cjs/le-button_7.cjs.entry.js +1452 -0
  9. package/dist/cjs/le-card.cjs.entry.js +29 -0
  10. package/dist/cjs/le-card.entry.cjs.js.map +1 -0
  11. package/dist/cjs/le-combobox.cjs.entry.js +237 -0
  12. package/dist/cjs/le-combobox.entry.cjs.js.map +1 -0
  13. package/dist/cjs/le-dropdown-base.cjs.entry.js +348 -0
  14. package/dist/cjs/le-dropdown-base.entry.cjs.js.map +1 -0
  15. package/dist/cjs/le-kit.cjs.js +25 -0
  16. package/dist/cjs/le-multiselect.cjs.entry.js +306 -0
  17. package/dist/cjs/le-multiselect.entry.cjs.js.map +1 -0
  18. package/dist/{core/cjs → cjs}/le-number-input.cjs.entry.js +3 -3
  19. package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
  20. package/dist/{core/cjs → cjs}/le-round-progress.cjs.entry.js +2 -2
  21. package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
  22. package/dist/cjs/le-segmented-control.cjs.entry.js +245 -0
  23. package/dist/cjs/le-segmented-control.entry.cjs.js.map +1 -0
  24. package/dist/cjs/le-select.cjs.entry.js +188 -0
  25. package/dist/cjs/le-select.entry.cjs.js.map +1 -0
  26. package/dist/{core/cjs → cjs}/le-stack.cjs.entry.js +4 -4
  27. package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
  28. package/dist/cjs/le-tab-bar.cjs.entry.js +242 -0
  29. package/dist/cjs/le-tab-bar.entry.cjs.js.map +1 -0
  30. package/dist/cjs/le-tab-panel.cjs.entry.js +100 -0
  31. package/dist/cjs/le-tab-panel.entry.cjs.js.map +1 -0
  32. package/dist/cjs/le-tab.cjs.entry.js +133 -0
  33. package/dist/cjs/le-tab.entry.cjs.js.map +1 -0
  34. package/dist/cjs/le-tabs.cjs.entry.js +307 -0
  35. package/dist/cjs/le-tabs.entry.cjs.js.map +1 -0
  36. package/dist/cjs/le-tag.cjs.entry.js +68 -0
  37. package/dist/cjs/le-tag.entry.cjs.js.map +1 -0
  38. package/dist/{core/cjs → cjs}/le-text.cjs.entry.js +3 -3
  39. package/dist/cjs/le-text.entry.cjs.js.map +1 -0
  40. package/dist/{core/cjs → cjs}/le-turntable.cjs.entry.js +2 -2
  41. package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
  42. package/dist/cjs/loader.cjs.js +13 -0
  43. package/dist/{core/cjs/utils-jdqP71LP.js → cjs/utils-DjPcLPN9.js} +3 -3
  44. package/dist/cjs/utils-DjPcLPN9.js.map +1 -0
  45. package/dist/{core/collection → collection}/collection-manifest.json +12 -0
  46. package/dist/{core/collection → collection}/components/le-box/le-box.js +1 -1
  47. package/dist/collection/components/le-box/le-box.js.map +1 -0
  48. package/dist/{core/collection/components/le-button/le-button.default.css → collection/components/le-button/le-button.css} +65 -38
  49. package/dist/{core/collection → collection}/components/le-button/le-button.js +106 -16
  50. package/dist/collection/components/le-button/le-button.js.map +1 -0
  51. package/dist/{core/collection → collection}/components/le-card/le-card.default.css +6 -6
  52. package/dist/{core/collection → collection}/components/le-card/le-card.js +2 -2
  53. package/dist/collection/components/le-card/le-card.js.map +1 -0
  54. package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.js +2 -2
  55. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  56. package/dist/collection/components/le-combobox/le-combobox.css +144 -0
  57. package/dist/collection/components/le-combobox/le-combobox.js +659 -0
  58. package/dist/collection/components/le-combobox/le-combobox.js.map +1 -0
  59. package/dist/collection/components/le-component/le-component.css +189 -0
  60. package/dist/{le-kit/le-component.entry.js → collection/components/le-component/le-component.js} +136 -16
  61. package/dist/collection/components/le-component/le-component.js.map +1 -0
  62. package/dist/collection/components/le-dropdown-base/le-dropdown-base.css +163 -0
  63. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +761 -0
  64. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -0
  65. package/dist/collection/components/le-multiselect/le-multiselect.css +163 -0
  66. package/dist/collection/components/le-multiselect/le-multiselect.js +734 -0
  67. package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -0
  68. package/dist/{core/collection → collection}/components/le-number-input/le-number-input.js +2 -2
  69. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
  70. package/dist/{core/collection → collection}/components/le-popover/le-popover.css +10 -0
  71. package/dist/{core/collection → collection}/components/le-popover/le-popover.js +61 -10
  72. package/dist/collection/components/le-popover/le-popover.js.map +1 -0
  73. package/dist/{core/collection → collection}/components/le-popup/le-popup.api.js +2 -1
  74. package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
  75. package/dist/{core/collection → collection}/components/le-popup/le-popup.js +49 -19
  76. package/dist/collection/components/le-popup/le-popup.js.map +1 -0
  77. package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.js +1 -1
  78. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  79. package/dist/collection/components/le-segmented-control/le-segmented-control.css +78 -0
  80. package/dist/collection/components/le-segmented-control/le-segmented-control.js +445 -0
  81. package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -0
  82. package/dist/collection/components/le-select/le-select.css +121 -0
  83. package/dist/collection/components/le-select/le-select.js +578 -0
  84. package/dist/collection/components/le-select/le-select.js.map +1 -0
  85. package/dist/collection/components/le-slot/le-slot.default.css +222 -0
  86. package/dist/{le-kit/le-slot.entry.js → collection/components/le-slot/le-slot.js} +268 -17
  87. package/dist/collection/components/le-slot/le-slot.js.map +1 -0
  88. package/dist/{core/collection → collection}/components/le-stack/le-stack.js +2 -2
  89. package/dist/collection/components/le-stack/le-stack.js.map +1 -0
  90. package/dist/{core/collection → collection}/components/le-string-input/le-string-input.css +1 -1
  91. package/dist/{core/collection → collection}/components/le-string-input/le-string-input.js +60 -6
  92. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
  93. package/dist/collection/components/le-tab/le-tab.css +289 -0
  94. package/dist/collection/components/le-tab/le-tab.js +565 -0
  95. package/dist/collection/components/le-tab/le-tab.js.map +1 -0
  96. package/dist/collection/components/le-tab-bar/le-tab-bar.css +89 -0
  97. package/dist/collection/components/le-tab-bar/le-tab-bar.js +467 -0
  98. package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -0
  99. package/dist/collection/components/le-tab-panel/le-tab-panel.css +30 -0
  100. package/dist/collection/components/le-tab-panel/le-tab-panel.js +302 -0
  101. package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -0
  102. package/dist/collection/components/le-tabs/le-tabs.css +146 -0
  103. package/dist/collection/components/le-tabs/le-tabs.js +588 -0
  104. package/dist/collection/components/le-tabs/le-tabs.js.map +1 -0
  105. package/dist/collection/components/le-tag/le-tag.css +139 -0
  106. package/dist/collection/components/le-tag/le-tag.js +266 -0
  107. package/dist/collection/components/le-tag/le-tag.js.map +1 -0
  108. package/dist/{core/collection → collection}/components/le-text/le-text.js +1 -1
  109. package/dist/collection/components/le-text/le-text.js.map +1 -0
  110. package/dist/{core/collection → collection}/components/le-turntable/le-turntable.js +1 -1
  111. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
  112. package/dist/collection/dist/components/assets/.gitkeep +1 -0
  113. package/dist/{le-kit → collection/dist/components}/assets/custom-elements.json +5064 -1199
  114. package/dist/collection/dist/components/themes/base.css +133 -0
  115. package/dist/collection/dist/components/themes/dark.css +103 -0
  116. package/dist/collection/dist/components/themes/default.css +111 -0
  117. package/dist/collection/dist/components/themes/gradient.css +103 -0
  118. package/dist/collection/dist/components/themes/index.css +415 -0
  119. package/dist/collection/dist/components/themes/minimal.css +103 -0
  120. package/dist/collection/dist/components/themes/warm.css +103 -0
  121. package/dist/collection/global/app.js.map +1 -0
  122. package/dist/collection/index.js.map +1 -0
  123. package/dist/collection/types/blocks.js.map +1 -0
  124. package/dist/collection/types/options.js.map +1 -0
  125. package/dist/collection/utils/utils.js.map +1 -0
  126. package/dist/components/assets/.gitkeep +1 -0
  127. package/dist/components/assets/custom-elements.json +8170 -0
  128. package/dist/components/index.js +11 -0
  129. package/dist/components/index.js.map +1 -0
  130. package/dist/{core/components → components}/le-box.js +11 -6
  131. package/dist/components/le-box.js.map +1 -0
  132. package/dist/{core/components → components}/le-button.js +1 -1
  133. package/dist/{core/components → components}/le-button2.js +371 -35
  134. package/dist/components/le-button2.js.map +1 -0
  135. package/dist/{core/components → components}/le-card.js +11 -6
  136. package/dist/components/le-card.js.map +1 -0
  137. package/dist/{core/components → components}/le-checkbox.js +1 -1
  138. package/dist/components/le-combobox.d.ts +11 -0
  139. package/dist/components/le-combobox.js +321 -0
  140. package/dist/components/le-combobox.js.map +1 -0
  141. package/dist/{core/components → components}/le-component.js +1 -1
  142. package/dist/components/le-dropdown-base.d.ts +11 -0
  143. package/dist/components/le-dropdown-base.js +9 -0
  144. package/dist/components/le-dropdown-base.js.map +1 -0
  145. package/dist/components/le-dropdown-base2.js +393 -0
  146. package/dist/components/le-dropdown-base2.js.map +1 -0
  147. package/dist/components/le-multiselect.d.ts +11 -0
  148. package/dist/components/le-multiselect.js +400 -0
  149. package/dist/components/le-multiselect.js.map +1 -0
  150. package/dist/{core/components → components}/le-number-input.js +12 -7
  151. package/dist/components/le-number-input.js.map +1 -0
  152. package/dist/{core/components → components}/le-popover2.js +24 -11
  153. package/dist/components/le-popover2.js.map +1 -0
  154. package/dist/{core/components/index.js → components/le-popup.api.js} +5 -12
  155. package/dist/components/le-popup.api.js.map +1 -0
  156. package/dist/components/le-popup.js +9 -0
  157. package/dist/components/le-popup.js.map +1 -0
  158. package/dist/{core/components → components}/le-round-progress.js +1 -1
  159. package/dist/components/le-segmented-control.d.ts +11 -0
  160. package/dist/components/le-segmented-control.js +320 -0
  161. package/dist/components/le-segmented-control.js.map +1 -0
  162. package/dist/components/le-select.d.ts +11 -0
  163. package/dist/components/le-select.js +271 -0
  164. package/dist/components/le-select.js.map +1 -0
  165. package/dist/{core/components → components}/le-slot.js +1 -1
  166. package/dist/{core/components → components}/le-stack.js +12 -7
  167. package/dist/components/le-stack.js.map +1 -0
  168. package/dist/{core/components → components}/le-string-input.js +1 -1
  169. package/dist/components/le-tab-bar.d.ts +11 -0
  170. package/dist/components/le-tab-bar.js +319 -0
  171. package/dist/components/le-tab-bar.js.map +1 -0
  172. package/dist/components/le-tab-panel.d.ts +11 -0
  173. package/dist/components/le-tab-panel.js +171 -0
  174. package/dist/components/le-tab-panel.js.map +1 -0
  175. package/dist/components/le-tab.d.ts +11 -0
  176. package/dist/components/le-tab.js +9 -0
  177. package/dist/components/le-tab.js.map +1 -0
  178. package/dist/components/le-tab2.js +206 -0
  179. package/dist/components/le-tab2.js.map +1 -0
  180. package/dist/components/le-tabs.d.ts +11 -0
  181. package/dist/components/le-tabs.js +386 -0
  182. package/dist/components/le-tabs.js.map +1 -0
  183. package/dist/components/le-tag.d.ts +11 -0
  184. package/dist/components/le-tag.js +9 -0
  185. package/dist/components/le-tag.js.map +1 -0
  186. package/dist/components/le-tag2.js +130 -0
  187. package/dist/components/le-tag2.js.map +1 -0
  188. package/dist/{core/components → components}/le-text.js +11 -6
  189. package/dist/components/le-text.js.map +1 -0
  190. package/dist/{core/components → components}/le-turntable.js +1 -1
  191. package/dist/components/themes/base.css +44 -0
  192. package/dist/components/themes/dark.css +4 -1
  193. package/dist/components/themes/default.css +4 -1
  194. package/dist/components/themes/gradient.css +4 -1
  195. package/dist/components/themes/index.css +2 -0
  196. package/dist/components/themes/minimal.css +4 -1
  197. package/dist/components/themes/warm.css +4 -1
  198. package/dist/docs.d.ts +443 -0
  199. package/dist/docs.json +10488 -0
  200. package/dist/{core/esm/index-SKsXnjWI.js → esm/index-DzgCnDLJ.js} +10 -4
  201. package/dist/esm/index-DzgCnDLJ.js.map +1 -0
  202. package/dist/{core/esm → esm}/index.js +4 -3
  203. package/dist/esm/index.js.map +1 -0
  204. package/dist/{le-kit → esm}/le-box.entry.js +3 -3
  205. package/dist/esm/le-box.entry.js.map +1 -0
  206. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-popup.le-slot.le-string-input.entry.js.map +1 -0
  207. package/dist/esm/le-button_7.entry.js +1444 -0
  208. package/dist/{le-kit → esm}/le-card.entry.js +3 -3
  209. package/dist/esm/le-card.entry.js.map +1 -0
  210. package/dist/esm/le-combobox.entry.js +235 -0
  211. package/dist/esm/le-combobox.entry.js.map +1 -0
  212. package/dist/esm/le-dropdown-base.entry.js +346 -0
  213. package/dist/esm/le-dropdown-base.entry.js.map +1 -0
  214. package/dist/esm/le-kit.js +21 -0
  215. package/dist/esm/le-multiselect.entry.js +304 -0
  216. package/dist/esm/le-multiselect.entry.js.map +1 -0
  217. package/dist/{le-kit → esm}/le-number-input.entry.js +6 -6
  218. package/dist/esm/le-number-input.entry.js.map +1 -0
  219. package/dist/{core/esm → esm}/le-round-progress.entry.js +2 -2
  220. package/dist/esm/le-round-progress.entry.js.map +1 -0
  221. package/dist/esm/le-segmented-control.entry.js +243 -0
  222. package/dist/esm/le-segmented-control.entry.js.map +1 -0
  223. package/dist/esm/le-select.entry.js +186 -0
  224. package/dist/esm/le-select.entry.js.map +1 -0
  225. package/dist/{le-kit → esm}/le-stack.entry.js +4 -4
  226. package/dist/esm/le-stack.entry.js.map +1 -0
  227. package/dist/esm/le-tab-bar.entry.js +240 -0
  228. package/dist/esm/le-tab-bar.entry.js.map +1 -0
  229. package/dist/esm/le-tab-panel.entry.js +98 -0
  230. package/dist/esm/le-tab-panel.entry.js.map +1 -0
  231. package/dist/esm/le-tab.entry.js +131 -0
  232. package/dist/esm/le-tab.entry.js.map +1 -0
  233. package/dist/esm/le-tabs.entry.js +305 -0
  234. package/dist/esm/le-tabs.entry.js.map +1 -0
  235. package/dist/esm/le-tag.entry.js +66 -0
  236. package/dist/esm/le-tag.entry.js.map +1 -0
  237. package/dist/{le-kit → esm}/le-text.entry.js +3 -3
  238. package/dist/esm/le-text.entry.js.map +1 -0
  239. package/dist/{core/esm → esm}/le-turntable.entry.js +2 -2
  240. package/dist/esm/le-turntable.entry.js.map +1 -0
  241. package/dist/esm/loader.js +11 -0
  242. package/dist/{le-kit/utils-cwSNy7ZS.js → esm/utils-Dp5xFMCl.js} +3 -3
  243. package/dist/{le-kit/utils-cwSNy7ZS.js.map → esm/utils-Dp5xFMCl.js.map} +1 -1
  244. package/dist/le-kit/dist/components/assets/.gitkeep +1 -0
  245. package/dist/le-kit/dist/components/assets/custom-elements.json +8170 -0
  246. package/dist/le-kit/dist/components/themes/base.css +44 -0
  247. package/dist/le-kit/dist/components/themes/dark.css +4 -1
  248. package/dist/le-kit/dist/components/themes/default.css +4 -1
  249. package/dist/le-kit/dist/components/themes/gradient.css +4 -1
  250. package/dist/le-kit/dist/components/themes/index.css +2 -0
  251. package/dist/le-kit/dist/components/themes/minimal.css +4 -1
  252. package/dist/le-kit/dist/components/themes/warm.css +4 -1
  253. package/dist/le-kit/index.esm.js +2 -116
  254. package/dist/le-kit/index.esm.js.map +1 -1
  255. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-popup.le-slot.le-string-input.entry.esm.js.map +1 -0
  256. package/dist/le-kit/le-combobox.entry.esm.js.map +1 -0
  257. package/dist/le-kit/le-dropdown-base.entry.esm.js.map +1 -0
  258. package/dist/le-kit/le-kit.css +1 -1010
  259. package/dist/le-kit/le-kit.esm.js +2 -48
  260. package/dist/le-kit/le-kit.esm.js.map +1 -1
  261. package/dist/le-kit/le-multiselect.entry.esm.js.map +1 -0
  262. package/dist/le-kit/le-segmented-control.entry.esm.js.map +1 -0
  263. package/dist/le-kit/le-select.entry.esm.js.map +1 -0
  264. package/dist/le-kit/le-tab-bar.entry.esm.js.map +1 -0
  265. package/dist/le-kit/le-tab-panel.entry.esm.js.map +1 -0
  266. package/dist/le-kit/le-tab.entry.esm.js.map +1 -0
  267. package/dist/le-kit/le-tabs.entry.esm.js.map +1 -0
  268. package/dist/le-kit/le-tag.entry.esm.js.map +1 -0
  269. package/dist/{core/le-kit/p-55f70091.entry.js → le-kit/p-0bd7803f.entry.js} +2 -2
  270. package/dist/le-kit/p-0bd7803f.entry.js.map +1 -0
  271. package/dist/le-kit/p-1f55a4a2.entry.js +2 -0
  272. package/dist/le-kit/p-1f55a4a2.entry.js.map +1 -0
  273. package/dist/{core/le-kit/p-a9d05ef6.entry.js → le-kit/p-2c37f174.entry.js} +2 -2
  274. package/dist/le-kit/p-2c37f174.entry.js.map +1 -0
  275. package/dist/{core/le-kit/p-6e414a5c.entry.js → le-kit/p-33612923.entry.js} +2 -2
  276. package/dist/le-kit/p-33612923.entry.js.map +1 -0
  277. package/dist/le-kit/p-3a52c4de.entry.js +2 -0
  278. package/dist/le-kit/p-3a52c4de.entry.js.map +1 -0
  279. package/dist/le-kit/p-4130c60b.entry.js +2 -0
  280. package/dist/le-kit/p-4130c60b.entry.js.map +1 -0
  281. package/dist/le-kit/p-432e8231.entry.js +2 -0
  282. package/dist/le-kit/p-432e8231.entry.js.map +1 -0
  283. package/dist/le-kit/p-548d130b.entry.js +2 -0
  284. package/dist/le-kit/p-548d130b.entry.js.map +1 -0
  285. package/dist/le-kit/p-6ecdad85.entry.js +2 -0
  286. package/dist/le-kit/p-6ecdad85.entry.js.map +1 -0
  287. package/dist/le-kit/p-6ee06c44.entry.js +2 -0
  288. package/dist/le-kit/p-6ee06c44.entry.js.map +1 -0
  289. package/dist/le-kit/p-71c78784.entry.js +2 -0
  290. package/dist/le-kit/p-71c78784.entry.js.map +1 -0
  291. package/dist/le-kit/p-7b180d58.entry.js +2 -0
  292. package/dist/le-kit/p-7b180d58.entry.js.map +1 -0
  293. package/dist/le-kit/p-91993261.entry.js +2 -0
  294. package/dist/le-kit/p-91993261.entry.js.map +1 -0
  295. package/dist/{core/le-kit/p--VxUdzYV.js → le-kit/p-DaA5gINj.js} +2 -2
  296. package/dist/le-kit/p-DaA5gINj.js.map +1 -0
  297. package/dist/le-kit/p-DzgCnDLJ.js +3 -0
  298. package/dist/le-kit/p-DzgCnDLJ.js.map +1 -0
  299. package/dist/le-kit/p-a5d31d40.entry.js +2 -0
  300. package/dist/le-kit/p-a5d31d40.entry.js.map +1 -0
  301. package/dist/{core/le-kit/p-4f133e72.entry.js → le-kit/p-b66fd9e1.entry.js} +2 -2
  302. package/dist/le-kit/p-b66fd9e1.entry.js.map +1 -0
  303. package/dist/le-kit/p-beb87e61.entry.js +2 -0
  304. package/dist/le-kit/p-beb87e61.entry.js.map +1 -0
  305. package/dist/le-kit/p-cc0797b0.entry.js +2 -0
  306. package/dist/le-kit/p-cc0797b0.entry.js.map +1 -0
  307. package/dist/le-kit/p-d504a369.entry.js +2 -0
  308. package/dist/le-kit/p-d504a369.entry.js.map +1 -0
  309. package/dist/themes/base.css +133 -0
  310. package/dist/themes/dark.css +103 -0
  311. package/dist/themes/default.css +111 -0
  312. package/dist/themes/gradient.css +103 -0
  313. package/dist/themes/index.css +415 -0
  314. package/dist/themes/minimal.css +103 -0
  315. package/dist/themes/warm.css +103 -0
  316. package/dist/types/components/le-button/le-button.d.ts +19 -4
  317. package/dist/types/components/le-combobox/le-combobox.d.ts +128 -0
  318. package/dist/types/components/le-dropdown-base/le-dropdown-base.d.ts +118 -0
  319. package/dist/types/components/le-multiselect/le-multiselect.d.ts +143 -0
  320. package/dist/types/components/le-popover/le-popover.d.ts +13 -2
  321. package/dist/types/components/le-popup/le-popup.d.ts +5 -0
  322. package/dist/types/components/le-segmented-control/le-segmented-control.d.ts +82 -0
  323. package/dist/types/components/le-select/le-select.d.ts +125 -0
  324. package/dist/types/components/le-string-input/le-string-input.d.ts +8 -0
  325. package/dist/types/components/le-tab/le-tab.d.ts +116 -0
  326. package/dist/types/components/le-tab-bar/le-tab-bar.d.ts +88 -0
  327. package/dist/types/components/le-tab-panel/le-tab-panel.d.ts +75 -0
  328. package/dist/types/components/le-tabs/le-tabs.d.ts +108 -0
  329. package/dist/types/components/le-tag/le-tag.d.ts +78 -0
  330. package/dist/types/components.d.ts +2310 -40
  331. package/dist/types/types/options.d.ts +9 -0
  332. package/package.json +3 -18
  333. package/dist/core/cjs/index-B0mg71He.js.map +0 -1
  334. package/dist/core/cjs/index.cjs.js.map +0 -1
  335. package/dist/core/cjs/le-box.entry.cjs.js.map +0 -1
  336. package/dist/core/cjs/le-button.cjs.entry.js +0 -92
  337. package/dist/core/cjs/le-button.entry.cjs.js.map +0 -1
  338. package/dist/core/cjs/le-card.cjs.entry.js +0 -29
  339. package/dist/core/cjs/le-card.entry.cjs.js.map +0 -1
  340. package/dist/core/cjs/le-checkbox.cjs.entry.js +0 -61
  341. package/dist/core/cjs/le-checkbox.entry.cjs.js.map +0 -1
  342. package/dist/core/cjs/le-kit.cjs.js +0 -25
  343. package/dist/core/cjs/le-number-input.entry.cjs.js.map +0 -1
  344. package/dist/core/cjs/le-popover.cjs.entry.js +0 -348
  345. package/dist/core/cjs/le-popover.entry.cjs.js.map +0 -1
  346. package/dist/core/cjs/le-popup.cjs.entry.js +0 -212
  347. package/dist/core/cjs/le-popup.entry.cjs.js.map +0 -1
  348. package/dist/core/cjs/le-round-progress.entry.cjs.js.map +0 -1
  349. package/dist/core/cjs/le-stack.entry.cjs.js.map +0 -1
  350. package/dist/core/cjs/le-string-input.cjs.entry.js +0 -95
  351. package/dist/core/cjs/le-string-input.entry.cjs.js.map +0 -1
  352. package/dist/core/cjs/le-text.entry.cjs.js.map +0 -1
  353. package/dist/core/cjs/le-turntable.entry.cjs.js.map +0 -1
  354. package/dist/core/cjs/loader.cjs.js +0 -13
  355. package/dist/core/cjs/utils-jdqP71LP.js.map +0 -1
  356. package/dist/core/collection/components/le-box/le-box.js.map +0 -1
  357. package/dist/core/collection/components/le-button/le-button.js.map +0 -1
  358. package/dist/core/collection/components/le-card/le-card.js.map +0 -1
  359. package/dist/core/collection/components/le-checkbox/le-checkbox.js.map +0 -1
  360. package/dist/core/collection/components/le-number-input/le-number-input.js.map +0 -1
  361. package/dist/core/collection/components/le-popover/le-popover.js.map +0 -1
  362. package/dist/core/collection/components/le-popup/le-popup.api.js.map +0 -1
  363. package/dist/core/collection/components/le-popup/le-popup.js.map +0 -1
  364. package/dist/core/collection/components/le-round-progress/le-round-progress.js.map +0 -1
  365. package/dist/core/collection/components/le-stack/le-stack.js.map +0 -1
  366. package/dist/core/collection/components/le-string-input/le-string-input.js.map +0 -1
  367. package/dist/core/collection/components/le-text/le-text.js.map +0 -1
  368. package/dist/core/collection/components/le-turntable/le-turntable.js.map +0 -1
  369. package/dist/core/collection/global/app.js.map +0 -1
  370. package/dist/core/collection/index.js.map +0 -1
  371. package/dist/core/collection/types/blocks.js.map +0 -1
  372. package/dist/core/collection/types/options.js.map +0 -1
  373. package/dist/core/collection/utils/utils.js.map +0 -1
  374. package/dist/core/components/index.d.ts +0 -33
  375. package/dist/core/components/index.js.map +0 -1
  376. package/dist/core/components/le-box.d.ts +0 -11
  377. package/dist/core/components/le-box.js.map +0 -1
  378. package/dist/core/components/le-button.d.ts +0 -11
  379. package/dist/core/components/le-button2.js.map +0 -1
  380. package/dist/core/components/le-card.d.ts +0 -11
  381. package/dist/core/components/le-card.js.map +0 -1
  382. package/dist/core/components/le-checkbox.d.ts +0 -11
  383. package/dist/core/components/le-component.d.ts +0 -11
  384. package/dist/core/components/le-number-input.d.ts +0 -11
  385. package/dist/core/components/le-number-input.js.map +0 -1
  386. package/dist/core/components/le-popover.d.ts +0 -11
  387. package/dist/core/components/le-popover2.js.map +0 -1
  388. package/dist/core/components/le-popup.d.ts +0 -11
  389. package/dist/core/components/le-popup.js +0 -279
  390. package/dist/core/components/le-popup.js.map +0 -1
  391. package/dist/core/components/le-round-progress.d.ts +0 -11
  392. package/dist/core/components/le-slot.d.ts +0 -11
  393. package/dist/core/components/le-stack.d.ts +0 -11
  394. package/dist/core/components/le-stack.js.map +0 -1
  395. package/dist/core/components/le-string-input.d.ts +0 -11
  396. package/dist/core/components/le-text.d.ts +0 -11
  397. package/dist/core/components/le-text.js.map +0 -1
  398. package/dist/core/components/le-turntable.d.ts +0 -11
  399. package/dist/core/esm/index-SKsXnjWI.js.map +0 -1
  400. package/dist/core/esm/index.js.map +0 -1
  401. package/dist/core/esm/le-box.entry.js +0 -182
  402. package/dist/core/esm/le-box.entry.js.map +0 -1
  403. package/dist/core/esm/le-button.entry.js +0 -90
  404. package/dist/core/esm/le-button.entry.js.map +0 -1
  405. package/dist/core/esm/le-card.entry.js +0 -27
  406. package/dist/core/esm/le-card.entry.js.map +0 -1
  407. package/dist/core/esm/le-checkbox.entry.js +0 -59
  408. package/dist/core/esm/le-checkbox.entry.js.map +0 -1
  409. package/dist/core/esm/le-kit.js +0 -21
  410. package/dist/core/esm/le-number-input.entry.js +0 -200
  411. package/dist/core/esm/le-number-input.entry.js.map +0 -1
  412. package/dist/core/esm/le-popover.entry.js +0 -346
  413. package/dist/core/esm/le-popover.entry.js.map +0 -1
  414. package/dist/core/esm/le-popup.entry.js +0 -210
  415. package/dist/core/esm/le-popup.entry.js.map +0 -1
  416. package/dist/core/esm/le-round-progress.entry.js.map +0 -1
  417. package/dist/core/esm/le-stack.entry.js +0 -133
  418. package/dist/core/esm/le-stack.entry.js.map +0 -1
  419. package/dist/core/esm/le-string-input.entry.js +0 -93
  420. package/dist/core/esm/le-string-input.entry.js.map +0 -1
  421. package/dist/core/esm/le-text.entry.js +0 -333
  422. package/dist/core/esm/le-text.entry.js.map +0 -1
  423. package/dist/core/esm/le-turntable.entry.js.map +0 -1
  424. package/dist/core/esm/loader.js +0 -11
  425. package/dist/core/esm/utils-DZdP1JiG.js +0 -146
  426. package/dist/core/esm/utils-DZdP1JiG.js.map +0 -1
  427. package/dist/core/le-kit/index.esm.js +0 -2
  428. package/dist/core/le-kit/index.esm.js.map +0 -1
  429. package/dist/core/le-kit/le-box.entry.esm.js.map +0 -1
  430. package/dist/core/le-kit/le-button.entry.esm.js.map +0 -1
  431. package/dist/core/le-kit/le-card.entry.esm.js.map +0 -1
  432. package/dist/core/le-kit/le-checkbox.entry.esm.js.map +0 -1
  433. package/dist/core/le-kit/le-kit.css +0 -1
  434. package/dist/core/le-kit/le-kit.esm.js +0 -2
  435. package/dist/core/le-kit/le-kit.esm.js.map +0 -1
  436. package/dist/core/le-kit/le-number-input.entry.esm.js.map +0 -1
  437. package/dist/core/le-kit/le-popover.entry.esm.js.map +0 -1
  438. package/dist/core/le-kit/le-popup.entry.esm.js.map +0 -1
  439. package/dist/core/le-kit/le-round-progress.entry.esm.js.map +0 -1
  440. package/dist/core/le-kit/le-stack.entry.esm.js.map +0 -1
  441. package/dist/core/le-kit/le-string-input.entry.esm.js.map +0 -1
  442. package/dist/core/le-kit/le-text.entry.esm.js.map +0 -1
  443. package/dist/core/le-kit/le-turntable.entry.esm.js.map +0 -1
  444. package/dist/core/le-kit/loader.esm.js.map +0 -1
  445. package/dist/core/le-kit/p--VxUdzYV.js.map +0 -1
  446. package/dist/core/le-kit/p-189cb775.entry.js +0 -2
  447. package/dist/core/le-kit/p-189cb775.entry.js.map +0 -1
  448. package/dist/core/le-kit/p-35c1d413.entry.js +0 -2
  449. package/dist/core/le-kit/p-35c1d413.entry.js.map +0 -1
  450. package/dist/core/le-kit/p-4f133e72.entry.js.map +0 -1
  451. package/dist/core/le-kit/p-55f70091.entry.js.map +0 -1
  452. package/dist/core/le-kit/p-5fd7b23a.entry.js +0 -2
  453. package/dist/core/le-kit/p-5fd7b23a.entry.js.map +0 -1
  454. package/dist/core/le-kit/p-6e414a5c.entry.js.map +0 -1
  455. package/dist/core/le-kit/p-7b121ca7.entry.js +0 -2
  456. package/dist/core/le-kit/p-7b121ca7.entry.js.map +0 -1
  457. package/dist/core/le-kit/p-8c81fa95.entry.js +0 -2
  458. package/dist/core/le-kit/p-8c81fa95.entry.js.map +0 -1
  459. package/dist/core/le-kit/p-9aa81442.entry.js +0 -2
  460. package/dist/core/le-kit/p-9aa81442.entry.js.map +0 -1
  461. package/dist/core/le-kit/p-SKsXnjWI.js +0 -3
  462. package/dist/core/le-kit/p-SKsXnjWI.js.map +0 -1
  463. package/dist/core/le-kit/p-a9d05ef6.entry.js.map +0 -1
  464. package/dist/core/le-kit/p-b2bd2a80.entry.js +0 -2
  465. package/dist/core/le-kit/p-b2bd2a80.entry.js.map +0 -1
  466. package/dist/core/le-kit/p-ccac9611.entry.js +0 -2
  467. package/dist/core/le-kit/p-ccac9611.entry.js.map +0 -1
  468. package/dist/core/loader/cdn.js +0 -1
  469. package/dist/core/loader/index.cjs.js +0 -1
  470. package/dist/core/loader/index.d.ts +0 -24
  471. package/dist/core/loader/index.es2017.js +0 -1
  472. package/dist/core/loader/index.js +0 -2
  473. package/dist/core/types/components/le-box/le-box.d.ts +0 -111
  474. package/dist/core/types/components/le-button/le-button.d.ts +0 -78
  475. package/dist/core/types/components/le-card/le-card.d.ts +0 -37
  476. package/dist/core/types/components/le-checkbox/le-checkbox.d.ts +0 -46
  477. package/dist/core/types/components/le-number-input/le-number-input.d.ts +0 -106
  478. package/dist/core/types/components/le-popover/le-popover.d.ts +0 -109
  479. package/dist/core/types/components/le-popup/le-popup.api.d.ts +0 -73
  480. package/dist/core/types/components/le-popup/le-popup.d.ts +0 -122
  481. package/dist/core/types/components/le-round-progress/le-round-progress.d.ts +0 -37
  482. package/dist/core/types/components/le-stack/le-stack.d.ts +0 -73
  483. package/dist/core/types/components/le-string-input/le-string-input.d.ts +0 -83
  484. package/dist/core/types/components/le-text/le-text.d.ts +0 -141
  485. package/dist/core/types/components/le-turntable/le-turntable.d.ts +0 -55
  486. package/dist/core/types/components.d.ts +0 -1752
  487. package/dist/core/types/global/app.d.ts +0 -73
  488. package/dist/core/types/index.d.ts +0 -15
  489. package/dist/core/types/stencil-public-runtime.d.ts +0 -1756
  490. package/dist/core/types/types/blocks.d.ts +0 -136
  491. package/dist/core/types/types/options.d.ts +0 -124
  492. package/dist/core/types/utils/utils.d.ts +0 -54
  493. package/dist/le-kit/index-CAY3Hk_i.js +0 -4559
  494. package/dist/le-kit/index-CAY3Hk_i.js.map +0 -1
  495. package/dist/le-kit/le-button.entry.esm.js.map +0 -1
  496. package/dist/le-kit/le-button.entry.js +0 -90
  497. package/dist/le-kit/le-checkbox.entry.esm.js.map +0 -1
  498. package/dist/le-kit/le-checkbox.entry.js +0 -59
  499. package/dist/le-kit/le-component.entry.esm.js.map +0 -1
  500. package/dist/le-kit/le-popover.entry.esm.js.map +0 -1
  501. package/dist/le-kit/le-popover.entry.js +0 -346
  502. package/dist/le-kit/le-popup.entry.esm.js.map +0 -1
  503. package/dist/le-kit/le-popup.entry.js +0 -210
  504. package/dist/le-kit/le-round-progress.entry.js +0 -104
  505. package/dist/le-kit/le-slot.entry.esm.js.map +0 -1
  506. package/dist/le-kit/le-string-input.entry.esm.js.map +0 -1
  507. package/dist/le-kit/le-string-input.entry.js +0 -93
  508. package/dist/le-kit/le-turntable.entry.js +0 -137
  509. /package/dist/{core/cjs → cjs}/le-kit.cjs.js.map +0 -0
  510. /package/dist/{core/cjs → cjs}/loader.cjs.js.map +0 -0
  511. /package/dist/{core/collection → collection}/components/le-box/le-box.default.css +0 -0
  512. /package/dist/{core/collection → collection}/components/le-checkbox/le-checkbox.css +0 -0
  513. /package/dist/{core/collection → collection}/components/le-number-input/le-number-input.css +0 -0
  514. /package/dist/{core/collection → collection}/components/le-popup/le-popup.css +0 -0
  515. /package/dist/{core/collection → collection}/components/le-round-progress/le-round-progress.css +0 -0
  516. /package/dist/{core/collection → collection}/components/le-stack/le-stack.default.css +0 -0
  517. /package/dist/{core/collection → collection}/components/le-text/le-text.default.css +0 -0
  518. /package/dist/{core/collection → collection}/components/le-turntable/le-turntable.css +0 -0
  519. /package/dist/{core/collection → collection}/global/app.js +0 -0
  520. /package/dist/{core/collection → collection}/index.js +0 -0
  521. /package/dist/{core/collection → collection}/types/blocks.js +0 -0
  522. /package/dist/{core/collection → collection}/types/options.js +0 -0
  523. /package/dist/{core/collection → collection}/utils/utils.js +0 -0
  524. /package/dist/{core/components → components}/le-button.js.map +0 -0
  525. /package/dist/{core/components → components}/le-checkbox.js.map +0 -0
  526. /package/dist/{core/components → components}/le-component.js.map +0 -0
  527. /package/dist/{core/components → components}/le-popover.js +0 -0
  528. /package/dist/{core/components → components}/le-popover.js.map +0 -0
  529. /package/dist/{core/components → components}/le-round-progress.js.map +0 -0
  530. /package/dist/{core/components → components}/le-slot.js.map +0 -0
  531. /package/dist/{core/components → components}/le-string-input.js.map +0 -0
  532. /package/dist/{core/components → components}/le-turntable.js.map +0 -0
  533. /package/dist/{core/components → components}/utils.js +0 -0
  534. /package/dist/{core/components → components}/utils.js.map +0 -0
  535. /package/dist/{core/esm → esm}/le-kit.js.map +0 -0
  536. /package/dist/{core/esm → esm}/loader.js.map +0 -0
  537. /package/dist/{core/index.cjs.js → index.cjs.js} +0 -0
  538. /package/dist/{core/index.js → index.js} +0 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * le-tag component styles
3
+ *
4
+ * CSS Custom Properties:
5
+ * --le-tag-font-size
6
+ * --le-tag-font-weight
7
+ * --le-tag-padding-x
8
+ * --le-tag-padding-y
9
+ * --le-tag-border-radius
10
+ * --le-tag-gap
11
+ * --le-tag-bg
12
+ * --le-tag-color
13
+ * --le-tag-border-color
14
+ */
15
+
16
+ :host {
17
+ display: inline-flex;
18
+ --le-tag-font-size: var(--le-font-size-sm);
19
+ --le-tag-font-weight: var(--le-font-weight-medium);
20
+ --le-tag-color: var(--le-color-text);
21
+ --le-tag-bg: var(--le-color-surface-alt);
22
+ --le-tag-dismiss-size: 1.75em;
23
+ }
24
+
25
+ :host([disabled]) {
26
+ opacity: 0.5;
27
+ pointer-events: none;
28
+ }
29
+
30
+ .tag {
31
+ display: inline-flex;
32
+ align-items: center;
33
+ gap: var(--le-tag-gap, 0.375rem);
34
+ padding: var(--le-tag-padding-y, 0.25rem) var(--le-tag-padding-x, 0.625rem);
35
+ font-size: var(--le-tag-font-size);
36
+ font-weight: var(--le-tag-font-weight);
37
+ line-height: 1.4;
38
+ color: var(--le-tag-color, var(--le-color-text, #1f2937));
39
+ background: var(--le-tag-bg, var(--le-color-surface-alt, #f3f4f6));
40
+ border: 1px solid var(--le-tag-border-color, transparent);
41
+ border-radius: var(--le-tag-border-radius, 9999px);
42
+ white-space: nowrap;
43
+ user-select: none;
44
+ }
45
+
46
+ /* Sizes */
47
+ :host([size='small']) .tag {
48
+ --le-tag-font-size: 0.75rem;
49
+ --le-tag-padding-x: 0.5rem;
50
+ --le-tag-padding-y: 0.125rem;
51
+ --le-tag-gap: 0.25rem;
52
+ --le-tag-dismiss-size: 1.25em;
53
+ }
54
+
55
+ :host([size='large']) .tag {
56
+ --le-tag-font-size: 1rem;
57
+ --le-tag-padding-x: 0.875rem;
58
+ --le-tag-padding-y: 0.375rem;
59
+ --le-tag-gap: 0.5rem;
60
+ --le-tag-dismiss-size: 2em;
61
+ }
62
+
63
+ /* Variants */
64
+ :host([variant='primary']) .tag {
65
+ --le-tag-bg: var(--le-color-primary, #dbeafe);
66
+ --le-tag-color: var(--le-color-primary-contrast, #1e40af);
67
+ }
68
+
69
+ :host([variant='success']) .tag {
70
+ --le-tag-bg: var(--le-color-success, #dcfce7);
71
+ --le-tag-color: var(--le-color-success-contrast, #166534);
72
+ }
73
+
74
+ :host([variant='warning']) .tag {
75
+ --le-tag-bg: var(--le-color-warning-light, #fef3c7);
76
+ --le-tag-color: var(--le-color-warning-contrast, #92400e);
77
+ }
78
+
79
+ :host([variant='danger']) .tag {
80
+ --le-tag-bg: var(--le-color-danger, #fee2e2);
81
+ --le-tag-color: var(--le-color-danger-contrast, #991b1b);
82
+ }
83
+
84
+ /* Icon */
85
+ .tag-icon {
86
+ display: inline-flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ flex-shrink: 0;
90
+ }
91
+
92
+ .tag-icon img {
93
+ width: 1em;
94
+ height: 1em;
95
+ object-fit: contain;
96
+ }
97
+
98
+ /* Label */
99
+ .tag-label {
100
+ display: inline-block;
101
+ }
102
+
103
+ /* Dismiss button */
104
+ .tag-dismiss {
105
+ display: inline-flex;
106
+ align-items: center;
107
+ justify-content: center;
108
+ width: var(--le-tag-dismiss-size);
109
+ height: var(--le-tag-dismiss-size);
110
+ padding: 0;
111
+ margin-block: calc(var(--le-tag-dismiss-size) * -1);
112
+ margin-right: calc(var(--le-tag-dismiss-size) / 3 * -1);
113
+ border: none;
114
+ background: transparent;
115
+ color: currentColor;
116
+ opacity: 0.6;
117
+ cursor: pointer;
118
+ border-radius: 50%;
119
+ transition: opacity 0.15s ease, background-color 0.15s ease;
120
+ }
121
+
122
+ .tag-dismiss:hover {
123
+ opacity: 1;
124
+ background: rgba(0, 0, 0, 0.1);
125
+ }
126
+
127
+ .tag-dismiss:focus-visible {
128
+ outline: 2px solid var(--le-color-primary, #3b82f6);
129
+ outline-offset: 1px;
130
+ }
131
+
132
+ .tag-dismiss svg {
133
+ width: 0.75em;
134
+ height: 0.75em;
135
+ }
136
+
137
+ .tag-dismiss:disabled {
138
+ cursor: not-allowed;
139
+ }
@@ -0,0 +1,266 @@
1
+ import { h } from "@stencil/core";
2
+ /**
3
+ * A tag/chip component for displaying labels with optional dismiss functionality.
4
+ *
5
+ * @cmsEditable false
6
+ * @cmsCategory Form
7
+ *
8
+ * @slot - Default slot for custom content (overrides label prop)
9
+ *
10
+ * @example Basic tag
11
+ * ```html
12
+ * <le-tag label="JavaScript"></le-tag>
13
+ * ```
14
+ *
15
+ * @example Dismissible tag
16
+ * ```html
17
+ * <le-tag label="Remove me" dismissible></le-tag>
18
+ * ```
19
+ *
20
+ * @example With icon
21
+ * ```html
22
+ * <le-tag label="Settings" icon="⚙️"></le-tag>
23
+ * ```
24
+ *
25
+ * @example Different sizes
26
+ * ```html
27
+ * <le-tag label="Small" size="small"></le-tag>
28
+ * <le-tag label="Medium" size="medium"></le-tag>
29
+ * <le-tag label="Large" size="large"></le-tag>
30
+ * ```
31
+ *
32
+ * @example Different variants
33
+ * ```html
34
+ * <le-tag label="Default" variant="default"></le-tag>
35
+ * <le-tag label="Primary" variant="primary"></le-tag>
36
+ * <le-tag label="Success" variant="success"></le-tag>
37
+ * <le-tag label="Warning" variant="warning"></le-tag>
38
+ * <le-tag label="Danger" variant="danger"></le-tag>
39
+ * ```
40
+ */
41
+ export class LeTag {
42
+ /**
43
+ * The text label to display in the tag.
44
+ */
45
+ label;
46
+ /**
47
+ * Mode of the popover should be 'default' for internal use
48
+ */
49
+ mode;
50
+ /**
51
+ * Icon to display before the label.
52
+ * Can be an emoji, URL, or icon name.
53
+ */
54
+ icon;
55
+ /**
56
+ * Whether the tag can be dismissed (shows close button).
57
+ */
58
+ dismissible = false;
59
+ /**
60
+ * Whether the tag is disabled.
61
+ */
62
+ disabled = false;
63
+ /**
64
+ * The size of the tag.
65
+ */
66
+ size = 'medium';
67
+ /**
68
+ * The visual variant of the tag.
69
+ */
70
+ variant = 'default';
71
+ /**
72
+ * Emitted when the dismiss button is clicked.
73
+ */
74
+ leDismiss;
75
+ handleDismiss = (e) => {
76
+ e.stopPropagation();
77
+ if (!this.disabled) {
78
+ this.leDismiss.emit();
79
+ }
80
+ };
81
+ renderIcon() {
82
+ if (!this.icon)
83
+ return null;
84
+ // Check if it's a URL (starts with http, https, or /)
85
+ if (this.icon.startsWith('http') || this.icon.startsWith('/')) {
86
+ return h("img", { class: "tag-icon", src: this.icon, alt: "" });
87
+ }
88
+ // Otherwise render as text (emoji or icon font)
89
+ return h("span", { class: "tag-icon" }, this.icon);
90
+ }
91
+ render() {
92
+ return (h("le-component", { key: 'a9af40ce7f93cf0fd866847b534ec7b387e46630', component: "le-tag" }, h("span", { key: '714d50b01509122992a7687b1df57fed42c7b74d', class: "tag" }, this.renderIcon(), h("span", { key: '0ca3f1427e7900f6a756881467d076df0b85a181', class: "tag-label" }, h("le-slot", { key: 'd2cf2b614a82b63db7fffd82aa4b27dfc4b306b0', name: "", tag: "span", type: "text" }, h("slot", { key: 'bf96f35dfea1258e2b351ac9c527a2ad2da0a28b' }, this.label))), this.dismissible && (h("button", { key: '841019b44d6a403123176840befc0d1111e26412', type: "button", class: "tag-dismiss", onClick: this.handleDismiss, disabled: this.disabled, "aria-label": "Remove" }, h("svg", { key: '3085736bd99aec5f65f6b595e0ada1afe72df81d', viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("path", { key: 'd4b27569785c37154153294fe00f9d20661741dc', d: "M4 4l8 8M12 4l-8 8" })))))));
93
+ }
94
+ static get is() { return "le-tag"; }
95
+ static get encapsulation() { return "shadow"; }
96
+ static get originalStyleUrls() {
97
+ return {
98
+ "$": ["le-tag.css"]
99
+ };
100
+ }
101
+ static get styleUrls() {
102
+ return {
103
+ "$": ["le-tag.css"]
104
+ };
105
+ }
106
+ static get properties() {
107
+ return {
108
+ "label": {
109
+ "type": "string",
110
+ "mutable": false,
111
+ "complexType": {
112
+ "original": "string",
113
+ "resolved": "string",
114
+ "references": {}
115
+ },
116
+ "required": false,
117
+ "optional": false,
118
+ "docs": {
119
+ "tags": [],
120
+ "text": "The text label to display in the tag."
121
+ },
122
+ "getter": false,
123
+ "setter": false,
124
+ "reflect": false,
125
+ "attribute": "label"
126
+ },
127
+ "mode": {
128
+ "type": "string",
129
+ "mutable": true,
130
+ "complexType": {
131
+ "original": "'default' | 'admin'",
132
+ "resolved": "\"admin\" | \"default\"",
133
+ "references": {}
134
+ },
135
+ "required": false,
136
+ "optional": false,
137
+ "docs": {
138
+ "tags": [],
139
+ "text": "Mode of the popover should be 'default' for internal use"
140
+ },
141
+ "getter": false,
142
+ "setter": false,
143
+ "reflect": true,
144
+ "attribute": "mode"
145
+ },
146
+ "icon": {
147
+ "type": "string",
148
+ "mutable": false,
149
+ "complexType": {
150
+ "original": "string",
151
+ "resolved": "string",
152
+ "references": {}
153
+ },
154
+ "required": false,
155
+ "optional": true,
156
+ "docs": {
157
+ "tags": [],
158
+ "text": "Icon to display before the label.\nCan be an emoji, URL, or icon name."
159
+ },
160
+ "getter": false,
161
+ "setter": false,
162
+ "reflect": false,
163
+ "attribute": "icon"
164
+ },
165
+ "dismissible": {
166
+ "type": "boolean",
167
+ "mutable": false,
168
+ "complexType": {
169
+ "original": "boolean",
170
+ "resolved": "boolean",
171
+ "references": {}
172
+ },
173
+ "required": false,
174
+ "optional": false,
175
+ "docs": {
176
+ "tags": [],
177
+ "text": "Whether the tag can be dismissed (shows close button)."
178
+ },
179
+ "getter": false,
180
+ "setter": false,
181
+ "reflect": false,
182
+ "attribute": "dismissible",
183
+ "defaultValue": "false"
184
+ },
185
+ "disabled": {
186
+ "type": "boolean",
187
+ "mutable": false,
188
+ "complexType": {
189
+ "original": "boolean",
190
+ "resolved": "boolean",
191
+ "references": {}
192
+ },
193
+ "required": false,
194
+ "optional": false,
195
+ "docs": {
196
+ "tags": [],
197
+ "text": "Whether the tag is disabled."
198
+ },
199
+ "getter": false,
200
+ "setter": false,
201
+ "reflect": true,
202
+ "attribute": "disabled",
203
+ "defaultValue": "false"
204
+ },
205
+ "size": {
206
+ "type": "string",
207
+ "mutable": false,
208
+ "complexType": {
209
+ "original": "'small' | 'medium' | 'large'",
210
+ "resolved": "\"large\" | \"medium\" | \"small\"",
211
+ "references": {}
212
+ },
213
+ "required": false,
214
+ "optional": false,
215
+ "docs": {
216
+ "tags": [],
217
+ "text": "The size of the tag."
218
+ },
219
+ "getter": false,
220
+ "setter": false,
221
+ "reflect": true,
222
+ "attribute": "size",
223
+ "defaultValue": "'medium'"
224
+ },
225
+ "variant": {
226
+ "type": "string",
227
+ "mutable": false,
228
+ "complexType": {
229
+ "original": "'default' | 'primary' | 'success' | 'warning' | 'danger'",
230
+ "resolved": "\"danger\" | \"default\" | \"primary\" | \"success\" | \"warning\"",
231
+ "references": {}
232
+ },
233
+ "required": false,
234
+ "optional": false,
235
+ "docs": {
236
+ "tags": [],
237
+ "text": "The visual variant of the tag."
238
+ },
239
+ "getter": false,
240
+ "setter": false,
241
+ "reflect": true,
242
+ "attribute": "variant",
243
+ "defaultValue": "'default'"
244
+ }
245
+ };
246
+ }
247
+ static get events() {
248
+ return [{
249
+ "method": "leDismiss",
250
+ "name": "leDismiss",
251
+ "bubbles": true,
252
+ "cancelable": true,
253
+ "composed": true,
254
+ "docs": {
255
+ "tags": [],
256
+ "text": "Emitted when the dismiss button is clicked."
257
+ },
258
+ "complexType": {
259
+ "original": "void",
260
+ "resolved": "void",
261
+ "references": {}
262
+ }
263
+ }];
264
+ }
265
+ }
266
+ //# sourceMappingURL=le-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"le-tag.js","sourceRoot":"","sources":["../../../src/components/le-tag/le-tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAgB,CAAC,EAAE,MAAM,eAAe,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAMH,MAAM,OAAO,KAAK;IAChB;;OAEG;IACK,KAAK,CAAS;IAEtB;;OAEG;IACqC,IAAI,CAAsB;IAElE;;;OAGG;IACK,IAAI,CAAU;IAEtB;;OAEG;IACK,WAAW,GAAY,KAAK,CAAC;IAErC;;OAEG;IACsB,QAAQ,GAAY,KAAK,CAAC;IAEnD;;OAEG;IACsB,IAAI,GAAiC,QAAQ,CAAC;IAEvE;;OAEG;IACsB,OAAO,GAA6D,SAAS,CAAC;IAEvG;;OAEG;IACM,SAAS,CAAqB;IAE/B,aAAa,GAAG,CAAC,CAAa,EAAE,EAAE;QACxC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAE5B,sDAAsD;QACtD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,OAAO,WAAK,KAAK,EAAC,UAAU,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAC,EAAE,GAAG,CAAC;QACzD,CAAC;QAED,gDAAgD;QAChD,OAAO,YAAM,KAAK,EAAC,UAAU,IAAE,IAAI,CAAC,IAAI,CAAQ,CAAC;IACnD,CAAC;IAED,MAAM;QACJ,OAAO,CACL,qEAAc,SAAS,EAAC,QAAQ;YAC9B,6DAAM,KAAK,EAAC,KAAK;gBACd,IAAI,CAAC,UAAU,EAAE;gBAClB,6DAAM,KAAK,EAAC,WAAW;oBACrB,gEAAS,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM;wBACrC,+DAAO,IAAI,CAAC,KAAK,CAAQ,CACjB,CACL;gBACN,IAAI,CAAC,WAAW,IAAI,CACnB,+DAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,gBAAa,QAAQ;oBACjH,4DAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,kBAAc,GAAG;wBACzE,6DAAM,CAAC,EAAC,oBAAoB,GAAG,CAC3B,CACC,CACV,CACI,CACM,CAChB,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\n\n/**\n * A tag/chip component for displaying labels with optional dismiss functionality.\n *\n * @cmsEditable false\n * @cmsCategory Form\n *\n * @slot - Default slot for custom content (overrides label prop)\n *\n * @example Basic tag\n * ```html\n * <le-tag label=\"JavaScript\"></le-tag>\n * ```\n *\n * @example Dismissible tag\n * ```html\n * <le-tag label=\"Remove me\" dismissible></le-tag>\n * ```\n *\n * @example With icon\n * ```html\n * <le-tag label=\"Settings\" icon=\"⚙️\"></le-tag>\n * ```\n *\n * @example Different sizes\n * ```html\n * <le-tag label=\"Small\" size=\"small\"></le-tag>\n * <le-tag label=\"Medium\" size=\"medium\"></le-tag>\n * <le-tag label=\"Large\" size=\"large\"></le-tag>\n * ```\n *\n * @example Different variants\n * ```html\n * <le-tag label=\"Default\" variant=\"default\"></le-tag>\n * <le-tag label=\"Primary\" variant=\"primary\"></le-tag>\n * <le-tag label=\"Success\" variant=\"success\"></le-tag>\n * <le-tag label=\"Warning\" variant=\"warning\"></le-tag>\n * <le-tag label=\"Danger\" variant=\"danger\"></le-tag>\n * ```\n */\n@Component({\n tag: 'le-tag',\n styleUrl: 'le-tag.css',\n shadow: true,\n})\nexport class LeTag {\n /**\n * The text label to display in the tag.\n */\n @Prop() label: string;\n\n /**\n * Mode of the popover should be 'default' for internal use\n */\n @Prop({ mutable: true, reflect: true }) mode: 'default' | 'admin';\n\n /**\n * Icon to display before the label.\n * Can be an emoji, URL, or icon name.\n */\n @Prop() icon?: string;\n\n /**\n * Whether the tag can be dismissed (shows close button).\n */\n @Prop() dismissible: boolean = false;\n\n /**\n * Whether the tag is disabled.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * The size of the tag.\n */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * The visual variant of the tag.\n */\n @Prop({ reflect: true }) variant: 'default' | 'primary' | 'success' | 'warning' | 'danger' = 'default';\n\n /**\n * Emitted when the dismiss button is clicked.\n */\n @Event() leDismiss: EventEmitter<void>;\n\n private handleDismiss = (e: MouseEvent) => {\n e.stopPropagation();\n if (!this.disabled) {\n this.leDismiss.emit();\n }\n };\n\n private renderIcon() {\n if (!this.icon) return null;\n\n // Check if it's a URL (starts with http, https, or /)\n if (this.icon.startsWith('http') || this.icon.startsWith('/')) {\n return <img class=\"tag-icon\" src={this.icon} alt=\"\" />;\n }\n\n // Otherwise render as text (emoji or icon font)\n return <span class=\"tag-icon\">{this.icon}</span>;\n }\n\n render() {\n return (\n <le-component component=\"le-tag\">\n <span class=\"tag\">\n {this.renderIcon()}\n <span class=\"tag-label\">\n <le-slot name=\"\" tag=\"span\" type=\"text\">\n <slot>{this.label}</slot>\n </le-slot>\n </span>\n {this.dismissible && (\n <button type=\"button\" class=\"tag-dismiss\" onClick={this.handleDismiss} disabled={this.disabled} aria-label=\"Remove\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n </button>\n )}\n </span>\n </le-component>\n );\n }\n}\n"]}
@@ -331,7 +331,7 @@ export class LeText {
331
331
  };
332
332
  // Admin mode - show rich text editor
333
333
  if (this.adminMode) {
334
- return (h(Host, { class: "admin-mode" }, h("div", { class: "le-text-editor-wrapper" }, this.isFocused && this.renderToolbar(), h(Tag, { class: textClass, part: "text", style: textStyle }, h("div", { ref: (el) => this.editorRef = el, class: "le-text-editor", contentEditable: true, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyUp: this.handleSelectionChange, onMouseUp: this.handleSelectionChange, innerHTML: this.content })), h("div", { class: "hidden-slot" }, h("slot", { ref: (el) => this.slotRef = el, onSlotchange: () => this.readSlottedContent() })))));
334
+ return (h(Host, { class: "admin-mode" }, h("le-component", { component: "le-text" }, h("div", { class: "le-text-editor-wrapper" }, this.isFocused && this.renderToolbar(), h(Tag, { class: textClass, part: "text", style: textStyle }, h("div", { ref: (el) => this.editorRef = el, class: "le-text-editor", contentEditable: true, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyUp: this.handleSelectionChange, onMouseUp: this.handleSelectionChange, innerHTML: this.content })), h("div", { class: "hidden-slot" }, h("slot", { ref: (el) => this.slotRef = el, onSlotchange: () => this.readSlottedContent() }))))));
335
335
  }
336
336
  // Default mode - render semantic element with slotted content
337
337
  return (h(Host, null, h(Tag, { class: textClass, part: "text", style: textStyle }, h("slot", { ref: (el) => this.slotRef = el }))));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"le-text.js","sourceRoot":"","sources":["../../../src/components/le-text/le-text.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, h, Host, Element, Watch } from '@stencil/core';\nimport { observeModeChanges } from '../../utils/utils';\n\n/**\n * A text component with rich text editing capabilities in admin mode.\n *\n * `le-text` renders semantic text elements (headings, paragraphs, code, quotes)\n * and provides a Notion-like rich text editor in admin mode with formatting\n * toolbar for bold, italic, links, and paragraph type selection.\n *\n * @slot - Default slot for text content\n *\n * @cssprop --le-text-color - Text color\n * @cssprop --le-text-font-size - Font size\n * @cssprop --le-text-line-height - Line height\n * @cssprop --le-text-font-weight - Font weight\n *\n * @csspart text - The text container element\n *\n * @cmsEditable true\n * @cmsCategory Content\n */\n@Component({\n tag: 'le-text',\n styleUrl: 'le-text.default.css',\n shadow: true,\n})\nexport class LeText {\n @Element() el: HTMLElement;\n\n /**\n * The semantic variant/type of text element\n * @allowedValues p | h1 | h2 | h3 | h4 | h5 | h6 | code | quote | label | small\n */\n @Prop({ mutable: true, reflect: true }) variant: 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'code' | 'quote' | 'label' | 'small' = 'p';\n\n /**\n * Text alignment\n * @allowedValues left | center | right | justify\n */\n @Prop({ reflect: true }) align: 'left' | 'center' | 'right' | 'justify' = 'left';\n\n /**\n * Text color (CSS value or theme token)\n */\n @Prop() color?: string;\n\n /**\n * Whether the text should truncate with ellipsis\n */\n @Prop() truncate: boolean = false;\n\n /**\n * Maximum number of lines before truncating (requires truncate=true)\n */\n @Prop() maxLines?: number;\n\n /**\n * Internal state to track admin mode\n */\n @State() private adminMode: boolean = false;\n\n /**\n * The HTML content being edited\n */\n @State() private content: string = '';\n\n /**\n * Whether the editor is focused (shows toolbar)\n */\n @State() private isFocused: boolean = false;\n\n /**\n * Current selection state for toolbar button highlighting\n */\n @State() private selectionState: SelectionState = {\n isBold: false,\n isItalic: false,\n isUnderline: false,\n isStrikethrough: false,\n isLink: false,\n blockType: 'p',\n };\n\n /**\n * Reference to the contenteditable element\n */\n private editorRef?: HTMLDivElement;\n\n /**\n * Reference to the slot element\n */\n private slotRef?: HTMLSlotElement;\n\n private disconnectModeObserver?: () => void;\n\n connectedCallback() {\n this.disconnectModeObserver = observeModeChanges(this.el, (mode) => {\n const wasAdmin = this.adminMode;\n this.adminMode = mode === 'admin';\n \n if (this.adminMode && !wasAdmin) {\n // Entering admin mode - read content from slot\n requestAnimationFrame(() => this.readSlottedContent());\n } else if (!this.adminMode && wasAdmin) {\n // Leaving admin mode - sync content back to slot\n this.syncContentToSlot();\n }\n });\n }\n\n disconnectedCallback() {\n this.disconnectModeObserver?.();\n }\n\n @Watch('variant')\n onVariantChange() {\n // When variant changes in admin mode, update the content wrapper\n if (this.adminMode && this.editorRef) {\n this.syncContentToSlot();\n }\n }\n\n /**\n * Read content from slotted elements\n */\n private readSlottedContent() {\n if (!this.slotRef) return;\n \n const assignedNodes = this.slotRef.assignedNodes({ flatten: true });\n \n // Collect all content from assigned nodes\n let html = '';\n assignedNodes.forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n html += node.textContent;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n html += (node as Element).innerHTML || node.textContent;\n }\n });\n \n this.content = html.trim();\n }\n\n /**\n * Sync edited content back to the slot\n */\n private syncContentToSlot() {\n if (!this.editorRef) return;\n \n const newContent = this.editorRef.innerHTML;\n \n // Update the light DOM content\n // We need to update the actual slotted content\n const slot = this.slotRef;\n if (slot) {\n const assignedNodes = slot.assignedNodes({ flatten: true });\n if (assignedNodes.length > 0) {\n const firstNode = assignedNodes[0];\n if (firstNode.nodeType === Node.ELEMENT_NODE) {\n (firstNode as Element).innerHTML = newContent;\n } else if (firstNode.nodeType === Node.TEXT_NODE) {\n // Replace text node with the new content\n const parent = firstNode.parentNode;\n if (parent) {\n // Create a temporary element to parse HTML\n const temp = document.createElement('span');\n temp.innerHTML = newContent;\n // Replace the text node\n parent.replaceChild(temp, firstNode);\n // Unwrap the span if it only contains text\n if (temp.childNodes.length === 1 && temp.firstChild?.nodeType === Node.TEXT_NODE) {\n parent.replaceChild(temp.firstChild, temp);\n }\n }\n }\n } else {\n // No assigned nodes, set innerHTML on the host's light DOM\n this.el.innerHTML = newContent;\n }\n }\n }\n\n /**\n * Handle input in the contenteditable\n */\n private handleInput = () => {\n if (this.editorRef) {\n this.content = this.editorRef.innerHTML;\n this.updateSelectionState();\n }\n };\n\n /**\n * Handle focus on the editor\n */\n private handleFocus = () => {\n this.isFocused = true;\n this.updateSelectionState();\n };\n\n /**\n * Handle blur on the editor\n */\n private handleBlur = (e: FocusEvent) => {\n // Check if focus moved to toolbar\n const relatedTarget = e.relatedTarget as HTMLElement;\n const toolbar = this.el.shadowRoot?.querySelector('.le-text-toolbar');\n \n if (toolbar?.contains(relatedTarget)) {\n // Focus moved to toolbar, keep it open\n return;\n }\n \n // Small delay to allow toolbar clicks to register\n setTimeout(() => {\n if (!this.el.shadowRoot?.activeElement) {\n this.isFocused = false;\n this.syncContentToSlot();\n }\n }, 150);\n };\n\n /**\n * Handle selection change to update toolbar state\n */\n private handleSelectionChange = () => {\n this.updateSelectionState();\n };\n\n /**\n * Update the selection state for toolbar highlighting\n */\n private updateSelectionState() {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return;\n\n this.selectionState = {\n isBold: document.queryCommandState('bold'),\n isItalic: document.queryCommandState('italic'),\n isUnderline: document.queryCommandState('underline'),\n isStrikethrough: document.queryCommandState('strikeThrough'),\n isLink: this.isSelectionInLink(selection),\n blockType: this.variant,\n };\n }\n\n /**\n * Check if current selection is within a link\n */\n private isSelectionInLink(selection: Selection): boolean {\n if (!selection.anchorNode) return false;\n \n let node: Node | null = selection.anchorNode;\n while (node && node !== this.editorRef) {\n if (node.nodeName === 'A') return true;\n node = node.parentNode;\n }\n return false;\n }\n\n /**\n * Execute a formatting command\n */\n private execCommand(command: string, value?: string) {\n // Focus the editor first\n this.editorRef?.focus();\n \n // Execute the command\n document.execCommand(command, false, value);\n \n // Update state\n this.handleInput();\n this.updateSelectionState();\n }\n\n /**\n * Toggle bold formatting\n */\n private toggleBold = (e: Event) => {\n e.preventDefault();\n this.execCommand('bold');\n };\n\n /**\n * Toggle italic formatting\n */\n private toggleItalic = (e: Event) => {\n e.preventDefault();\n this.execCommand('italic');\n };\n\n /**\n * Toggle underline formatting\n */\n private toggleUnderline = (e: Event) => {\n e.preventDefault();\n this.execCommand('underline');\n };\n\n /**\n * Toggle strikethrough formatting\n */\n private toggleStrikethrough = (e: Event) => {\n e.preventDefault();\n this.execCommand('strikeThrough');\n };\n\n /**\n * Add or edit a link\n */\n private toggleLink = (e: Event) => {\n e.preventDefault();\n \n if (this.selectionState.isLink) {\n // Remove link\n this.execCommand('unlink');\n } else {\n // Add link\n const url = prompt('Enter URL:', 'https://');\n if (url) {\n this.execCommand('createLink', url);\n }\n }\n };\n\n /**\n * Change the block type/variant\n */\n private changeVariant = (e: Event) => {\n const select = e.target as HTMLSelectElement;\n this.variant = select.value as typeof this.variant;\n };\n\n /**\n * Render the formatting toolbar\n */\n private renderToolbar() {\n return (\n <div class=\"le-text-toolbar\">\n <select \n class=\"le-text-toolbar-select\"\n onChange={this.changeVariant}\n onMouseDown={(e) => e.preventDefault()}\n >\n <option value=\"p\" selected={this.variant === 'p'}>Paragraph</option>\n <option value=\"h1\" selected={this.variant === 'h1'}>Heading 1</option>\n <option value=\"h2\" selected={this.variant === 'h2'}>Heading 2</option>\n <option value=\"h3\" selected={this.variant === 'h3'}>Heading 3</option>\n <option value=\"h4\" selected={this.variant === 'h4'}>Heading 4</option>\n <option value=\"h5\" selected={this.variant === 'h5'}>Heading 5</option>\n <option value=\"h6\" selected={this.variant === 'h6'}>Heading 6</option>\n <option value=\"quote\" selected={this.variant === 'quote'}>Quote</option>\n <option value=\"code\" selected={this.variant === 'code'}>Code</option>\n <option value=\"label\" selected={this.variant === 'label'}>Label</option>\n <option value=\"small\" selected={this.variant === 'small'}>Small</option>\n </select>\n \n <div class=\"le-text-toolbar-divider\"></div>\n \n <button\n type=\"button\"\n class={{ 'le-text-toolbar-btn': true, 'active': this.selectionState.isBold }}\n onMouseDown={this.toggleBold}\n title=\"Bold (Ctrl+B)\"\n >\n <strong>B</strong>\n </button>\n \n <button\n type=\"button\"\n class={{ 'le-text-toolbar-btn': true, 'active': this.selectionState.isItalic }}\n onMouseDown={this.toggleItalic}\n title=\"Italic (Ctrl+I)\"\n >\n <em>I</em>\n </button>\n \n <button\n type=\"button\"\n class={{ 'le-text-toolbar-btn': true, 'active': this.selectionState.isUnderline }}\n onMouseDown={this.toggleUnderline}\n title=\"Underline (Ctrl+U)\"\n >\n <span style={{ textDecoration: 'underline' }}>U</span>\n </button>\n \n <button\n type=\"button\"\n class={{ 'le-text-toolbar-btn': true, 'active': this.selectionState.isStrikethrough }}\n onMouseDown={this.toggleStrikethrough}\n title=\"Strikethrough\"\n >\n <span style={{ textDecoration: 'line-through' }}>S</span>\n </button>\n \n <div class=\"le-text-toolbar-divider\"></div>\n \n <button\n type=\"button\"\n class={{ 'le-text-toolbar-btn': true, 'active': this.selectionState.isLink }}\n onMouseDown={this.toggleLink}\n title={this.selectionState.isLink ? 'Remove link' : 'Add link'}\n >\n 🔗\n </button>\n </div>\n );\n }\n\n /**\n * Get the semantic tag for the current variant\n */\n private getTag(): string {\n switch (this.variant) {\n case 'quote':\n return 'blockquote';\n case 'code':\n return 'pre';\n case 'label':\n return 'label';\n case 'small':\n return 'small';\n default:\n return this.variant; // h1-h6, p\n }\n }\n\n render() {\n const Tag = this.getTag();\n \n const textStyle: { [key: string]: string } = {};\n if (this.color) {\n textStyle.color = this.color;\n }\n if (this.align) {\n textStyle.textAlign = this.align;\n }\n\n const textClass = {\n 'le-text': true,\n [`variant-${this.variant}`]: true,\n 'truncate': this.truncate,\n [`max-lines-${this.maxLines}`]: this.truncate && this.maxLines,\n };\n\n // Admin mode - show rich text editor\n if (this.adminMode) {\n return (\n <Host class=\"admin-mode\">\n <le-component component=\"le-text\">\n <div class=\"le-text-editor-wrapper\">\n {this.isFocused && this.renderToolbar()}\n <Tag \n class={textClass}\n part=\"text\"\n style={textStyle}\n >\n <div\n ref={(el) => this.editorRef = el}\n class=\"le-text-editor\"\n contentEditable={true}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onKeyUp={this.handleSelectionChange}\n onMouseUp={this.handleSelectionChange}\n innerHTML={this.content}\n ></div>\n </Tag>\n {/* Hidden slot to receive light DOM content */}\n <div class=\"hidden-slot\">\n <slot \n ref={(el) => this.slotRef = el as HTMLSlotElement}\n onSlotchange={() => this.readSlottedContent()}\n ></slot>\n </div>\n </div>\n </le-component>\n </Host>\n );\n }\n\n // Default mode - render semantic element with slotted content\n return (\n <Host>\n <Tag \n class={textClass}\n part=\"text\"\n style={textStyle}\n >\n <slot ref={(el) => this.slotRef = el as HTMLSlotElement}></slot>\n </Tag>\n </Host>\n );\n }\n}\n\n/**\n * Selection state for toolbar\n */\ninterface SelectionState {\n isBold: boolean;\n isItalic: boolean;\n isUnderline: boolean;\n isStrikethrough: boolean;\n isLink: boolean;\n blockType: string;\n}\n"]}
@@ -120,7 +120,7 @@ export class LeTurntable {
120
120
  this.el.style.transform = `rotate(${angle}deg)`;
121
121
  }
122
122
  render() {
123
- return (h("div", { key: '6ac04c3dfb7d2cd26000d1497122fc8c9ba775d3', class: "turntable", onMouseDown: this.handleMouseDown.bind(this) }, h("slot", { key: '18bb701a32e9b3be8e3522351bec99b74d29335d' })));
123
+ return (h("div", { key: '9c762d15b467b7c5fa6170b49581d31104f6e76d', class: "turntable", onMouseDown: this.handleMouseDown.bind(this) }, h("slot", { key: '8d30d85ebf8002771ff05f758b4b4bc6c12b72c2' })));
124
124
  }
125
125
  static get is() { return "le-turntable"; }
126
126
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"le-turntable.js","sourceRoot":"","sources":["../../../src/components/le-turntable/le-turntable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Prop, Listen, h, Watch } from '@stencil/core';\n\n@Component({\n tag: 'le-turntable',\n styleUrl: 'le-turntable.css',\n shadow: true,\n})\nexport class LeTurntable {\n // host element\n @Element() el: HTMLElement;\n\n // transform origin\n // gets the same values as transform-origin css property\n @Prop() center: string = 'center';\n\n // transform rotate\n @Prop() value: number = 0;\n\n @Watch('value')\n updateValue(newValue) {\n if (!this.rotating) {\n this.currentAngle = parseFloat(newValue);\n this.setAngle(this.currentAngle);\n }\n }\n\n /**\n * Internal state\n *\n * using properties instead of @State decoratorm\n * because we are only changing styles of the element and don't\n * need the element to be rerendered\n */\n\n // indicates is the element being manually rotated right now\n rotating = false;\n\n // coordinates of the transform origin in pixels\n centerX: number;\n centerY: number;\n\n // element page (body?) offset in pixels\n pageX: number;\n pageY: number;\n\n currentAngle: number = 0;\n // angle at the start of the drag\n startAngle: number;\n\n /**\n * Event listeners\n */\n handleMouseDown(evt: MouseEvent) {\n // set rotating mode on\n this.rotating = true;\n\n // get start angle\n // getting pageX/Y, because when the element is transformed\n // relative values are useless\n this.startAngle = this.getAngle(evt.pageX, evt.pageY);\n\n // cancel the event to prevent text selection\n evt.preventDefault();\n evt.stopPropagation();\n return false;\n }\n\n /**\n * Fires when the mouse moves\n * checks is the element rotating right now and if it is\n * then calc the current angle and rotate the element\n *\n * TODO: attach events only after the dragStart?\n */\n @Listen('mousemove', { target: 'window' })\n handleMouseMove(evt: MouseEvent) {\n if (this.rotating) {\n // calc angle update and rotate element\n this.setAngle(this.currentAngle + (this.getAngle(evt.pageX, evt.pageY) - this.startAngle));\n return false;\n }\n }\n\n @Listen('mouseup', { target: 'window' })\n handleMouseUp(evt: MouseEvent) {\n if (this.rotating) {\n const angle = this.currentAngle + (this.getAngle(evt.pageX, evt.pageY) - this.startAngle);\n this.setAngle(angle);\n this.currentAngle = angle;\n this.rotating = false;\n return false;\n }\n }\n\n // on window resize the center should be recalculated\n @Listen('resize', { target: 'window' })\n handleWindowResize() {\n this.getTransformOrigin();\n }\n\n /**\n * Component lifecycles\n */\n componentDidLoad() {\n this.el.style.transformOrigin = this.center;\n this.currentAngle = this.value;\n\n this.getTransformOrigin();\n this.setAngle(this.currentAngle);\n }\n\n componentDidUpdate() {\n this.getTransformOrigin();\n }\n\n /**\n * Calculates the transform origin of the component\n * and the page offset in pixels\n *\n * We'll need these values to calculate the angle of pointer event\n */\n getTransformOrigin() {\n // transform origin\n [this.centerX, this.centerY] = window\n .getComputedStyle(this.el, null)\n .transformOrigin.split(' ')\n .map(val => Math.round(parseFloat(val)));\n // page offset\n let t = null;\n const scrollContainer = ((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.scrollLeft === 'number' ? t : document.body;\n const clientRects = this.el.getBoundingClientRect();\n this.pageX = Math.round(clientRects.left + scrollContainer.scrollLeft);\n this.pageY = Math.round(clientRects.top + scrollContainer.scrollTop);\n }\n\n /**\n * Calculates current angle\n *\n * @param {number} posX horizontal mouse position\n * @param {number} posY vertical mouse position\n */\n getAngle(posX: number, posY: number) {\n const x = posX - this.pageX - this.centerX;\n const y = posY - this.pageY - this.centerY;\n const angle = Math.round(((Math.atan2(y, x) * 180) / Math.PI) * 100) / 100;\n return angle;\n }\n\n setAngle(angle) {\n this.el.style.transform = `rotate(${angle}deg)`;\n }\n\n render() {\n return (\n <div class=\"turntable\" onMouseDown={this.handleMouseDown.bind(this)}>\n <slot />\n </div>\n );\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ Assets directory for le-kit components