aeico-components 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/alert.cjs +6 -0
  2. package/dist/alert.cjs.map +1 -0
  3. package/dist/alert.js +6 -0
  4. package/dist/alert.js.map +1 -0
  5. package/dist/badge.cjs +6 -0
  6. package/dist/badge.cjs.map +1 -0
  7. package/dist/badge.js +6 -0
  8. package/dist/badge.js.map +1 -0
  9. package/dist/breadcrumb.cjs +7 -0
  10. package/dist/breadcrumb.cjs.map +1 -0
  11. package/dist/breadcrumb.js +7 -0
  12. package/dist/breadcrumb.js.map +1 -0
  13. package/dist/button-group.cjs +6 -0
  14. package/dist/button-group.cjs.map +1 -0
  15. package/dist/button-group.js +6 -0
  16. package/dist/button-group.js.map +1 -0
  17. package/dist/button.cjs +6 -0
  18. package/dist/button.cjs.map +1 -0
  19. package/dist/button.js +6 -0
  20. package/dist/button.js.map +1 -0
  21. package/dist/card.cjs +6 -0
  22. package/dist/card.cjs.map +1 -0
  23. package/dist/card.js +6 -0
  24. package/dist/card.js.map +1 -0
  25. package/dist/checkbox.cjs +6 -0
  26. package/dist/checkbox.cjs.map +1 -0
  27. package/dist/checkbox.js +6 -0
  28. package/dist/checkbox.js.map +1 -0
  29. package/dist/chunks/aeico-component.cjs +17 -0
  30. package/dist/chunks/aeico-component.cjs.map +1 -0
  31. package/dist/chunks/aeico-component.js +18 -0
  32. package/dist/chunks/aeico-component.js.map +1 -0
  33. package/dist/chunks/aeico-field.cjs +179 -0
  34. package/dist/chunks/aeico-field.cjs.map +1 -0
  35. package/dist/chunks/aeico-field.js +180 -0
  36. package/dist/chunks/aeico-field.js.map +1 -0
  37. package/dist/chunks/alert.cjs +170 -0
  38. package/dist/chunks/alert.cjs.map +1 -0
  39. package/dist/chunks/alert.js +171 -0
  40. package/dist/chunks/alert.js.map +1 -0
  41. package/dist/chunks/badge.cjs +85 -0
  42. package/dist/chunks/badge.cjs.map +1 -0
  43. package/dist/chunks/badge.js +86 -0
  44. package/dist/chunks/badge.js.map +1 -0
  45. package/dist/chunks/breadcrumb-item.cjs +261 -0
  46. package/dist/chunks/breadcrumb-item.cjs.map +1 -0
  47. package/dist/chunks/breadcrumb-item.js +262 -0
  48. package/dist/chunks/breadcrumb-item.js.map +1 -0
  49. package/dist/chunks/button-group.cjs +79 -0
  50. package/dist/chunks/button-group.cjs.map +1 -0
  51. package/dist/chunks/button-group.js +80 -0
  52. package/dist/chunks/button-group.js.map +1 -0
  53. package/dist/chunks/button.cjs +351 -0
  54. package/dist/chunks/button.cjs.map +1 -0
  55. package/dist/chunks/button.js +352 -0
  56. package/dist/chunks/button.js.map +1 -0
  57. package/dist/chunks/card.cjs +93 -0
  58. package/dist/chunks/card.cjs.map +1 -0
  59. package/dist/chunks/card.js +94 -0
  60. package/dist/chunks/card.js.map +1 -0
  61. package/dist/chunks/checkbox.cjs +73 -0
  62. package/dist/chunks/checkbox.cjs.map +1 -0
  63. package/dist/chunks/checkbox.js +74 -0
  64. package/dist/chunks/checkbox.js.map +1 -0
  65. package/dist/chunks/color.cjs +4 -0
  66. package/dist/chunks/color.cjs.map +1 -0
  67. package/dist/chunks/color.js +5 -0
  68. package/dist/chunks/color.js.map +1 -0
  69. package/dist/chunks/detail.cjs +143 -0
  70. package/dist/chunks/detail.cjs.map +1 -0
  71. package/dist/chunks/detail.js +144 -0
  72. package/dist/chunks/detail.js.map +1 -0
  73. package/dist/chunks/dialog.cjs +117 -0
  74. package/dist/chunks/dialog.cjs.map +1 -0
  75. package/dist/chunks/dialog.js +118 -0
  76. package/dist/chunks/dialog.js.map +1 -0
  77. package/dist/chunks/divider.cjs +80 -0
  78. package/dist/chunks/divider.cjs.map +1 -0
  79. package/dist/chunks/divider.js +81 -0
  80. package/dist/chunks/divider.js.map +1 -0
  81. package/dist/chunks/dropdown-button.cjs +534 -0
  82. package/dist/chunks/dropdown-button.cjs.map +1 -0
  83. package/dist/chunks/dropdown-button.js +535 -0
  84. package/dist/chunks/dropdown-button.js.map +1 -0
  85. package/dist/chunks/icon-button.cjs +35 -0
  86. package/dist/chunks/icon-button.cjs.map +1 -0
  87. package/dist/chunks/icon-button.js +36 -0
  88. package/dist/chunks/icon-button.js.map +1 -0
  89. package/dist/chunks/icon.cjs +78 -0
  90. package/dist/chunks/icon.cjs.map +1 -0
  91. package/dist/chunks/icon.js +79 -0
  92. package/dist/chunks/icon.js.map +1 -0
  93. package/dist/chunks/navbar.cjs +143 -0
  94. package/dist/chunks/navbar.cjs.map +1 -0
  95. package/dist/chunks/navbar.js +144 -0
  96. package/dist/chunks/navbar.js.map +1 -0
  97. package/dist/chunks/radio.cjs +181 -0
  98. package/dist/chunks/radio.cjs.map +1 -0
  99. package/dist/chunks/radio.js +182 -0
  100. package/dist/chunks/radio.js.map +1 -0
  101. package/dist/chunks/select.cjs +350 -0
  102. package/dist/chunks/select.cjs.map +1 -0
  103. package/dist/chunks/select.js +351 -0
  104. package/dist/chunks/select.js.map +1 -0
  105. package/dist/chunks/size.cjs +4 -0
  106. package/dist/chunks/size.cjs.map +1 -0
  107. package/dist/chunks/size.js +5 -0
  108. package/dist/chunks/size.js.map +1 -0
  109. package/dist/chunks/slider.cjs +648 -0
  110. package/dist/chunks/slider.cjs.map +1 -0
  111. package/dist/chunks/slider.js +649 -0
  112. package/dist/chunks/slider.js.map +1 -0
  113. package/dist/chunks/switch.cjs +73 -0
  114. package/dist/chunks/switch.cjs.map +1 -0
  115. package/dist/chunks/switch.js +74 -0
  116. package/dist/chunks/switch.js.map +1 -0
  117. package/dist/chunks/tab-panel.cjs +166 -0
  118. package/dist/chunks/tab-panel.cjs.map +1 -0
  119. package/dist/chunks/tab-panel.js +167 -0
  120. package/dist/chunks/tab-panel.js.map +1 -0
  121. package/dist/chunks/tag.cjs +108 -0
  122. package/dist/chunks/tag.cjs.map +1 -0
  123. package/dist/chunks/tag.js +109 -0
  124. package/dist/chunks/tag.js.map +1 -0
  125. package/dist/chunks/text-input.cjs +59 -0
  126. package/dist/chunks/text-input.cjs.map +1 -0
  127. package/dist/chunks/text-input.js +60 -0
  128. package/dist/chunks/text-input.js.map +1 -0
  129. package/dist/chunks/variables.cjs +372 -0
  130. package/dist/chunks/variables.cjs.map +1 -0
  131. package/dist/chunks/variables.js +373 -0
  132. package/dist/chunks/variables.js.map +1 -0
  133. package/dist/detail.cjs +6 -0
  134. package/dist/detail.cjs.map +1 -0
  135. package/dist/detail.js +6 -0
  136. package/dist/detail.js.map +1 -0
  137. package/dist/dialog.cjs +6 -0
  138. package/dist/dialog.cjs.map +1 -0
  139. package/dist/dialog.js +6 -0
  140. package/dist/dialog.js.map +1 -0
  141. package/dist/divider.cjs +6 -0
  142. package/dist/divider.cjs.map +1 -0
  143. package/dist/divider.js +6 -0
  144. package/dist/divider.js.map +1 -0
  145. package/dist/dropdown.cjs +7 -0
  146. package/dist/dropdown.cjs.map +1 -0
  147. package/dist/dropdown.js +7 -0
  148. package/dist/dropdown.js.map +1 -0
  149. package/dist/icon-button.cjs +6 -0
  150. package/dist/icon-button.cjs.map +1 -0
  151. package/dist/icon-button.js +6 -0
  152. package/dist/icon-button.js.map +1 -0
  153. package/dist/icon.cjs +6 -0
  154. package/dist/icon.cjs.map +1 -0
  155. package/dist/icon.js +6 -0
  156. package/dist/icon.js.map +1 -0
  157. package/dist/index.cjs +49 -4223
  158. package/dist/index.cjs.map +1 -1
  159. package/dist/index.js +49 -4223
  160. package/dist/index.js.map +1 -1
  161. package/dist/navbar.cjs +6 -0
  162. package/dist/navbar.cjs.map +1 -0
  163. package/dist/navbar.js +6 -0
  164. package/dist/navbar.js.map +1 -0
  165. package/dist/radio-group.cjs +7 -0
  166. package/dist/radio-group.cjs.map +1 -0
  167. package/dist/radio-group.js +7 -0
  168. package/dist/radio-group.js.map +1 -0
  169. package/dist/select.cjs +99 -0
  170. package/dist/select.cjs.map +1 -0
  171. package/dist/select.js +99 -0
  172. package/dist/select.js.map +1 -0
  173. package/dist/slider.cjs +6 -0
  174. package/dist/slider.cjs.map +1 -0
  175. package/dist/slider.js +6 -0
  176. package/dist/slider.js.map +1 -0
  177. package/dist/switch.cjs +6 -0
  178. package/dist/switch.cjs.map +1 -0
  179. package/dist/switch.js +6 -0
  180. package/dist/switch.js.map +1 -0
  181. package/dist/tabs.cjs +8 -0
  182. package/dist/tabs.cjs.map +1 -0
  183. package/dist/tabs.js +8 -0
  184. package/dist/tabs.js.map +1 -0
  185. package/dist/tag.cjs +5 -0
  186. package/dist/tag.cjs.map +1 -0
  187. package/dist/tag.js +5 -0
  188. package/dist/tag.js.map +1 -0
  189. package/dist/text-input.cjs +6 -0
  190. package/dist/text-input.cjs.map +1 -0
  191. package/dist/text-input.js +6 -0
  192. package/dist/text-input.js.map +1 -0
  193. package/package.json +15 -3
  194. package/src/utils.ts +1 -0
@@ -0,0 +1,352 @@
1
+ import { s as styleVariables } from "./variables.js";
2
+ import { s as sizeCSS } from "./size.js";
3
+ import { c as colorCSS } from "./color.js";
4
+ import { A as AeicoComponent } from "./aeico-component.js";
5
+ import { prop, html } from "aeico";
6
+ const buttonStyle = `:host {
7
+ display: inline-block;
8
+ --btn-solid-bg: var(--color-solid);
9
+ --btn-solid-bg-hover: var(--color-solid-hover);
10
+ --btn-solid-bg-active: var(--color-solid-active);
11
+ --btn-solid-color: var(--color-on-solid);
12
+ --btn-solid-color-hover: var(--color-on-solid-hover);
13
+ --btn-border: var(--color-border);
14
+ --btn-border-hover: var(--color-border-hover);
15
+ --btn-accent: var(--color-accent);
16
+ --btn-accent-hover: var(--color-accent-hover);
17
+ --btn-subtle-bg: var(--color-subtle);
18
+ --btn-subtle-bg-hover: var(--color-subtle-hover);
19
+ }
20
+
21
+ button {
22
+ display: inline-flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ gap: 6px;
26
+ font-family: inherit;
27
+ font-weight: 400;
28
+ text-align: center;
29
+ white-space: nowrap;
30
+ vertical-align: middle;
31
+ user-select: none;
32
+ cursor: pointer;
33
+ transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
34
+ outline: none;
35
+ position: relative;
36
+ padding: 0.429em 1.071em;
37
+ font-size: 1em;
38
+ line-height: 1.5;
39
+ border-radius: var(--_btn-r-tl, 4px) var(--_btn-r-tr, 4px) var(--_btn-r-br, 4px) var(--_btn-r-bl, 4px);
40
+ min-width: 4.571em;
41
+ height: 2.286em;
42
+ width: 100%;
43
+
44
+ background: var(--btn-solid-bg);
45
+ border: 1px solid var(--btn-solid-bg);
46
+ color: var(--btn-solid-color);
47
+ }
48
+
49
+ button:focus { outline: none; }
50
+ button:active { transform: translateY(1px); }
51
+
52
+ button:hover:not(:disabled) {
53
+ background: var(--btn-solid-bg-hover);
54
+ border-color: var(--btn-border-hover);
55
+ color: var(--btn-solid-color-hover, var(--btn-solid-color));
56
+ }
57
+
58
+ button:active:not(:disabled) { background: var(--btn-solid-bg-active); }
59
+
60
+ button:disabled {
61
+ opacity: 0.5;
62
+ cursor: not-allowed;
63
+ }
64
+
65
+ :host([size="xs"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }
66
+ :host([size="sm"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }
67
+
68
+ /* --- Variants --- */
69
+
70
+ :host([variant="outlined"]) button {
71
+ background: transparent;
72
+ border-color: var(--btn-border);
73
+ color: var(--btn-accent);
74
+ }
75
+
76
+ :host([variant="outlined"]) button:hover:not(:disabled) {
77
+ background: var(--btn-subtle-bg);
78
+ border-color: var(--btn-border-hover);
79
+ color: var(--btn-accent-hover);
80
+ }
81
+
82
+ :host([variant="outlined"]) button:active:not(:disabled) {
83
+ background: var(--btn-subtle-bg-hover);
84
+ }
85
+
86
+ :host([variant="subtle"]) button {
87
+ background: var(--btn-subtle-bg);
88
+ border-color: transparent;
89
+ color: var(--btn-accent);
90
+ }
91
+
92
+ :host([variant="subtle"]) button:hover:not(:disabled) {
93
+ background: var(--btn-subtle-bg-hover);
94
+ color: var(--btn-accent-hover);
95
+ }
96
+
97
+ :host([variant="subtle"]) button:active:not(:disabled) {
98
+ background: var(--btn-subtle-bg-hover);
99
+ }
100
+
101
+ :host([variant="faint"]) button {
102
+ background: var(--btn-subtle-bg);
103
+ border-color: var(--btn-border);
104
+ color: var(--btn-accent);
105
+ }
106
+
107
+ :host([variant="faint"]) button:hover:not(:disabled) {
108
+ background: var(--btn-subtle-bg-hover);
109
+ border-color: var(--btn-border-hover);
110
+ color: var(--btn-accent-hover);
111
+ }
112
+
113
+ :host([variant="faint"]) button:active:not(:disabled) {
114
+ background: var(--btn-subtle-bg-hover);
115
+ }
116
+
117
+ :host([variant="text"]) button {
118
+ background: transparent;
119
+ border-color: transparent;
120
+ color: var(--btn-accent);
121
+ min-width: auto;
122
+ padding-left: 4px;
123
+ padding-right: 4px;
124
+ }
125
+
126
+ :host([variant="text"]) button:hover:not(:disabled) {
127
+ background: var(--btn-subtle-bg);
128
+ color: var(--btn-accent-hover);
129
+ }
130
+
131
+ :host([variant="text"]) button:active:not(:disabled) {
132
+ background: var(--btn-subtle-bg-hover);
133
+ }
134
+
135
+ /* Icon-only: single ae-icon child → square compact layout */
136
+ :host([icon-only]) {
137
+ display: inline-flex;
138
+ }
139
+
140
+ :host([icon-only]:not([size])) {
141
+ font-size: var(--size-m);
142
+ }
143
+
144
+ :host([icon-only]) button {
145
+ padding: 0;
146
+ min-width: auto;
147
+ width: 2.286em;
148
+ height: 2.286em;
149
+ line-height: 1;
150
+ }
151
+
152
+ :host([icon-only]) ::slotted(ae-icon) {
153
+ font-size: 1.5em;
154
+ }
155
+
156
+ :host([active]) button {
157
+ background: var(--btn-solid-bg-active);
158
+ border-color: var(--btn-border-hover);
159
+ color: var(--btn-solid-color-hover, var(--btn-solid-color));
160
+ }
161
+
162
+ .btn-icon {
163
+ padding: 0;
164
+ min-width: auto;
165
+ width: 2.286em;
166
+ height: 2.286em;
167
+ display: inline-flex;
168
+ align-items: center;
169
+ justify-content: center;
170
+ border-radius: 4px;
171
+ }
172
+
173
+ .btn-icon.btn-lg {
174
+ width: 2.857em;
175
+ height: 2.857em;
176
+ }
177
+
178
+ .btn-circle {
179
+ border-radius: 50%;
180
+ }
181
+
182
+ :host([block]) {
183
+ display: block;
184
+ }
185
+
186
+ button.btn-loading {
187
+ position: relative;
188
+ pointer-events: none;
189
+ color: transparent;
190
+ }
191
+
192
+ button.btn-loading::before {
193
+ content: '';
194
+ position: absolute;
195
+ width: 1em;
196
+ height: 1em;
197
+ border: 2px solid currentColor;
198
+ border-top-color: transparent;
199
+ border-radius: 50%;
200
+ animation: btn-spin 0.6s linear infinite;
201
+ color: currentColor;
202
+ opacity: 0.8;
203
+ }
204
+
205
+ @keyframes btn-spin {
206
+ to {
207
+ transform: rotate(360deg);
208
+ }
209
+ }
210
+
211
+ .btn-icon-left {
212
+ margin-right: -2px;
213
+ }
214
+
215
+ .btn-icon-right {
216
+ margin-left: -2px;
217
+ }
218
+
219
+ `;
220
+ var __create = Object.create;
221
+ var __defProp = Object.defineProperty;
222
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
223
+ var __typeError = (msg) => {
224
+ throw TypeError(msg);
225
+ };
226
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
227
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
228
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
229
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
230
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
231
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
232
+ var __runInitializers = (array, flags, self, value) => {
233
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
234
+ return value;
235
+ };
236
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
237
+ var it, done, ctx, access, k = flags & 7, s = false, p = false;
238
+ var j = array.length + 1;
239
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
240
+ target = target.prototype, k < 5;
241
+ for (var i = decorators.length - 1; i >= 0; i--) {
242
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
243
+ {
244
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
245
+ access.get = (x) => x[name];
246
+ access.set = (x, y) => x[name] = y;
247
+ }
248
+ it = (0, decorators[i])(void 0, ctx), done._ = 1;
249
+ __expectFn(it) && initializers.unshift(it);
250
+ }
251
+ return target;
252
+ };
253
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
254
+ var _block_dec, _active_dec, _type_dec, _disabled_dec, _size_dec, _variant_dec, _color_dec, _a, _init;
255
+ class Button extends (_a = AeicoComponent, _color_dec = [prop({ type: String })], _variant_dec = [prop({ type: String })], _size_dec = [prop({ type: String })], _disabled_dec = [prop({ type: Boolean })], _type_dec = [prop({ type: String })], _active_dec = [prop({ type: Boolean })], _block_dec = [prop({ type: Boolean })], _a) {
256
+ constructor() {
257
+ super(...arguments);
258
+ __publicField(this, "color", __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
259
+ __publicField(this, "variant", __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
260
+ __publicField(this, "size", __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
261
+ __publicField(this, "disabled", __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
262
+ __publicField(this, "type", __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
263
+ __publicField(this, "active", __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
264
+ __publicField(this, "block", __runInitializers(_init, 32, this)), __runInitializers(_init, 35, this);
265
+ __publicField(this, "buttonElement", null);
266
+ __publicField(this, "_autoAriaLabel", false);
267
+ __publicField(this, "_handleSlotChange", () => {
268
+ var _a2;
269
+ const slot = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector("slot:not([name])");
270
+ const nodes = (slot == null ? void 0 : slot.assignedNodes()) ?? [];
271
+ const elements = nodes.filter((n) => n.nodeType === Node.ELEMENT_NODE);
272
+ const hasText = nodes.some(
273
+ (n) => n.nodeType === Node.TEXT_NODE && n.textContent.trim() !== ""
274
+ );
275
+ const isIconOnly = !hasText && elements.length === 1 && elements[0].tagName.toLowerCase() === "ae-icon";
276
+ if (isIconOnly) {
277
+ this.setAttribute("icon-only", "");
278
+ if (!this.hasAttribute("aria-label") || this._autoAriaLabel) {
279
+ this.setAttribute("aria-label", elements[0].getAttribute("name") ?? "");
280
+ this._autoAriaLabel = true;
281
+ }
282
+ } else {
283
+ this.removeAttribute("icon-only");
284
+ if (this._autoAriaLabel) {
285
+ this.removeAttribute("aria-label");
286
+ this._autoAriaLabel = false;
287
+ }
288
+ }
289
+ });
290
+ }
291
+ onMounted() {
292
+ var _a2;
293
+ const slot = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector("slot:not([name])");
294
+ if (slot) this.listen(slot, "slotchange", this._handleSlotChange);
295
+ this._handleSlotChange();
296
+ }
297
+ render() {
298
+ return html(({ button, slot }) => {
299
+ this.buttonElement = button(
300
+ {
301
+ type: this.type || "button",
302
+ disabled: this.disabled,
303
+ part: "button",
304
+ "aria-pressed": this.active,
305
+ "aria-disabled": this.disabled
306
+ },
307
+ () => {
308
+ slot();
309
+ }
310
+ );
311
+ });
312
+ }
313
+ /**
314
+ * Programmatically click the button
315
+ */
316
+ click() {
317
+ if (!this.disabled && this.buttonElement) {
318
+ this.buttonElement.click();
319
+ }
320
+ }
321
+ /**
322
+ * Focus the button
323
+ */
324
+ focus() {
325
+ if (this.buttonElement) {
326
+ this.buttonElement.focus();
327
+ }
328
+ }
329
+ /**
330
+ * Blur the button
331
+ */
332
+ blur() {
333
+ if (this.buttonElement) {
334
+ this.buttonElement.blur();
335
+ }
336
+ }
337
+ }
338
+ _init = __decoratorStart(_a);
339
+ __decorateElement(_init, 5, "color", _color_dec, Button);
340
+ __decorateElement(_init, 5, "variant", _variant_dec, Button);
341
+ __decorateElement(_init, 5, "size", _size_dec, Button);
342
+ __decorateElement(_init, 5, "disabled", _disabled_dec, Button);
343
+ __decorateElement(_init, 5, "type", _type_dec, Button);
344
+ __decorateElement(_init, 5, "active", _active_dec, Button);
345
+ __decorateElement(_init, 5, "block", _block_dec, Button);
346
+ __decoratorMetadata(_init, Button);
347
+ __publicField(Button, "styles", [styleVariables, sizeCSS, colorCSS, buttonStyle]);
348
+ Button.register();
349
+ export {
350
+ Button as B
351
+ };
352
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sources":["../../src/button/button.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport buttonStyle from '../styles/components/button.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { ButtonColor, ButtonSize, ButtonVariant } from './defines';\nimport { prop } from 'aeico';\n\n/**\n * Button Component\n *\n * A customizable button component with multiple variants and sizes.\n * Supports theme and internationalization through mixins.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const button = Button.create({\n * variant: 'primary',\n * size: 'md'\n * })\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-button variant=\"primary\" size=\"md\">Save</ae-button>\n * <ae-button variant=\"danger\" size=\"sm\">Delete</ae-button>\n * <ae-button variant=\"subtle\">Cancel</ae-button>\n * ```\n */\nclass Button extends AeicoComponent {\n protected static styles = [styleVariables, sizeCSS, colorCSS, buttonStyle];\n\n @prop({ type: String })\n color?: ButtonColor;\n\n @prop({ type: String })\n variant?: ButtonVariant;\n\n @prop({ type: String })\n size?: ButtonSize;\n\n @prop({ type: Boolean })\n disabled?: boolean;\n\n @prop({ type: String })\n type?: 'button' | 'submit' | 'reset';\n\n @prop({ type: Boolean })\n active?: boolean;\n\n @prop({ type: Boolean })\n block?: boolean;\n\n private buttonElement: HTMLButtonElement | null = null;\n private _autoAriaLabel = false;\n\n protected onMounted() {\n const slot = this.shadowRoot?.querySelector('slot:not([name])');\n if (slot) this.listen(slot, 'slotchange', this._handleSlotChange);\n this._handleSlotChange();\n }\n\n private _handleSlotChange = () => {\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n const nodes = slot?.assignedNodes() ?? [];\n // Icon-only: exactly one element (ae-icon) and no meaningful text nodes\n const elements = nodes.filter((n): n is Element => n.nodeType === Node.ELEMENT_NODE);\n const hasText = nodes.some(\n (n) => n.nodeType === Node.TEXT_NODE && n.textContent!.trim() !== '',\n );\n const isIconOnly =\n !hasText && elements.length === 1 && elements[0].tagName.toLowerCase() === 'ae-icon';\n\n if (isIconOnly) {\n this.setAttribute('icon-only', '');\n if (!this.hasAttribute('aria-label') || this._autoAriaLabel) {\n this.setAttribute('aria-label', elements[0].getAttribute('name') ?? '');\n this._autoAriaLabel = true;\n }\n } else {\n this.removeAttribute('icon-only');\n if (this._autoAriaLabel) {\n this.removeAttribute('aria-label');\n this._autoAriaLabel = false;\n }\n }\n };\n\n protected render() {\n return html(({ button, slot }) => {\n this.buttonElement = button(\n {\n type: this.type || 'button',\n disabled: this.disabled,\n part: 'button',\n 'aria-pressed': this.active,\n 'aria-disabled': this.disabled,\n },\n () => {\n slot();\n },\n );\n });\n }\n\n /**\n * Programmatically click the button\n */\n click() {\n if (!this.disabled && this.buttonElement) {\n this.buttonElement.click();\n }\n }\n\n /**\n * Focus the button\n */\n focus() {\n if (this.buttonElement) {\n this.buttonElement.focus();\n }\n }\n\n /**\n * Blur the button\n */\n blur() {\n if (this.buttonElement) {\n this.buttonElement.blur();\n }\n }\n}\n\nButton.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-button': Button;\n }\n}\n\nexport default Button;\nexport type ButtonProps = InferProps<typeof Button>;\n"],"names":["_a"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ const variables = require("./variables.cjs");
3
+ const color = require("./color.cjs");
4
+ const aeicoComponent = require("./aeico-component.cjs");
5
+ const aeico = require("aeico");
6
+ const cardStyle = ':host {\n display: block;\n\n --card-bg: var(--color-bg-subtle);\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border-subtle);\n --card-divider: var(--color-border-subtle);\n}\n\n:host([variant="faint"]) {\n --card-bg: var(--color-bg-subtle);\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border-subtle);\n --card-divider: var(--color-border-subtle);\n}\n\n:host([variant="subtle"]) {\n --card-border: transparent;\n --card-divider: transparent;\n}\n\n:host([variant="filled"]) {\n --card-bg: var(--color-solid);\n --card-color: var(--color-on-solid);\n --card-border: var(--color-solid);\n --card-divider: color-mix(in srgb, var(--color-solid), black 15%);\n}\n\n:host([variant="outlined"]) {\n --card-bg: transparent;\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border);\n --card-divider: var(--color-border-subtle);\n}\n\n.card {\n border: 1px solid var(--card-border);\n border-radius: 8px;\n background: var(--card-bg);\n color: var(--card-color);\n overflow: hidden;\n}\n\n.header,\n.footer {\n display: none;\n padding: 10px 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n:host([has-header]) .header {\n display: block;\n border-bottom: 1px solid var(--card-divider);\n}\n\n:host([has-footer]) .footer {\n display: block;\n border-top: 1px solid var(--card-divider);\n}\n\n.body {\n padding: 16px;\n}\n';
7
+ var __create = Object.create;
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
11
+ var __typeError = (msg) => {
12
+ throw TypeError(msg);
13
+ };
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
16
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
17
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
18
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
19
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
20
+ var __runInitializers = (array, flags, self, value) => {
21
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
22
+ return value;
23
+ };
24
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
25
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
26
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
27
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
28
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
29
+ return __privateGet(this, extra);
30
+ }, set [name](x) {
31
+ return __privateSet(this, extra, x);
32
+ } }, name));
33
+ for (var i = decorators.length - 1; i >= 0; i--) {
34
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
35
+ {
36
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
37
+ access.get = (x) => x[name];
38
+ access.set = (x, y) => x[name] = y;
39
+ }
40
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
41
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
42
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
43
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
44
+ }
45
+ return desc && __defProp(target, name, desc), target;
46
+ };
47
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
48
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
49
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
50
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
51
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
52
+ var _variant_dec, _color_dec, _a, _init, _color, _variant;
53
+ class Card extends (_a = aeicoComponent.AeicoComponent, _color_dec = [aeico.prop({ type: String })], _variant_dec = [aeico.prop({ type: String })], _a) {
54
+ constructor() {
55
+ super(...arguments);
56
+ __privateAdd(this, _color, __runInitializers(_init, 8, this, "default")), __runInitializers(_init, 11, this);
57
+ __privateAdd(this, _variant, __runInitializers(_init, 12, this, "filled")), __runInitializers(_init, 15, this);
58
+ }
59
+ render() {
60
+ return aeico.html(({ div, header, footer, slot }) => {
61
+ div({ className: "card", part: "card" }, () => {
62
+ header({ className: "header", part: "header" }, () => {
63
+ slot({ name: "header", "@slotchange": (e) => this._onHeaderSlotChange(e) });
64
+ });
65
+ div({ className: "body", part: "body" }, () => {
66
+ slot();
67
+ });
68
+ footer({ className: "footer", part: "footer" }, () => {
69
+ slot({ name: "footer", "@slotchange": (e) => this._onFooterSlotChange(e) });
70
+ });
71
+ });
72
+ });
73
+ }
74
+ _onHeaderSlotChange(e) {
75
+ const slot = e.target;
76
+ this.toggleAttribute("has-header", slot.assignedNodes({ flatten: true }).length > 0);
77
+ }
78
+ _onFooterSlotChange(e) {
79
+ const slot = e.target;
80
+ this.toggleAttribute("has-footer", slot.assignedNodes({ flatten: true }).length > 0);
81
+ }
82
+ }
83
+ _init = __decoratorStart(_a);
84
+ _color = /* @__PURE__ */ new WeakMap();
85
+ _variant = /* @__PURE__ */ new WeakMap();
86
+ __decorateElement(_init, 4, "color", _color_dec, Card, _color);
87
+ __decorateElement(_init, 4, "variant", _variant_dec, Card, _variant);
88
+ __decoratorMetadata(_init, Card);
89
+ __publicField(Card, "tagName", "card");
90
+ __publicField(Card, "styles", [variables.styleVariables, color.colorCSS, cardStyle]);
91
+ Card.register();
92
+ exports.Card = Card;
93
+ //# sourceMappingURL=card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.cjs","sources":["../../src/card/card.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport cardStyle from '../styles/components/card.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { CardVariant, CardColor } from './defines';\nimport { prop } from 'aeico';\n\nclass Card extends AeicoComponent {\n static tagName = 'card';\n\n protected static styles = [styleVariables, colorCSS, cardStyle];\n\n @prop({ type: String })\n accessor color: CardColor = 'default';\n\n @prop({ type: String })\n accessor variant: CardVariant = 'filled';\n\n protected render() {\n return html(({ div, header, footer, slot }) => {\n div({ className: 'card', part: 'card' }, () => {\n header({ className: 'header', part: 'header' }, () => {\n slot({ name: 'header', '@slotchange': (e: Event) => this._onHeaderSlotChange(e) });\n });\n div({ className: 'body', part: 'body' }, () => {\n slot();\n });\n footer({ className: 'footer', part: 'footer' }, () => {\n slot({ name: 'footer', '@slotchange': (e: Event) => this._onFooterSlotChange(e) });\n });\n });\n });\n }\n\n private _onHeaderSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-header', slot.assignedNodes({ flatten: true }).length > 0);\n }\n\n private _onFooterSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-footer', slot.assignedNodes({ flatten: true }).length > 0);\n }\n}\n\nCard.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-card': Card;\n }\n}\n\nexport default Card;\nexport type CardProps = InferProps<typeof Card>;\n"],"names":["AeicoComponent","prop","html","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,YAAA,IAAA,OAAA,QAAA;AASA,MAAM,cAAa,KAAAA,+BAKjB,aAAA,CAACC,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,eAAA,CAACA,WAAK,EAAE,MAAM,OAAA,CAAQ,IARL,IAAe;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAME,iBAAA,MAAS,QAAmB,kBAA5B,OAAA,GAAA,MAA4B,SAAA,CAAA,GAA5B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,UAAuB,kBAAhC,OAAA,IAAA,MAAgC,QAAA,CAAA,GAAhC,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,WAAOC,MAAAA,KAAK,CAAC,EAAE,KAAK,QAAQ,QAAQ,WAAW;AAC7C,UAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AACD,YAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAA;AAAA,QACF,CAAC;AACD,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AACF;AApCA,QAAA,iBAAA,EAAA;AAMW,SAAA,oBAAA,QAAA;AAGA,WAAA,oBAAA,QAAA;AAHT,kBAAA,OAAA,GAAS,SADT,YALI,MAMK,MAAA;AAGT,kBAAA,OAAA,GAAS,WADT,cARI,MASK,QAAA;AATX,oBAAA,OAAM,IAAA;AACJ,cADI,MACG,WAAU,MAAA;AAEjB,cAHI,MAGa,UAAS,CAACC,UAAAA,gBAAgBC,MAAAA,UAAU,SAAS,CAAA;AAmChE,KAAK,SAAA;;"}
@@ -0,0 +1,94 @@
1
+ import { s as styleVariables } from "./variables.js";
2
+ import { c as colorCSS } from "./color.js";
3
+ import { A as AeicoComponent } from "./aeico-component.js";
4
+ import { prop, html } from "aeico";
5
+ const cardStyle = ':host {\n display: block;\n\n --card-bg: var(--color-bg-subtle);\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border-subtle);\n --card-divider: var(--color-border-subtle);\n}\n\n:host([variant="faint"]) {\n --card-bg: var(--color-bg-subtle);\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border-subtle);\n --card-divider: var(--color-border-subtle);\n}\n\n:host([variant="subtle"]) {\n --card-border: transparent;\n --card-divider: transparent;\n}\n\n:host([variant="filled"]) {\n --card-bg: var(--color-solid);\n --card-color: var(--color-on-solid);\n --card-border: var(--color-solid);\n --card-divider: color-mix(in srgb, var(--color-solid), black 15%);\n}\n\n:host([variant="outlined"]) {\n --card-bg: transparent;\n --card-color: var(--color-text-subtle);\n --card-border: var(--color-border);\n --card-divider: var(--color-border-subtle);\n}\n\n.card {\n border: 1px solid var(--card-border);\n border-radius: 8px;\n background: var(--card-bg);\n color: var(--card-color);\n overflow: hidden;\n}\n\n.header,\n.footer {\n display: none;\n padding: 10px 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n:host([has-header]) .header {\n display: block;\n border-bottom: 1px solid var(--card-divider);\n}\n\n:host([has-footer]) .footer {\n display: block;\n border-top: 1px solid var(--card-divider);\n}\n\n.body {\n padding: 16px;\n}\n';
6
+ var __create = Object.create;
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
10
+ var __typeError = (msg) => {
11
+ throw TypeError(msg);
12
+ };
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
15
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
16
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
17
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
18
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
19
+ var __runInitializers = (array, flags, self, value) => {
20
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
21
+ return value;
22
+ };
23
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
24
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
25
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
26
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
27
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
28
+ return __privateGet(this, extra);
29
+ }, set [name](x) {
30
+ return __privateSet(this, extra, x);
31
+ } }, name));
32
+ for (var i = decorators.length - 1; i >= 0; i--) {
33
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
34
+ {
35
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
36
+ access.get = (x) => x[name];
37
+ access.set = (x, y) => x[name] = y;
38
+ }
39
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
40
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
41
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
42
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
43
+ }
44
+ return desc && __defProp(target, name, desc), target;
45
+ };
46
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
47
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
48
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
49
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
50
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
51
+ var _variant_dec, _color_dec, _a, _init, _color, _variant;
52
+ class Card extends (_a = AeicoComponent, _color_dec = [prop({ type: String })], _variant_dec = [prop({ type: String })], _a) {
53
+ constructor() {
54
+ super(...arguments);
55
+ __privateAdd(this, _color, __runInitializers(_init, 8, this, "default")), __runInitializers(_init, 11, this);
56
+ __privateAdd(this, _variant, __runInitializers(_init, 12, this, "filled")), __runInitializers(_init, 15, this);
57
+ }
58
+ render() {
59
+ return html(({ div, header, footer, slot }) => {
60
+ div({ className: "card", part: "card" }, () => {
61
+ header({ className: "header", part: "header" }, () => {
62
+ slot({ name: "header", "@slotchange": (e) => this._onHeaderSlotChange(e) });
63
+ });
64
+ div({ className: "body", part: "body" }, () => {
65
+ slot();
66
+ });
67
+ footer({ className: "footer", part: "footer" }, () => {
68
+ slot({ name: "footer", "@slotchange": (e) => this._onFooterSlotChange(e) });
69
+ });
70
+ });
71
+ });
72
+ }
73
+ _onHeaderSlotChange(e) {
74
+ const slot = e.target;
75
+ this.toggleAttribute("has-header", slot.assignedNodes({ flatten: true }).length > 0);
76
+ }
77
+ _onFooterSlotChange(e) {
78
+ const slot = e.target;
79
+ this.toggleAttribute("has-footer", slot.assignedNodes({ flatten: true }).length > 0);
80
+ }
81
+ }
82
+ _init = __decoratorStart(_a);
83
+ _color = /* @__PURE__ */ new WeakMap();
84
+ _variant = /* @__PURE__ */ new WeakMap();
85
+ __decorateElement(_init, 4, "color", _color_dec, Card, _color);
86
+ __decorateElement(_init, 4, "variant", _variant_dec, Card, _variant);
87
+ __decoratorMetadata(_init, Card);
88
+ __publicField(Card, "tagName", "card");
89
+ __publicField(Card, "styles", [styleVariables, colorCSS, cardStyle]);
90
+ Card.register();
91
+ export {
92
+ Card as C
93
+ };
94
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sources":["../../src/card/card.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport cardStyle from '../styles/components/card.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { CardVariant, CardColor } from './defines';\nimport { prop } from 'aeico';\n\nclass Card extends AeicoComponent {\n static tagName = 'card';\n\n protected static styles = [styleVariables, colorCSS, cardStyle];\n\n @prop({ type: String })\n accessor color: CardColor = 'default';\n\n @prop({ type: String })\n accessor variant: CardVariant = 'filled';\n\n protected render() {\n return html(({ div, header, footer, slot }) => {\n div({ className: 'card', part: 'card' }, () => {\n header({ className: 'header', part: 'header' }, () => {\n slot({ name: 'header', '@slotchange': (e: Event) => this._onHeaderSlotChange(e) });\n });\n div({ className: 'body', part: 'body' }, () => {\n slot();\n });\n footer({ className: 'footer', part: 'footer' }, () => {\n slot({ name: 'footer', '@slotchange': (e: Event) => this._onFooterSlotChange(e) });\n });\n });\n });\n }\n\n private _onHeaderSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-header', slot.assignedNodes({ flatten: true }).length > 0);\n }\n\n private _onFooterSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-footer', slot.assignedNodes({ flatten: true }).length > 0);\n }\n}\n\nCard.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-card': Card;\n }\n}\n\nexport default Card;\nexport type CardProps = InferProps<typeof Card>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,YAAA,IAAA,OAAA,QAAA;AASA,MAAM,cAAa,KAAA,gBAKjB,aAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,eAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,IARL,IAAe;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAME,iBAAA,MAAS,QAAmB,kBAA5B,OAAA,GAAA,MAA4B,SAAA,CAAA,GAA5B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,UAAuB,kBAAhC,OAAA,IAAA,MAAgC,QAAA,CAAA,GAAhC,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,QAAQ,WAAW;AAC7C,UAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AACD,YAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAA;AAAA,QACF,CAAC;AACD,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AACF;AApCA,QAAA,iBAAA,EAAA;AAMW,SAAA,oBAAA,QAAA;AAGA,WAAA,oBAAA,QAAA;AAHT,kBAAA,OAAA,GAAS,SADT,YALI,MAMK,MAAA;AAGT,kBAAA,OAAA,GAAS,WADT,cARI,MASK,QAAA;AATX,oBAAA,OAAM,IAAA;AACJ,cADI,MACG,WAAU,MAAA;AAEjB,cAHI,MAGa,UAAS,CAAC,gBAAgB,UAAU,SAAS,CAAA;AAmChE,KAAK,SAAA;"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ const aeicoField = require("./aeico-field.cjs");
6
+ const aeico = require("aeico");
7
+ const variables = require("./variables.cjs");
8
+ const size = require("./size.cjs");
9
+ const color = require("./color.cjs");
10
+ const styles = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* action buttons */\n.reset-btn,\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n";
11
+ class Checkbox extends aeicoField.AeicoField {
12
+ constructor() {
13
+ super(...arguments);
14
+ __publicField(this, "fieldElement", null);
15
+ }
16
+ getValue() {
17
+ var _a;
18
+ return ((_a = this.fieldElement) == null ? void 0 : _a.checked) ?? false;
19
+ }
20
+ writeValue(checked) {
21
+ if (this.fieldElement) {
22
+ this.fieldElement.checked = Boolean(checked);
23
+ }
24
+ }
25
+ getEventPayload(checked, oldChecked, action) {
26
+ return { checked, oldChecked, action };
27
+ }
28
+ setValue(checked, options) {
29
+ const oldChecked = this.getValue();
30
+ this.checked = checked;
31
+ this.writeValue(checked);
32
+ if ((options == null ? void 0 : options.silent) === false) {
33
+ this.emit("change", {
34
+ detail: this.getEventPayload(checked, oldChecked, options.action || "change")
35
+ });
36
+ }
37
+ }
38
+ reset(checked, options) {
39
+ this.setValue(checked !== void 0 ? checked : this.defaultChecked ?? false, {
40
+ ...options,
41
+ action: "reset"
42
+ });
43
+ }
44
+ clear(options) {
45
+ this.setValue(false, { ...options, action: "clear" });
46
+ }
47
+ render() {
48
+ return aeico.html(({ div, input }) => {
49
+ div({ className: "checkbox-container", variant: this.variant }, () => {
50
+ div({ className: "checkbox-wrapper" }, () => {
51
+ this.fieldElement = input({
52
+ type: "checkbox",
53
+ className: "field-input",
54
+ checked: Boolean(this.checked),
55
+ disabled: Boolean(this.disabled),
56
+ "@change": this.boundOnChange
57
+ });
58
+ });
59
+ this.renderActionButtons();
60
+ });
61
+ });
62
+ }
63
+ }
64
+ __publicField(Checkbox, "tagName", "checkbox");
65
+ __publicField(Checkbox, "props", {
66
+ checked: { type: Boolean },
67
+ defaultChecked: { type: Boolean },
68
+ variant: { type: String }
69
+ });
70
+ __publicField(Checkbox, "styles", [variables.styleVariables, size.sizeCSS, color.colorCSS, styles]);
71
+ Checkbox.register();
72
+ exports.Checkbox = Checkbox;
73
+ //# sourceMappingURL=checkbox.cjs.map