le-kit 0.1.7 → 0.1.9

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 (198) hide show
  1. package/custom-elements.json +1135 -1135
  2. package/dist/cjs/index-D7B9TPh8.js.map +1 -1
  3. package/dist/collection/components/le-popup/le-popup.js +7 -7
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core/cjs/index-D7B9TPh8.js +1835 -0
  6. package/dist/core/cjs/index-D7B9TPh8.js.map +1 -0
  7. package/dist/core/cjs/index.cjs.js +119 -0
  8. package/dist/core/cjs/index.cjs.js.map +1 -0
  9. package/dist/core/cjs/le-box.cjs.entry.js +184 -0
  10. package/dist/core/cjs/le-box.entry.cjs.js.map +1 -0
  11. package/dist/core/cjs/le-button.cjs.entry.js +92 -0
  12. package/dist/core/cjs/le-button.entry.cjs.js.map +1 -0
  13. package/dist/core/cjs/le-card.cjs.entry.js +29 -0
  14. package/dist/core/cjs/le-card.entry.cjs.js.map +1 -0
  15. package/dist/core/cjs/le-checkbox.cjs.entry.js +61 -0
  16. package/dist/core/cjs/le-checkbox.entry.cjs.js.map +1 -0
  17. package/dist/core/cjs/le-kit.cjs.js +25 -0
  18. package/dist/core/cjs/le-kit.cjs.js.map +1 -0
  19. package/dist/core/cjs/le-number-input.cjs.entry.js +202 -0
  20. package/dist/core/cjs/le-number-input.entry.cjs.js.map +1 -0
  21. package/dist/core/cjs/le-popover.cjs.entry.js +348 -0
  22. package/dist/core/cjs/le-popover.entry.cjs.js.map +1 -0
  23. package/dist/core/cjs/le-popup.cjs.entry.js +212 -0
  24. package/dist/core/cjs/le-popup.entry.cjs.js.map +1 -0
  25. package/dist/core/cjs/le-round-progress.cjs.entry.js +106 -0
  26. package/dist/core/cjs/le-round-progress.entry.cjs.js.map +1 -0
  27. package/dist/core/cjs/le-stack.cjs.entry.js +135 -0
  28. package/dist/core/cjs/le-stack.entry.cjs.js.map +1 -0
  29. package/dist/core/cjs/le-string-input.cjs.entry.js +95 -0
  30. package/dist/core/cjs/le-string-input.entry.cjs.js.map +1 -0
  31. package/dist/core/cjs/le-text.cjs.entry.js +335 -0
  32. package/dist/core/cjs/le-text.entry.cjs.js.map +1 -0
  33. package/dist/core/cjs/le-turntable.cjs.entry.js +139 -0
  34. package/dist/core/cjs/le-turntable.entry.cjs.js.map +1 -0
  35. package/dist/core/cjs/loader.cjs.js +13 -0
  36. package/dist/core/cjs/loader.cjs.js.map +1 -0
  37. package/dist/core/cjs/utils-DrsoID-a.js +152 -0
  38. package/dist/core/cjs/utils-DrsoID-a.js.map +1 -0
  39. package/dist/core/collection/collection-manifest.json +24 -0
  40. package/dist/core/collection/components/le-box/le-box.default.css +37 -0
  41. package/dist/core/collection/components/le-box/le-box.js +614 -0
  42. package/dist/core/collection/components/le-box/le-box.js.map +1 -0
  43. package/dist/core/collection/components/le-button/le-button.default.css +263 -0
  44. package/dist/core/collection/components/le-button/le-button.js +368 -0
  45. package/dist/core/collection/components/le-button/le-button.js.map +1 -0
  46. package/dist/core/collection/components/le-card/le-card.default.css +74 -0
  47. package/dist/core/collection/components/le-card/le-card.js +102 -0
  48. package/dist/core/collection/components/le-card/le-card.js.map +1 -0
  49. package/dist/core/collection/components/le-checkbox/le-checkbox.css +93 -0
  50. package/dist/core/collection/components/le-checkbox/le-checkbox.js +192 -0
  51. package/dist/core/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  52. package/dist/core/collection/components/le-number-input/le-number-input.css +135 -0
  53. package/dist/core/collection/components/le-number-input/le-number-input.js +515 -0
  54. package/dist/core/collection/components/le-number-input/le-number-input.js.map +1 -0
  55. package/dist/core/collection/components/le-popover/le-popover.css +143 -0
  56. package/dist/core/collection/components/le-popover/le-popover.js +693 -0
  57. package/dist/core/collection/components/le-popover/le-popover.js.map +1 -0
  58. package/dist/core/collection/components/le-popup/le-popup.api.js +101 -0
  59. package/dist/core/collection/components/le-popup/le-popup.api.js.map +1 -0
  60. package/dist/core/collection/components/le-popup/le-popup.css +222 -0
  61. package/dist/core/collection/components/le-popup/le-popup.js +596 -0
  62. package/dist/core/collection/components/le-popup/le-popup.js.map +1 -0
  63. package/dist/core/collection/components/le-round-progress/le-round-progress.css +34 -0
  64. package/dist/core/collection/components/le-round-progress/le-round-progress.js +184 -0
  65. package/dist/core/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  66. package/dist/core/collection/components/le-stack/le-stack.default.css +37 -0
  67. package/dist/core/collection/components/le-stack/le-stack.js +389 -0
  68. package/dist/core/collection/components/le-stack/le-stack.js.map +1 -0
  69. package/dist/core/collection/components/le-string-input/le-string-input.css +83 -0
  70. package/dist/core/collection/components/le-string-input/le-string-input.js +359 -0
  71. package/dist/core/collection/components/le-string-input/le-string-input.js.map +1 -0
  72. package/dist/core/collection/components/le-text/le-text.default.css +169 -0
  73. package/dist/core/collection/components/le-text/le-text.js +475 -0
  74. package/dist/core/collection/components/le-text/le-text.js.map +1 -0
  75. package/dist/core/collection/components/le-turntable/le-turntable.css +10 -0
  76. package/dist/core/collection/components/le-turntable/le-turntable.js +210 -0
  77. package/dist/core/collection/components/le-turntable/le-turntable.js.map +1 -0
  78. package/dist/core/collection/global/app.js +167 -0
  79. package/dist/core/collection/global/app.js.map +1 -0
  80. package/dist/core/collection/index.js +15 -0
  81. package/dist/core/collection/index.js.map +1 -0
  82. package/dist/core/collection/types/blocks.js +115 -0
  83. package/dist/core/collection/types/blocks.js.map +1 -0
  84. package/dist/core/collection/types/options.js +2 -0
  85. package/dist/core/collection/types/options.js.map +1 -0
  86. package/dist/core/collection/utils/utils.js +141 -0
  87. package/dist/core/collection/utils/utils.js.map +1 -0
  88. package/dist/core/esm/index-PS-3Rz-c.js +1818 -0
  89. package/dist/core/esm/index-PS-3Rz-c.js.map +1 -0
  90. package/dist/core/esm/index.js +106 -0
  91. package/dist/core/esm/index.js.map +1 -0
  92. package/dist/core/esm/le-box.entry.js +182 -0
  93. package/dist/core/esm/le-box.entry.js.map +1 -0
  94. package/dist/core/esm/le-button.entry.js +90 -0
  95. package/dist/core/esm/le-button.entry.js.map +1 -0
  96. package/dist/core/esm/le-card.entry.js +27 -0
  97. package/dist/core/esm/le-card.entry.js.map +1 -0
  98. package/dist/core/esm/le-checkbox.entry.js +59 -0
  99. package/dist/core/esm/le-checkbox.entry.js.map +1 -0
  100. package/dist/core/esm/le-kit.js +21 -0
  101. package/dist/core/esm/le-kit.js.map +1 -0
  102. package/dist/core/esm/le-number-input.entry.js +200 -0
  103. package/dist/core/esm/le-number-input.entry.js.map +1 -0
  104. package/dist/core/esm/le-popover.entry.js +346 -0
  105. package/dist/core/esm/le-popover.entry.js.map +1 -0
  106. package/dist/core/esm/le-popup.entry.js +210 -0
  107. package/dist/core/esm/le-popup.entry.js.map +1 -0
  108. package/dist/core/esm/le-round-progress.entry.js +104 -0
  109. package/dist/core/esm/le-round-progress.entry.js.map +1 -0
  110. package/dist/core/esm/le-stack.entry.js +133 -0
  111. package/dist/core/esm/le-stack.entry.js.map +1 -0
  112. package/dist/core/esm/le-string-input.entry.js +93 -0
  113. package/dist/core/esm/le-string-input.entry.js.map +1 -0
  114. package/dist/core/esm/le-text.entry.js +333 -0
  115. package/dist/core/esm/le-text.entry.js.map +1 -0
  116. package/dist/core/esm/le-turntable.entry.js +137 -0
  117. package/dist/core/esm/le-turntable.entry.js.map +1 -0
  118. package/dist/core/esm/loader.js +11 -0
  119. package/dist/core/esm/loader.js.map +1 -0
  120. package/dist/core/esm/utils-lgjSfQP0.js +146 -0
  121. package/dist/core/esm/utils-lgjSfQP0.js.map +1 -0
  122. package/dist/core/index.cjs.js +1 -0
  123. package/dist/core/index.js +1 -0
  124. package/dist/core/le-kit/index.esm.js +2 -0
  125. package/dist/core/le-kit/index.esm.js.map +1 -0
  126. package/dist/core/le-kit/le-box.entry.esm.js.map +1 -0
  127. package/dist/core/le-kit/le-button.entry.esm.js.map +1 -0
  128. package/dist/core/le-kit/le-card.entry.esm.js.map +1 -0
  129. package/dist/core/le-kit/le-checkbox.entry.esm.js.map +1 -0
  130. package/dist/core/le-kit/le-kit.css +1 -0
  131. package/dist/core/le-kit/le-kit.esm.js +2 -0
  132. package/dist/core/le-kit/le-kit.esm.js.map +1 -0
  133. package/dist/core/le-kit/le-number-input.entry.esm.js.map +1 -0
  134. package/dist/core/le-kit/le-popover.entry.esm.js.map +1 -0
  135. package/dist/core/le-kit/le-popup.entry.esm.js.map +1 -0
  136. package/dist/core/le-kit/le-round-progress.entry.esm.js.map +1 -0
  137. package/dist/core/le-kit/le-stack.entry.esm.js.map +1 -0
  138. package/dist/core/le-kit/le-string-input.entry.esm.js.map +1 -0
  139. package/dist/core/le-kit/le-text.entry.esm.js.map +1 -0
  140. package/dist/core/le-kit/le-turntable.entry.esm.js.map +1 -0
  141. package/dist/core/le-kit/loader.esm.js.map +1 -0
  142. package/dist/core/le-kit/p-1c5262eb.entry.js +2 -0
  143. package/dist/core/le-kit/p-1c5262eb.entry.js.map +1 -0
  144. package/dist/core/le-kit/p-32c08678.entry.js +2 -0
  145. package/dist/core/le-kit/p-32c08678.entry.js.map +1 -0
  146. package/dist/core/le-kit/p-38e7ec05.entry.js +2 -0
  147. package/dist/core/le-kit/p-38e7ec05.entry.js.map +1 -0
  148. package/dist/core/le-kit/p-4bf51acc.entry.js +2 -0
  149. package/dist/core/le-kit/p-4bf51acc.entry.js.map +1 -0
  150. package/dist/core/le-kit/p-86961f34.entry.js +2 -0
  151. package/dist/core/le-kit/p-86961f34.entry.js.map +1 -0
  152. package/dist/core/le-kit/p-9ee92c29.entry.js +2 -0
  153. package/dist/core/le-kit/p-9ee92c29.entry.js.map +1 -0
  154. package/dist/core/le-kit/p-DN2JVY-7.js +2 -0
  155. package/dist/core/le-kit/p-DN2JVY-7.js.map +1 -0
  156. package/dist/core/le-kit/p-PS-3Rz-c.js +3 -0
  157. package/dist/core/le-kit/p-PS-3Rz-c.js.map +1 -0
  158. package/dist/core/le-kit/p-a07048f8.entry.js +2 -0
  159. package/dist/core/le-kit/p-a07048f8.entry.js.map +1 -0
  160. package/dist/core/le-kit/p-a24b042d.entry.js +2 -0
  161. package/dist/core/le-kit/p-a24b042d.entry.js.map +1 -0
  162. package/dist/core/le-kit/p-bbc9e13e.entry.js +2 -0
  163. package/dist/core/le-kit/p-bbc9e13e.entry.js.map +1 -0
  164. package/dist/core/le-kit/p-c4223c60.entry.js +2 -0
  165. package/dist/core/le-kit/p-c4223c60.entry.js.map +1 -0
  166. package/dist/core/le-kit/p-dcf1343d.entry.js +2 -0
  167. package/dist/core/le-kit/p-dcf1343d.entry.js.map +1 -0
  168. package/dist/core/le-kit/p-fb4e68e0.entry.js +2 -0
  169. package/dist/core/le-kit/p-fb4e68e0.entry.js.map +1 -0
  170. package/dist/core/loader/cdn.js +1 -0
  171. package/dist/core/loader/index.cjs.js +1 -0
  172. package/dist/core/loader/index.d.ts +24 -0
  173. package/dist/core/loader/index.es2017.js +1 -0
  174. package/dist/core/loader/index.js +2 -0
  175. package/dist/core/types/components/le-box/le-box.d.ts +111 -0
  176. package/dist/core/types/components/le-button/le-button.d.ts +78 -0
  177. package/dist/core/types/components/le-card/le-card.d.ts +37 -0
  178. package/dist/core/types/components/le-checkbox/le-checkbox.d.ts +46 -0
  179. package/dist/core/types/components/le-number-input/le-number-input.d.ts +106 -0
  180. package/dist/core/types/components/le-popover/le-popover.d.ts +109 -0
  181. package/dist/core/types/components/le-popup/le-popup.api.d.ts +73 -0
  182. package/dist/core/types/components/le-popup/le-popup.d.ts +122 -0
  183. package/dist/core/types/components/le-round-progress/le-round-progress.d.ts +37 -0
  184. package/dist/core/types/components/le-stack/le-stack.d.ts +73 -0
  185. package/dist/core/types/components/le-string-input/le-string-input.d.ts +83 -0
  186. package/dist/core/types/components/le-text/le-text.d.ts +141 -0
  187. package/dist/core/types/components/le-turntable/le-turntable.d.ts +55 -0
  188. package/dist/core/types/components.d.ts +1752 -0
  189. package/dist/core/types/global/app.d.ts +73 -0
  190. package/dist/core/types/index.d.ts +15 -0
  191. package/dist/core/types/stencil-public-runtime.d.ts +1756 -0
  192. package/dist/core/types/types/blocks.d.ts +136 -0
  193. package/dist/core/types/types/options.d.ts +124 -0
  194. package/dist/core/types/utils/utils.d.ts +54 -0
  195. package/dist/docs.json +8 -8
  196. package/dist/esm/index-PS-3Rz-c.js.map +1 -1
  197. package/dist/le-kit/p-PS-3Rz-c.js.map +1 -1
  198. package/package.json +21 -4
@@ -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"]}