le-kit 0.1.6 → 0.1.8

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 (289) hide show
  1. package/{dist/le-kit/assets/custom-elements.json → custom-elements.json} +889 -889
  2. package/dist/cjs/{index-WzJ78D5H.js → index-D7B9TPh8.js} +41 -9
  3. package/dist/cjs/index-D7B9TPh8.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +4 -2
  5. package/dist/cjs/index.cjs.js.map +1 -1
  6. package/dist/cjs/le-box.cjs.entry.js +2 -2
  7. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +1 -1
  8. package/dist/cjs/le-button_6.cjs.entry.js +8 -10
  9. package/dist/cjs/le-card.cjs.entry.js +2 -2
  10. package/dist/cjs/le-kit.cjs.js +1 -1
  11. package/dist/cjs/le-number-input.cjs.entry.js +2 -2
  12. package/dist/cjs/le-popup.cjs.entry.js +1 -1
  13. package/dist/cjs/le-round-progress.cjs.entry.js +1 -1
  14. package/dist/cjs/le-stack.cjs.entry.js +2 -2
  15. package/dist/cjs/le-text.cjs.entry.js +2 -2
  16. package/dist/cjs/le-turntable.cjs.entry.js +1 -1
  17. package/dist/cjs/loader.cjs.js +1 -1
  18. package/dist/cjs/{utils-CBjH2E8A.js → utils-DrsoID-a.js} +3 -3
  19. package/dist/cjs/{utils-CBjH2E8A.js.map → utils-DrsoID-a.js.map} +1 -1
  20. package/dist/collection/components/le-component/le-component.js +5 -5
  21. package/dist/collection/components/le-component/le-component.js.map +1 -1
  22. package/dist/collection/components/le-popup/le-popup.js +7 -7
  23. package/dist/collection/components/le-slot/le-slot.js +5 -5
  24. package/dist/collection/components/le-slot/le-slot.js.map +1 -1
  25. package/dist/collection/global/app.js +37 -0
  26. package/dist/collection/global/app.js.map +1 -1
  27. package/dist/collection/index.js +1 -1
  28. package/dist/collection/index.js.map +1 -1
  29. package/dist/components/index.js +1 -1
  30. package/dist/components/index.js.map +1 -1
  31. package/dist/components/le-box.js +1 -1
  32. package/dist/components/le-button.js +1 -1
  33. package/dist/components/le-button2.js +45 -10
  34. package/dist/components/le-button2.js.map +1 -1
  35. package/dist/components/le-card.js +1 -1
  36. package/dist/components/le-checkbox.js +1 -1
  37. package/dist/components/le-component.js +1 -1
  38. package/dist/components/le-number-input.js +1 -1
  39. package/dist/components/le-popup.js +1 -1
  40. package/dist/components/le-slot.js +1 -1
  41. package/dist/components/le-stack.js +1 -1
  42. package/dist/components/le-string-input.js +1 -1
  43. package/dist/components/le-text.js +1 -1
  44. package/dist/core/cjs/index-D7B9TPh8.js +1835 -0
  45. package/dist/core/cjs/index-D7B9TPh8.js.map +1 -0
  46. package/dist/core/cjs/index.cjs.js +119 -0
  47. package/dist/core/cjs/index.cjs.js.map +1 -0
  48. package/dist/core/cjs/le-box.cjs.entry.js +184 -0
  49. package/dist/core/cjs/le-box.entry.cjs.js.map +1 -0
  50. package/dist/core/cjs/le-button.cjs.entry.js +92 -0
  51. package/dist/core/cjs/le-button.entry.cjs.js.map +1 -0
  52. package/dist/core/cjs/le-card.cjs.entry.js +29 -0
  53. package/dist/core/cjs/le-card.entry.cjs.js.map +1 -0
  54. package/dist/core/cjs/le-checkbox.cjs.entry.js +61 -0
  55. package/dist/core/cjs/le-checkbox.entry.cjs.js.map +1 -0
  56. package/dist/core/cjs/le-kit.cjs.js +25 -0
  57. package/dist/core/cjs/le-kit.cjs.js.map +1 -0
  58. package/dist/core/cjs/le-number-input.cjs.entry.js +202 -0
  59. package/dist/core/cjs/le-number-input.entry.cjs.js.map +1 -0
  60. package/dist/core/cjs/le-popover.cjs.entry.js +348 -0
  61. package/dist/core/cjs/le-popover.entry.cjs.js.map +1 -0
  62. package/dist/core/cjs/le-popup.cjs.entry.js +212 -0
  63. package/dist/core/cjs/le-popup.entry.cjs.js.map +1 -0
  64. package/dist/core/cjs/le-round-progress.cjs.entry.js +106 -0
  65. package/dist/core/cjs/le-round-progress.entry.cjs.js.map +1 -0
  66. package/dist/core/cjs/le-stack.cjs.entry.js +135 -0
  67. package/dist/core/cjs/le-stack.entry.cjs.js.map +1 -0
  68. package/dist/core/cjs/le-string-input.cjs.entry.js +95 -0
  69. package/dist/core/cjs/le-string-input.entry.cjs.js.map +1 -0
  70. package/dist/core/cjs/le-text.cjs.entry.js +335 -0
  71. package/dist/core/cjs/le-text.entry.cjs.js.map +1 -0
  72. package/dist/core/cjs/le-turntable.cjs.entry.js +139 -0
  73. package/dist/core/cjs/le-turntable.entry.cjs.js.map +1 -0
  74. package/dist/core/cjs/loader.cjs.js +13 -0
  75. package/dist/core/cjs/loader.cjs.js.map +1 -0
  76. package/dist/core/cjs/utils-DrsoID-a.js +152 -0
  77. package/dist/core/cjs/utils-DrsoID-a.js.map +1 -0
  78. package/dist/core/collection/collection-manifest.json +24 -0
  79. package/dist/core/collection/components/le-box/le-box.default.css +37 -0
  80. package/dist/core/collection/components/le-box/le-box.js +614 -0
  81. package/dist/core/collection/components/le-box/le-box.js.map +1 -0
  82. package/dist/core/collection/components/le-button/le-button.default.css +263 -0
  83. package/dist/core/collection/components/le-button/le-button.js +368 -0
  84. package/dist/core/collection/components/le-button/le-button.js.map +1 -0
  85. package/dist/core/collection/components/le-card/le-card.default.css +74 -0
  86. package/dist/core/collection/components/le-card/le-card.js +102 -0
  87. package/dist/core/collection/components/le-card/le-card.js.map +1 -0
  88. package/dist/core/collection/components/le-checkbox/le-checkbox.css +93 -0
  89. package/dist/core/collection/components/le-checkbox/le-checkbox.js +192 -0
  90. package/dist/core/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  91. package/dist/core/collection/components/le-number-input/le-number-input.css +135 -0
  92. package/dist/core/collection/components/le-number-input/le-number-input.js +515 -0
  93. package/dist/core/collection/components/le-number-input/le-number-input.js.map +1 -0
  94. package/dist/core/collection/components/le-popover/le-popover.css +143 -0
  95. package/dist/core/collection/components/le-popover/le-popover.js +693 -0
  96. package/dist/core/collection/components/le-popover/le-popover.js.map +1 -0
  97. package/dist/core/collection/components/le-popup/le-popup.api.js +101 -0
  98. package/dist/core/collection/components/le-popup/le-popup.api.js.map +1 -0
  99. package/dist/core/collection/components/le-popup/le-popup.css +222 -0
  100. package/dist/core/collection/components/le-popup/le-popup.js +596 -0
  101. package/dist/core/collection/components/le-popup/le-popup.js.map +1 -0
  102. package/dist/core/collection/components/le-round-progress/le-round-progress.css +34 -0
  103. package/dist/core/collection/components/le-round-progress/le-round-progress.js +184 -0
  104. package/dist/core/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  105. package/dist/core/collection/components/le-stack/le-stack.default.css +37 -0
  106. package/dist/core/collection/components/le-stack/le-stack.js +389 -0
  107. package/dist/core/collection/components/le-stack/le-stack.js.map +1 -0
  108. package/dist/core/collection/components/le-string-input/le-string-input.css +83 -0
  109. package/dist/core/collection/components/le-string-input/le-string-input.js +359 -0
  110. package/dist/core/collection/components/le-string-input/le-string-input.js.map +1 -0
  111. package/dist/core/collection/components/le-text/le-text.default.css +169 -0
  112. package/dist/core/collection/components/le-text/le-text.js +475 -0
  113. package/dist/core/collection/components/le-text/le-text.js.map +1 -0
  114. package/dist/core/collection/components/le-turntable/le-turntable.css +10 -0
  115. package/dist/core/collection/components/le-turntable/le-turntable.js +210 -0
  116. package/dist/core/collection/components/le-turntable/le-turntable.js.map +1 -0
  117. package/dist/core/collection/global/app.js +167 -0
  118. package/dist/core/collection/global/app.js.map +1 -0
  119. package/dist/core/collection/index.js +15 -0
  120. package/dist/core/collection/index.js.map +1 -0
  121. package/dist/core/collection/types/blocks.js +115 -0
  122. package/dist/core/collection/types/blocks.js.map +1 -0
  123. package/dist/core/collection/types/options.js +2 -0
  124. package/dist/core/collection/types/options.js.map +1 -0
  125. package/dist/core/collection/utils/utils.js +141 -0
  126. package/dist/core/collection/utils/utils.js.map +1 -0
  127. package/dist/{esm/index-CdjJ98OT.js → core/esm/index-PS-3Rz-c.js} +40 -9
  128. package/dist/core/esm/index-PS-3Rz-c.js.map +1 -0
  129. package/dist/core/esm/index.js +106 -0
  130. package/dist/core/esm/index.js.map +1 -0
  131. package/dist/core/esm/le-box.entry.js +182 -0
  132. package/dist/core/esm/le-box.entry.js.map +1 -0
  133. package/dist/core/esm/le-button.entry.js +90 -0
  134. package/dist/core/esm/le-button.entry.js.map +1 -0
  135. package/dist/core/esm/le-card.entry.js +27 -0
  136. package/dist/core/esm/le-card.entry.js.map +1 -0
  137. package/dist/core/esm/le-checkbox.entry.js +59 -0
  138. package/dist/core/esm/le-checkbox.entry.js.map +1 -0
  139. package/dist/core/esm/le-kit.js +21 -0
  140. package/dist/core/esm/le-kit.js.map +1 -0
  141. package/dist/core/esm/le-number-input.entry.js +200 -0
  142. package/dist/core/esm/le-number-input.entry.js.map +1 -0
  143. package/dist/core/esm/le-popover.entry.js +346 -0
  144. package/dist/core/esm/le-popover.entry.js.map +1 -0
  145. package/dist/core/esm/le-popup.entry.js +210 -0
  146. package/dist/core/esm/le-popup.entry.js.map +1 -0
  147. package/dist/core/esm/le-round-progress.entry.js +104 -0
  148. package/dist/core/esm/le-round-progress.entry.js.map +1 -0
  149. package/dist/core/esm/le-stack.entry.js +133 -0
  150. package/dist/core/esm/le-stack.entry.js.map +1 -0
  151. package/dist/core/esm/le-string-input.entry.js +93 -0
  152. package/dist/core/esm/le-string-input.entry.js.map +1 -0
  153. package/dist/core/esm/le-text.entry.js +333 -0
  154. package/dist/core/esm/le-text.entry.js.map +1 -0
  155. package/dist/core/esm/le-turntable.entry.js +137 -0
  156. package/dist/core/esm/le-turntable.entry.js.map +1 -0
  157. package/dist/core/esm/loader.js +11 -0
  158. package/dist/core/esm/loader.js.map +1 -0
  159. package/dist/{esm/utils-CzfSUhYB.js → core/esm/utils-lgjSfQP0.js} +3 -3
  160. package/dist/core/esm/utils-lgjSfQP0.js.map +1 -0
  161. package/dist/core/index.cjs.js +1 -0
  162. package/dist/core/index.js +1 -0
  163. package/dist/core/le-kit/index.esm.js +2 -0
  164. package/dist/core/le-kit/index.esm.js.map +1 -0
  165. package/dist/core/le-kit/le-box.entry.esm.js.map +1 -0
  166. package/dist/core/le-kit/le-button.entry.esm.js.map +1 -0
  167. package/dist/core/le-kit/le-card.entry.esm.js.map +1 -0
  168. package/dist/core/le-kit/le-checkbox.entry.esm.js.map +1 -0
  169. package/dist/core/le-kit/le-kit.css +1 -0
  170. package/dist/core/le-kit/le-kit.esm.js +2 -0
  171. package/dist/core/le-kit/le-kit.esm.js.map +1 -0
  172. package/dist/core/le-kit/le-number-input.entry.esm.js.map +1 -0
  173. package/dist/core/le-kit/le-popover.entry.esm.js.map +1 -0
  174. package/dist/core/le-kit/le-popup.entry.esm.js.map +1 -0
  175. package/dist/core/le-kit/le-round-progress.entry.esm.js.map +1 -0
  176. package/dist/core/le-kit/le-stack.entry.esm.js.map +1 -0
  177. package/dist/core/le-kit/le-string-input.entry.esm.js.map +1 -0
  178. package/dist/core/le-kit/le-text.entry.esm.js.map +1 -0
  179. package/dist/core/le-kit/le-turntable.entry.esm.js.map +1 -0
  180. package/dist/core/le-kit/loader.esm.js.map +1 -0
  181. package/dist/core/le-kit/p-1c5262eb.entry.js +2 -0
  182. package/dist/core/le-kit/p-1c5262eb.entry.js.map +1 -0
  183. package/dist/core/le-kit/p-32c08678.entry.js +2 -0
  184. package/dist/core/le-kit/p-32c08678.entry.js.map +1 -0
  185. package/dist/core/le-kit/p-38e7ec05.entry.js +2 -0
  186. package/dist/core/le-kit/p-38e7ec05.entry.js.map +1 -0
  187. package/dist/core/le-kit/p-4bf51acc.entry.js +2 -0
  188. package/dist/core/le-kit/p-4bf51acc.entry.js.map +1 -0
  189. package/dist/core/le-kit/p-86961f34.entry.js +2 -0
  190. package/dist/core/le-kit/p-86961f34.entry.js.map +1 -0
  191. package/dist/core/le-kit/p-9ee92c29.entry.js +2 -0
  192. package/dist/{le-kit/p-CvDc0yWN.js → core/le-kit/p-DN2JVY-7.js} +2 -2
  193. package/dist/core/le-kit/p-DN2JVY-7.js.map +1 -0
  194. package/dist/core/le-kit/p-PS-3Rz-c.js +3 -0
  195. package/dist/core/le-kit/p-PS-3Rz-c.js.map +1 -0
  196. package/dist/core/le-kit/p-a07048f8.entry.js +2 -0
  197. package/dist/core/le-kit/p-a07048f8.entry.js.map +1 -0
  198. package/dist/core/le-kit/p-a24b042d.entry.js +2 -0
  199. package/dist/core/le-kit/p-a24b042d.entry.js.map +1 -0
  200. package/dist/core/le-kit/p-bbc9e13e.entry.js +2 -0
  201. package/dist/core/le-kit/p-bbc9e13e.entry.js.map +1 -0
  202. package/dist/core/le-kit/p-c4223c60.entry.js +2 -0
  203. package/dist/core/le-kit/p-c4223c60.entry.js.map +1 -0
  204. package/dist/core/le-kit/p-dcf1343d.entry.js +2 -0
  205. package/dist/core/le-kit/p-fb4e68e0.entry.js +2 -0
  206. package/dist/core/le-kit/p-fb4e68e0.entry.js.map +1 -0
  207. package/dist/core/loader/cdn.js +1 -0
  208. package/dist/core/loader/index.cjs.js +1 -0
  209. package/dist/core/loader/index.d.ts +24 -0
  210. package/dist/core/loader/index.es2017.js +1 -0
  211. package/dist/core/loader/index.js +2 -0
  212. package/dist/core/types/components/le-box/le-box.d.ts +111 -0
  213. package/dist/core/types/components/le-button/le-button.d.ts +78 -0
  214. package/dist/core/types/components/le-card/le-card.d.ts +37 -0
  215. package/dist/core/types/components/le-checkbox/le-checkbox.d.ts +46 -0
  216. package/dist/core/types/components/le-number-input/le-number-input.d.ts +106 -0
  217. package/dist/core/types/components/le-popover/le-popover.d.ts +109 -0
  218. package/dist/core/types/components/le-popup/le-popup.api.d.ts +73 -0
  219. package/dist/core/types/components/le-popup/le-popup.d.ts +122 -0
  220. package/dist/core/types/components/le-round-progress/le-round-progress.d.ts +37 -0
  221. package/dist/core/types/components/le-stack/le-stack.d.ts +73 -0
  222. package/dist/core/types/components/le-string-input/le-string-input.d.ts +83 -0
  223. package/dist/core/types/components/le-text/le-text.d.ts +141 -0
  224. package/dist/core/types/components/le-turntable/le-turntable.d.ts +55 -0
  225. package/dist/core/types/components.d.ts +1752 -0
  226. package/dist/core/types/global/app.d.ts +73 -0
  227. package/dist/core/types/index.d.ts +15 -0
  228. package/dist/core/types/stencil-public-runtime.d.ts +1756 -0
  229. package/dist/core/types/types/blocks.d.ts +136 -0
  230. package/dist/core/types/types/options.d.ts +124 -0
  231. package/dist/core/types/utils/utils.d.ts +54 -0
  232. package/dist/docs.json +8 -8
  233. package/dist/esm/index-PS-3Rz-c.js +1818 -0
  234. package/dist/{le-kit/p-CdjJ98OT.js.map → esm/index-PS-3Rz-c.js.map} +1 -1
  235. package/dist/esm/index.js +2 -2
  236. package/dist/esm/le-box.entry.js +2 -2
  237. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +1 -1
  238. package/dist/esm/le-button_6.entry.js +8 -10
  239. package/dist/esm/le-card.entry.js +2 -2
  240. package/dist/esm/le-kit.js +2 -2
  241. package/dist/esm/le-number-input.entry.js +2 -2
  242. package/dist/esm/le-popup.entry.js +1 -1
  243. package/dist/esm/le-round-progress.entry.js +1 -1
  244. package/dist/esm/le-stack.entry.js +2 -2
  245. package/dist/esm/le-text.entry.js +2 -2
  246. package/dist/esm/le-turntable.entry.js +1 -1
  247. package/dist/esm/loader.js +2 -2
  248. package/dist/esm/utils-lgjSfQP0.js +146 -0
  249. package/dist/esm/{utils-CzfSUhYB.js.map → utils-lgjSfQP0.js.map} +1 -1
  250. package/dist/le-kit/index.esm.js +1 -1
  251. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +1 -1
  252. package/dist/le-kit/le-kit.esm.js +1 -1
  253. package/dist/le-kit/p-27710b5b.entry.js +2 -0
  254. package/dist/le-kit/{p-0633b3ab.entry.js.map → p-27710b5b.entry.js.map} +1 -1
  255. package/dist/le-kit/{p-1452a995.entry.js → p-34102cef.entry.js} +2 -2
  256. package/dist/le-kit/{p-95764888.entry.js → p-56a80e6d.entry.js} +2 -2
  257. package/dist/le-kit/p-615ea10f.entry.js +2 -0
  258. package/dist/le-kit/p-615ea10f.entry.js.map +1 -0
  259. package/dist/le-kit/{p-bc20e30d.entry.js → p-935bb2d4.entry.js} +2 -2
  260. package/dist/le-kit/{p-220528ee.entry.js → p-9d3dc4e5.entry.js} +2 -2
  261. package/dist/le-kit/p-DN2JVY-7.js +2 -0
  262. package/dist/le-kit/{p-CvDc0yWN.js.map → p-DN2JVY-7.js.map} +1 -1
  263. package/dist/le-kit/p-PS-3Rz-c.js +3 -0
  264. package/dist/le-kit/p-PS-3Rz-c.js.map +1 -0
  265. package/dist/le-kit/{p-3551598e.entry.js → p-ccabc638.entry.js} +2 -2
  266. package/dist/le-kit/p-ccabc638.entry.js.map +1 -0
  267. package/dist/le-kit/{p-722899f0.entry.js → p-d8157b06.entry.js} +2 -2
  268. package/dist/le-kit/p-d8157b06.entry.js.map +1 -0
  269. package/dist/le-kit/p-e8c2ca0e.entry.js +2 -0
  270. package/dist/le-kit/{p-d32eddad.entry.js.map → p-e8c2ca0e.entry.js.map} +1 -1
  271. package/dist/types/global/app.d.ts +33 -0
  272. package/dist/types/index.d.ts +1 -1
  273. package/package.json +21 -3
  274. package/readme.md +22 -0
  275. package/dist/cjs/index-WzJ78D5H.js.map +0 -1
  276. package/dist/collection/assets/.gitkeep +0 -1
  277. package/dist/collection/assets/custom-elements.json +0 -4305
  278. package/dist/esm/index-CdjJ98OT.js.map +0 -1
  279. package/dist/le-kit/p-0633b3ab.entry.js +0 -2
  280. package/dist/le-kit/p-32ff3dbe.entry.js +0 -2
  281. package/dist/le-kit/p-32ff3dbe.entry.js.map +0 -1
  282. package/dist/le-kit/p-CdjJ98OT.js +0 -3
  283. package/dist/le-kit/p-d32eddad.entry.js +0 -2
  284. /package/dist/{le-kit/p-3551598e.entry.js.map → core/le-kit/p-9ee92c29.entry.js.map} +0 -0
  285. /package/dist/{le-kit/p-722899f0.entry.js.map → core/le-kit/p-dcf1343d.entry.js.map} +0 -0
  286. /package/dist/le-kit/{p-1452a995.entry.js.map → p-34102cef.entry.js.map} +0 -0
  287. /package/dist/le-kit/{p-95764888.entry.js.map → p-56a80e6d.entry.js.map} +0 -0
  288. /package/dist/le-kit/{p-bc20e30d.entry.js.map → p-935bb2d4.entry.js.map} +0 -0
  289. /package/dist/le-kit/{p-220528ee.entry.js.map → p-9d3dc4e5.entry.js.map} +0 -0
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Default mode styles for le-button
3
+ * Uses global design tokens with component-specific overrides
4
+ */
5
+ :host {
6
+ display: inline-block;
7
+
8
+ /* Component-specific tokens */
9
+ --le-button-border-radius: var(--le-radius-md);
10
+ --le-button-padding-x: 0.4rem;
11
+ --le-button-padding-y: 0.4rem;
12
+ --le-button-small-padding: 0.25rem;
13
+ --le-button-font-size: var(--le-font-size-md);
14
+ --le-button-font-weight: var(--le-font-weight-medium);
15
+ --le-button-transition: var(--le-transition-fast);
16
+ --le-button-icon-aspect-ratio: 1;
17
+
18
+ /* Internal state variables - set by color classes */
19
+ --_btn-bg: var(--le-color-primary);
20
+ --_btn-bg-hover: var(--le-color-primary-dark);
21
+ --_btn-bg-system: var(--le-color-black);
22
+ --_btn-color: var(--le-color-primary-contrast);
23
+ --_btn-border-color: var(--le-color-primary);
24
+ }
25
+
26
+ :host([full-width]) {
27
+ display: block;
28
+ width: 100%;
29
+ }
30
+
31
+ .button {
32
+ display: inline-flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ gap: var(--le-spacing-3);
36
+ width: 100%;
37
+ padding: var(--le-button-padding-y) var(--le-button-padding-x);
38
+ border: 1px solid var(--_btn-border-color);
39
+ border-radius: var(--le-button-border-radius);
40
+ background: var(--_btn-bg);
41
+ color: var(--_btn-color);
42
+ font-family: var(--le-font-family-base);
43
+ font-size: var(--le-button-font-size);
44
+ font-weight: var(--le-button-font-weight);
45
+ line-height: var(--le-line-height-tight);
46
+ text-decoration: none;
47
+ cursor: pointer;
48
+ transition:
49
+ background-color var(--le-button-transition) var(--le-transition-easing),
50
+ border-color var(--le-button-transition) var(--le-transition-easing),
51
+ box-shadow var(--le-button-transition) var(--le-transition-easing),
52
+ transform var(--le-button-transition) var(--le-transition-easing);
53
+ }
54
+
55
+ .button:hover:not(:disabled) {
56
+ background: var(--_btn-bg-hover);
57
+ border-color: var(--_btn-bg-hover);
58
+ }
59
+
60
+ .button:active:not(:disabled) {
61
+ transform: translateY(1px);
62
+ }
63
+
64
+ .button:focus-visible {
65
+ outline: 2px solid var(--le-color-focus);
66
+ outline-offset: 2px;
67
+ }
68
+
69
+ .button:disabled {
70
+ opacity: 0.5;
71
+ cursor: not-allowed;
72
+ }
73
+
74
+ /* ===========================================
75
+ * COLOR VARIANTS - Use theme semantic colors
76
+ * =========================================== */
77
+
78
+ /* Primary (default) */
79
+ :host > le-component.color-primary {
80
+ --_btn-bg: var(--le-color-primary);
81
+ --_btn-bg-hover: var(--le-color-primary-dark);
82
+ --_btn-color: var(--le-color-primary-contrast);
83
+ --_btn-border-color: var(--le-color-primary);
84
+ }
85
+
86
+ /* Secondary */
87
+ :host > le-component.color-secondary {
88
+ --_btn-bg: var(--le-color-secondary);
89
+ --_btn-bg-hover: var(--le-color-secondary-dark);
90
+ --_btn-color: var(--le-color-secondary-contrast);
91
+ --_btn-border-color: var(--le-color-secondary);
92
+ }
93
+
94
+ /* Success */
95
+ :host > le-component.color-success {
96
+ --_btn-bg: var(--le-color-success);
97
+ --_btn-bg-hover: var(--le-color-success-dark);
98
+ --_btn-color: var(--le-color-success-contrast);
99
+ --_btn-border-color: var(--le-color-success);
100
+ }
101
+
102
+ /* Warning */
103
+ :host > le-component.color-warning {
104
+ --_btn-bg: var(--le-color-warning);
105
+ --_btn-bg-hover: var(--le-color-warning-dark);
106
+ --_btn-color: var(--le-color-warning-contrast);
107
+ --_btn-border-color: var(--le-color-warning);
108
+ }
109
+
110
+ /* Danger */
111
+ :host > le-component.color-danger {
112
+ --_btn-bg: var(--le-color-danger);
113
+ --_btn-bg-hover: var(--le-color-danger-dark);
114
+ --_btn-color: var(--le-color-danger-contrast);
115
+ --_btn-border-color: var(--le-color-danger);
116
+ }
117
+
118
+ /* Info */
119
+ :host > le-component.color-info {
120
+ --_btn-bg: var(--le-color-info);
121
+ --_btn-bg-hover: var(--le-color-info-dark);
122
+ --_btn-color: var(--le-color-info-contrast);
123
+ --_btn-border-color: var(--le-color-info);
124
+ }
125
+
126
+ /* ===========================================
127
+ * STYLE VARIANTS
128
+ * =========================================== */
129
+
130
+ /* Solid (default) - already styled by color classes */
131
+ :host > le-component.variant-solid .button {
132
+ box-shadow: var(--le-shadow-sm);
133
+ }
134
+
135
+ :host > le-component.variant-solid .button:hover:not(:disabled) {
136
+ box-shadow: var(--le-shadow-md);
137
+ }
138
+
139
+ /* Outlined */
140
+ :host > le-component.variant-outlined .button {
141
+ background: transparent;
142
+ color: var(--_btn-bg);
143
+ border-color: var(--_btn-border-color);
144
+ }
145
+
146
+ :host > le-component.variant-outlined .button:hover:not(:disabled) {
147
+ background: var(--_btn-bg);
148
+ color: var(--_btn-color);
149
+ }
150
+
151
+ /* Clear (ghost) */
152
+ :host > le-component.variant-clear .button {
153
+ background: transparent;
154
+ color: var(--_btn-bg);
155
+ border-color: transparent;
156
+ }
157
+
158
+ :host > le-component.variant-clear .button:hover:not(:disabled) {
159
+ background: var(--le-color-gray-100);
160
+ border-color: transparent;
161
+ }
162
+
163
+ /* System (controls without access) */
164
+ :host > le-component.variant-system .button {
165
+ background: transparent;
166
+ color: var(--_btn-bg-system);
167
+ border-color: transparent;
168
+ }
169
+
170
+ /* ===========================================
171
+ * SIZES
172
+ * =========================================== */
173
+ :host > le-component.size-small .button {
174
+ --le-button-padding-x: 0.4rem;
175
+ --le-button-padding-y: 0.3rem;
176
+ --le-button-padding-top: 0.35rem;
177
+ --le-button-font-size: var(--le-button-small-font-size, var(--le-font-size-xs));
178
+ }
179
+
180
+ :host > le-component.size-large .button {
181
+ --le-button-padding-x: 0.9rem;
182
+ --le-button-padding-y: 0.6rem;
183
+ --le-button-font-size: var(--le-font-size-xl);
184
+ }
185
+
186
+ /* ===========================================
187
+ * STATES & MODIFIERS
188
+ * =========================================== */
189
+
190
+ /* Full width */
191
+ :host > le-component.full-width {
192
+ display: block;
193
+ width: 100%;
194
+ }
195
+
196
+ /* Selected state */
197
+ :host > le-component.selected .button {
198
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
199
+ }
200
+
201
+ :host > le-component.variant-outlined.selected .button,
202
+ :host > le-component.variant-clear.selected .button {
203
+ background: var(--_btn-bg);
204
+ color: var(--_btn-color);
205
+ }
206
+
207
+ /* Icon only */
208
+ :host > le-component.icon-only .button {
209
+ padding: 0.5rem;
210
+ padding-bottom: 0.6rem;
211
+ aspect-ratio: var(--le-button-icon-aspect-ratio, 1);
212
+ }
213
+
214
+ :host > le-component.icon-only.size-small .button {
215
+ padding: var(--le-button-small-padding, 0.25rem);
216
+ }
217
+
218
+ :host > le-component.icon-only.size-large .button {
219
+ padding: 0.75rem;
220
+ }
221
+
222
+ /* Hide content in icon-only mode */
223
+ :host > le-component.icon-only .content {
224
+ display: none;
225
+ }
226
+
227
+ /* ===========================================
228
+ * CONTENT (le-slot wrapper)
229
+ * =========================================== */
230
+ .content {
231
+ display: inline;
232
+ }
233
+
234
+ .content:empty {
235
+ display: none;
236
+ }
237
+
238
+ /* ===========================================
239
+ * ICON WRAPPERS & SLOTS
240
+ * =========================================== */
241
+ .icon-start,
242
+ .icon-only,
243
+ .icon-end {
244
+ display: flex;
245
+ align-items: center;
246
+ justify-content: center;
247
+ }
248
+
249
+ .icon-start:empty,
250
+ .icon-only:empty,
251
+ .icon-end:empty {
252
+ display: none;
253
+ }
254
+
255
+ ::slotted([slot="icon-start"]),
256
+ ::slotted([slot="icon-only"]),
257
+ ::slotted([slot="icon-end"]) {
258
+ display: flex;
259
+ align-items: center;
260
+ justify-content: center;
261
+ width: 1.125em;
262
+ height: 1.125em;
263
+ }
@@ -0,0 +1,368 @@
1
+ import { h, Fragment, Host } from "@stencil/core";
2
+ import { classnames } from "../../utils/utils";
3
+ /**
4
+ * A flexible button component with multiple variants and states.
5
+ *
6
+ * @slot - Button text content
7
+ * @slot icon-start - Icon before the text
8
+ * @slot icon-end - Icon after the text
9
+ *
10
+ * @cssprop --le-button-bg - Button background color
11
+ * @cssprop --le-button-color - Button text color
12
+ * @cssprop --le-button-border-radius - Button border radius
13
+ * @cssprop --le-button-padding-x - Button horizontal padding
14
+ * @cssprop --le-button-padding-y - Button vertical padding
15
+ *
16
+ * @csspart button - The native button element
17
+ * @csspart content - The button content wrapper
18
+ *
19
+ * @cmsEditable true
20
+ * @cmsCategory Actions
21
+ */
22
+ export class LeButton {
23
+ el;
24
+ /**
25
+ * Mode of the popover should be 'default' for internal use
26
+ */
27
+ mode;
28
+ /**
29
+ * Button variant style
30
+ * @allowedValues solid | outlined | clear
31
+ */
32
+ variant = 'solid';
33
+ /**
34
+ * Button color theme (uses theme semantic colors)
35
+ * @allowedValues primary | secondary | success | warning | danger | info
36
+ */
37
+ color = 'primary';
38
+ /**
39
+ * Button size
40
+ * @allowedValues small | medium | large
41
+ */
42
+ size = 'medium';
43
+ /**
44
+ * Whether the button is in a selected/active state
45
+ */
46
+ selected = false;
47
+ /**
48
+ * Whether the button takes full width of its container
49
+ */
50
+ fullWidth = false;
51
+ /**
52
+ * Whether the button displays only an icon (square aspect ratio)
53
+ */
54
+ iconOnly = false;
55
+ /**
56
+ * Whether the button is disabled
57
+ */
58
+ disabled = false;
59
+ /**
60
+ * The button type attribute
61
+ * @allowedValues button | submit | reset
62
+ */
63
+ type = 'button';
64
+ /**
65
+ * Optional href to make the button act as a link
66
+ */
67
+ href;
68
+ /**
69
+ * Link target when href is set
70
+ */
71
+ target;
72
+ /**
73
+ * Emitted when the button is clicked.
74
+ * This is a custom event that wraps the native click but ensures the target is the le-button.
75
+ */
76
+ leClick;
77
+ handleClick = (event) => {
78
+ // We stop the internal button click from bubbling up
79
+ event.stopPropagation();
80
+ if (this.disabled) {
81
+ event.preventDefault();
82
+ return;
83
+ }
84
+ // And emit our own click event from the host element
85
+ this.leClick.emit(event);
86
+ };
87
+ render() {
88
+ const classes = classnames(`variant-${this.variant}`, `color-${this.color}`, `size-${this.size}`, {
89
+ 'selected': this.selected,
90
+ 'full-width': this.fullWidth,
91
+ 'icon-only': this.iconOnly,
92
+ 'disabled': this.disabled,
93
+ });
94
+ const TagType = this.href ? 'a' : 'button';
95
+ const attrs = this.href ? { href: this.href, target: this.target, role: 'button' } : { type: this.type, disabled: this.disabled };
96
+ return (h(Host, { key: 'b33f47d87026e4b76837f8ae9f7d51d22d1f86d9', class: classes }, h(TagType, { key: 'ad711cfb6c04e258761db1f724fdef2a67d91933', class: "button", part: "button", ...attrs, onClick: this.handleClick }, this.iconOnly ? (h("span", { class: "icon-start" }, h("slot", { name: "icon-only" }))) : (h(Fragment, null, h("span", { class: "icon-start" }, h("slot", { name: "icon-start" })), h("slot", null), h("span", { class: "icon-end" }, h("slot", { name: "icon-end" })))))));
97
+ }
98
+ static get is() { return "le-button"; }
99
+ static get encapsulation() { return "shadow"; }
100
+ static get originalStyleUrls() {
101
+ return {
102
+ "$": ["le-button.default.css"]
103
+ };
104
+ }
105
+ static get styleUrls() {
106
+ return {
107
+ "$": ["le-button.default.css"]
108
+ };
109
+ }
110
+ static get properties() {
111
+ return {
112
+ "mode": {
113
+ "type": "string",
114
+ "mutable": true,
115
+ "complexType": {
116
+ "original": "'default' | 'admin'",
117
+ "resolved": "\"admin\" | \"default\"",
118
+ "references": {}
119
+ },
120
+ "required": false,
121
+ "optional": false,
122
+ "docs": {
123
+ "tags": [],
124
+ "text": "Mode of the popover should be 'default' for internal use"
125
+ },
126
+ "getter": false,
127
+ "setter": false,
128
+ "reflect": true,
129
+ "attribute": "mode"
130
+ },
131
+ "variant": {
132
+ "type": "string",
133
+ "mutable": false,
134
+ "complexType": {
135
+ "original": "'solid' | 'outlined' | 'clear' | 'system'",
136
+ "resolved": "\"clear\" | \"outlined\" | \"solid\" | \"system\"",
137
+ "references": {}
138
+ },
139
+ "required": false,
140
+ "optional": false,
141
+ "docs": {
142
+ "tags": [{
143
+ "name": "allowedValues",
144
+ "text": "solid | outlined | clear"
145
+ }],
146
+ "text": "Button variant style"
147
+ },
148
+ "getter": false,
149
+ "setter": false,
150
+ "reflect": false,
151
+ "attribute": "variant",
152
+ "defaultValue": "'solid'"
153
+ },
154
+ "color": {
155
+ "type": "string",
156
+ "mutable": false,
157
+ "complexType": {
158
+ "original": "'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info'",
159
+ "resolved": "\"danger\" | \"info\" | \"primary\" | \"secondary\" | \"success\" | \"warning\"",
160
+ "references": {}
161
+ },
162
+ "required": false,
163
+ "optional": false,
164
+ "docs": {
165
+ "tags": [{
166
+ "name": "allowedValues",
167
+ "text": "primary | secondary | success | warning | danger | info"
168
+ }],
169
+ "text": "Button color theme (uses theme semantic colors)"
170
+ },
171
+ "getter": false,
172
+ "setter": false,
173
+ "reflect": false,
174
+ "attribute": "color",
175
+ "defaultValue": "'primary'"
176
+ },
177
+ "size": {
178
+ "type": "string",
179
+ "mutable": false,
180
+ "complexType": {
181
+ "original": "'small' | 'medium' | 'large'",
182
+ "resolved": "\"large\" | \"medium\" | \"small\"",
183
+ "references": {}
184
+ },
185
+ "required": false,
186
+ "optional": false,
187
+ "docs": {
188
+ "tags": [{
189
+ "name": "allowedValues",
190
+ "text": "small | medium | large"
191
+ }],
192
+ "text": "Button size"
193
+ },
194
+ "getter": false,
195
+ "setter": false,
196
+ "reflect": false,
197
+ "attribute": "size",
198
+ "defaultValue": "'medium'"
199
+ },
200
+ "selected": {
201
+ "type": "boolean",
202
+ "mutable": false,
203
+ "complexType": {
204
+ "original": "boolean",
205
+ "resolved": "boolean",
206
+ "references": {}
207
+ },
208
+ "required": false,
209
+ "optional": false,
210
+ "docs": {
211
+ "tags": [],
212
+ "text": "Whether the button is in a selected/active state"
213
+ },
214
+ "getter": false,
215
+ "setter": false,
216
+ "reflect": false,
217
+ "attribute": "selected",
218
+ "defaultValue": "false"
219
+ },
220
+ "fullWidth": {
221
+ "type": "boolean",
222
+ "mutable": false,
223
+ "complexType": {
224
+ "original": "boolean",
225
+ "resolved": "boolean",
226
+ "references": {}
227
+ },
228
+ "required": false,
229
+ "optional": false,
230
+ "docs": {
231
+ "tags": [],
232
+ "text": "Whether the button takes full width of its container"
233
+ },
234
+ "getter": false,
235
+ "setter": false,
236
+ "reflect": true,
237
+ "attribute": "full-width",
238
+ "defaultValue": "false"
239
+ },
240
+ "iconOnly": {
241
+ "type": "boolean",
242
+ "mutable": false,
243
+ "complexType": {
244
+ "original": "boolean",
245
+ "resolved": "boolean",
246
+ "references": {}
247
+ },
248
+ "required": false,
249
+ "optional": false,
250
+ "docs": {
251
+ "tags": [],
252
+ "text": "Whether the button displays only an icon (square aspect ratio)"
253
+ },
254
+ "getter": false,
255
+ "setter": false,
256
+ "reflect": false,
257
+ "attribute": "icon-only",
258
+ "defaultValue": "false"
259
+ },
260
+ "disabled": {
261
+ "type": "boolean",
262
+ "mutable": false,
263
+ "complexType": {
264
+ "original": "boolean",
265
+ "resolved": "boolean",
266
+ "references": {}
267
+ },
268
+ "required": false,
269
+ "optional": false,
270
+ "docs": {
271
+ "tags": [],
272
+ "text": "Whether the button is disabled"
273
+ },
274
+ "getter": false,
275
+ "setter": false,
276
+ "reflect": false,
277
+ "attribute": "disabled",
278
+ "defaultValue": "false"
279
+ },
280
+ "type": {
281
+ "type": "string",
282
+ "mutable": false,
283
+ "complexType": {
284
+ "original": "'button' | 'submit' | 'reset'",
285
+ "resolved": "\"button\" | \"reset\" | \"submit\"",
286
+ "references": {}
287
+ },
288
+ "required": false,
289
+ "optional": false,
290
+ "docs": {
291
+ "tags": [{
292
+ "name": "allowedValues",
293
+ "text": "button | submit | reset"
294
+ }],
295
+ "text": "The button type attribute"
296
+ },
297
+ "getter": false,
298
+ "setter": false,
299
+ "reflect": false,
300
+ "attribute": "type",
301
+ "defaultValue": "'button'"
302
+ },
303
+ "href": {
304
+ "type": "string",
305
+ "mutable": false,
306
+ "complexType": {
307
+ "original": "string",
308
+ "resolved": "string",
309
+ "references": {}
310
+ },
311
+ "required": false,
312
+ "optional": true,
313
+ "docs": {
314
+ "tags": [],
315
+ "text": "Optional href to make the button act as a link"
316
+ },
317
+ "getter": false,
318
+ "setter": false,
319
+ "reflect": false,
320
+ "attribute": "href"
321
+ },
322
+ "target": {
323
+ "type": "string",
324
+ "mutable": false,
325
+ "complexType": {
326
+ "original": "string",
327
+ "resolved": "string",
328
+ "references": {}
329
+ },
330
+ "required": false,
331
+ "optional": true,
332
+ "docs": {
333
+ "tags": [],
334
+ "text": "Link target when href is set"
335
+ },
336
+ "getter": false,
337
+ "setter": false,
338
+ "reflect": false,
339
+ "attribute": "target"
340
+ }
341
+ };
342
+ }
343
+ static get events() {
344
+ return [{
345
+ "method": "leClick",
346
+ "name": "click",
347
+ "bubbles": true,
348
+ "cancelable": true,
349
+ "composed": true,
350
+ "docs": {
351
+ "tags": [],
352
+ "text": "Emitted when the button is clicked.\nThis is a custom event that wraps the native click but ensures the target is the le-button."
353
+ },
354
+ "complexType": {
355
+ "original": "PointerEvent",
356
+ "resolved": "PointerEvent",
357
+ "references": {
358
+ "PointerEvent": {
359
+ "location": "global",
360
+ "id": "global::PointerEvent"
361
+ }
362
+ }
363
+ }
364
+ }];
365
+ }
366
+ static get elementRef() { return "el"; }
367
+ }
368
+ //# sourceMappingURL=le-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"le-button.js","sourceRoot":"","sources":["../../../src-core/components/le-button/le-button.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, Fragment, Event, EventEmitter , Host } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A flexible button component with multiple variants and states.\n *\n * @slot - Button text content\n * @slot icon-start - Icon before the text\n * @slot icon-end - Icon after the text\n *\n * @cssprop --le-button-bg - Button background color\n * @cssprop --le-button-color - Button text color\n * @cssprop --le-button-border-radius - Button border radius\n * @cssprop --le-button-padding-x - Button horizontal padding\n * @cssprop --le-button-padding-y - Button vertical padding\n *\n * @csspart button - The native button element\n * @csspart content - The button content wrapper\n *\n * @cmsEditable true\n * @cmsCategory Actions\n */\n@Component({\n tag: 'le-button',\n styleUrl: 'le-button.default.css',\n shadow: true,\n})\nexport class LeButton {\n @Element() el: HTMLElement;\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 * Button variant style\n * @allowedValues solid | outlined | clear\n */\n @Prop() variant: 'solid' | 'outlined' | 'clear' | 'system' = 'solid';\n\n /**\n * Button color theme (uses theme semantic colors)\n * @allowedValues primary | secondary | success | warning | danger | info\n */\n @Prop() color: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' = 'primary';\n\n /**\n * Button size\n * @allowedValues small | medium | large\n */\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the button is in a selected/active state\n */\n @Prop() selected: boolean = false;\n\n /**\n * Whether the button takes full width of its container\n */\n @Prop({ reflect: true }) fullWidth: boolean = false;\n\n /**\n * Whether the button displays only an icon (square aspect ratio)\n */\n @Prop() iconOnly: boolean = false;\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The button type attribute\n * @allowedValues button | submit | reset\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * Optional href to make the button act as a link\n */\n @Prop() href?: string;\n\n /**\n * Link target when href is set\n */\n @Prop() target?: string;\n\n /**\n * Emitted when the button is clicked.\n * This is a custom event that wraps the native click but ensures the target is the le-button.\n */\n @Event({ eventName: 'click' }) leClick: EventEmitter<PointerEvent>;\n\n private handleClick = (event: PointerEvent) => {\n // We stop the internal button click from bubbling up\n event.stopPropagation();\n\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n \n // And emit our own click event from the host element\n this.leClick.emit(event);\n };\n\n render() {\n const classes = classnames(`variant-${this.variant}`, `color-${this.color}`, `size-${this.size}`, {\n 'selected': this.selected,\n 'full-width': this.fullWidth,\n 'icon-only': this.iconOnly,\n 'disabled': this.disabled,\n });\n\n const TagType = this.href ? 'a' : 'button';\n const attrs = this.href ? { href: this.href, target: this.target, role: 'button' } : { type: this.type, disabled: this.disabled };\n\n return (\n <Host class={classes}>\n <TagType class=\"button\" part=\"button\" {...attrs} onClick={this.handleClick}>\n {this.iconOnly ? (\n <span class=\"icon-start\">\n <slot name=\"icon-only\"></slot>\n </span>\n ) : (\n <Fragment>\n <span class=\"icon-start\">\n <slot name=\"icon-start\"></slot>\n </span>\n \n <slot></slot>\n \n <span class=\"icon-end\">\n <slot name=\"icon-end\"></slot>\n </span>\n </Fragment>\n )}\n </TagType>\n </Host>\n );\n }\n}\n"]}