aeico-components 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 (380) hide show
  1. package/README.md +0 -0
  2. package/dist/alert.cjs +637 -4
  3. package/dist/alert.cjs.map +7 -1
  4. package/dist/alert.js +575 -3
  5. package/dist/alert.js.map +7 -1
  6. package/dist/badge.cjs +573 -4
  7. package/dist/badge.cjs.map +7 -1
  8. package/dist/badge.js +510 -3
  9. package/dist/badge.js.map +7 -1
  10. package/dist/breadcrumb.cjs +709 -5
  11. package/dist/breadcrumb.cjs.map +7 -1
  12. package/dist/breadcrumb.js +644 -4
  13. package/dist/breadcrumb.js.map +7 -1
  14. package/dist/button-group.cjs +546 -4
  15. package/dist/button-group.cjs.map +7 -1
  16. package/dist/button-group.js +489 -3
  17. package/dist/button-group.js.map +7 -1
  18. package/dist/button.cjs +834 -4
  19. package/dist/button.cjs.map +7 -1
  20. package/dist/button.js +771 -3
  21. package/dist/button.js.map +7 -1
  22. package/dist/card.cjs +574 -4
  23. package/dist/card.cjs.map +7 -1
  24. package/dist/card.js +516 -3
  25. package/dist/card.js.map +7 -1
  26. package/dist/checkbox.cjs +867 -4
  27. package/dist/checkbox.cjs.map +7 -1
  28. package/dist/checkbox.js +794 -3
  29. package/dist/checkbox.js.map +7 -1
  30. package/dist/copy-button.cjs +1046 -4
  31. package/dist/copy-button.cjs.map +7 -1
  32. package/dist/copy-button.js +969 -3
  33. package/dist/copy-button.js.map +7 -1
  34. package/dist/detail-group.cjs +533 -0
  35. package/dist/detail-group.cjs.map +7 -0
  36. package/dist/detail-group.js +477 -0
  37. package/dist/detail-group.js.map +7 -0
  38. package/dist/detail.cjs +627 -4
  39. package/dist/detail.cjs.map +7 -1
  40. package/dist/detail.js +569 -3
  41. package/dist/detail.js.map +7 -1
  42. package/dist/dialog.cjs +738 -4
  43. package/dist/dialog.cjs.map +7 -1
  44. package/dist/dialog.js +665 -3
  45. package/dist/dialog.js.map +7 -1
  46. package/dist/divider.cjs +558 -4
  47. package/dist/divider.cjs.map +7 -1
  48. package/dist/divider.js +502 -3
  49. package/dist/divider.js.map +7 -1
  50. package/dist/drawer.cjs +818 -4
  51. package/dist/drawer.cjs.map +7 -1
  52. package/dist/drawer.js +749 -3
  53. package/dist/drawer.js.map +7 -1
  54. package/dist/dropdown.cjs +1396 -5
  55. package/dist/dropdown.cjs.map +7 -1
  56. package/dist/dropdown.js +1316 -4
  57. package/dist/dropdown.js.map +7 -1
  58. package/dist/icon-button.cjs +999 -4
  59. package/dist/icon-button.cjs.map +7 -1
  60. package/dist/icon-button.js +930 -3
  61. package/dist/icon-button.js.map +7 -1
  62. package/dist/icon.cjs +613 -4
  63. package/dist/icon.cjs.map +7 -1
  64. package/dist/icon.js +547 -3
  65. package/dist/icon.js.map +7 -1
  66. package/dist/index.cjs +6484 -188
  67. package/dist/index.cjs.map +7 -1
  68. package/dist/index.js +6095 -147
  69. package/dist/index.js.map +7 -1
  70. package/dist/menu.cjs +841 -4
  71. package/dist/menu.cjs.map +7 -1
  72. package/dist/menu.js +785 -3
  73. package/dist/menu.js.map +7 -1
  74. package/dist/navbar.cjs +622 -4
  75. package/dist/navbar.cjs.map +7 -1
  76. package/dist/navbar.js +564 -3
  77. package/dist/navbar.js.map +7 -1
  78. package/dist/number-input.cjs +887 -0
  79. package/dist/number-input.cjs.map +7 -0
  80. package/dist/number-input.js +820 -0
  81. package/dist/number-input.js.map +7 -0
  82. package/dist/pagination.cjs +1099 -4
  83. package/dist/pagination.cjs.map +7 -1
  84. package/dist/pagination.js +1029 -3
  85. package/dist/pagination.js.map +7 -1
  86. package/dist/progress-bar.cjs +581 -4
  87. package/dist/progress-bar.cjs.map +7 -1
  88. package/dist/progress-bar.js +525 -3
  89. package/dist/progress-bar.js.map +7 -1
  90. package/dist/radio-group.cjs +973 -5
  91. package/dist/radio-group.cjs.map +7 -1
  92. package/dist/radio-group.js +899 -4
  93. package/dist/radio-group.js.map +7 -1
  94. package/dist/select.cjs +1242 -45
  95. package/dist/select.cjs.map +7 -1
  96. package/dist/select.js +1159 -44
  97. package/dist/select.js.map +7 -1
  98. package/dist/slider.cjs +1420 -4
  99. package/dist/slider.cjs.map +7 -1
  100. package/dist/slider.js +1351 -3
  101. package/dist/slider.js.map +7 -1
  102. package/dist/spinner.cjs +587 -4
  103. package/dist/spinner.cjs.map +7 -1
  104. package/dist/spinner.js +528 -3
  105. package/dist/spinner.js.map +7 -1
  106. package/dist/styles/layout.cjs +1 -0
  107. package/dist/styles/layout.js +1 -0
  108. package/dist/styles/radius.cjs +1 -0
  109. package/dist/styles/radius.js +1 -0
  110. package/dist/styles/variables.cjs +1 -0
  111. package/dist/styles/variables.js +1 -0
  112. package/dist/switch.cjs +1092 -4
  113. package/dist/switch.cjs.map +7 -1
  114. package/dist/switch.js +1013 -3
  115. package/dist/switch.js.map +7 -1
  116. package/dist/tabs.cjs +660 -6
  117. package/dist/tabs.cjs.map +7 -1
  118. package/dist/tabs.js +591 -5
  119. package/dist/tabs.js.map +7 -1
  120. package/dist/tag.cjs +591 -3
  121. package/dist/tag.cjs.map +7 -1
  122. package/dist/tag.js +532 -2
  123. package/dist/tag.js.map +7 -1
  124. package/dist/text-input.cjs +829 -4
  125. package/dist/text-input.cjs.map +7 -1
  126. package/dist/text-input.js +761 -3
  127. package/dist/text-input.js.map +7 -1
  128. package/dist/textarea.cjs +914 -3
  129. package/dist/textarea.cjs.map +7 -1
  130. package/dist/textarea.js +854 -2
  131. package/dist/textarea.js.map +7 -1
  132. package/dist/tooltip.cjs +764 -4
  133. package/dist/tooltip.cjs.map +7 -1
  134. package/dist/tooltip.js +711 -3
  135. package/dist/tooltip.js.map +7 -1
  136. package/dist/tree.cjs +1059 -4
  137. package/dist/tree.cjs.map +7 -1
  138. package/dist/tree.js +985 -3
  139. package/dist/tree.js.map +7 -1
  140. package/dist/types/card/defines.d.ts +1 -1
  141. package/dist/types/detail/defines.d.ts +1 -1
  142. package/dist/types/dialog/dialog.d.ts +1 -0
  143. package/dist/types/drawer/drawer.d.ts +2 -0
  144. package/dist/types/icon/defines.d.ts +7 -1
  145. package/dist/types/icon/index.d.ts +1 -1
  146. package/dist/types/menu/defines.d.ts +1 -0
  147. package/dist/types/menu/menu-item.d.ts +1 -0
  148. package/dist/types/menu/menu.d.ts +1 -0
  149. package/dist/types/styles/layout.d.ts +2 -0
  150. package/dist/types/styles/radius.d.ts +2 -0
  151. package/dist/types/styles/variables.d.ts +2 -0
  152. package/dist/types/tabs/defines.d.ts +1 -0
  153. package/dist/types/tabs/tabs.d.ts +3 -0
  154. package/package.json +31 -7
  155. package/src/alert/alert.ts +3 -3
  156. package/src/badge/badge.ts +4 -4
  157. package/src/breadcrumb/breadcrumb-item.ts +2 -2
  158. package/src/breadcrumb/breadcrumb.ts +3 -3
  159. package/src/button/button.ts +4 -4
  160. package/src/button-group/button-group.ts +8 -9
  161. package/src/card/card.ts +3 -3
  162. package/src/card/defines.ts +1 -1
  163. package/src/checkbox/checkbox.ts +6 -6
  164. package/src/copy-button/copy-button.ts +13 -9
  165. package/src/detail/defines.ts +1 -1
  166. package/src/detail/detail.ts +3 -3
  167. package/src/detail-group/detail-group.ts +2 -2
  168. package/src/dialog/dialog.ts +15 -14
  169. package/src/divider/divider.ts +3 -3
  170. package/src/drawer/drawer.ts +28 -11
  171. package/src/dropdown/dropdown-item.ts +2 -2
  172. package/src/dropdown/dropdown.ts +2 -2
  173. package/src/icon/defines.ts +8 -1
  174. package/src/icon/icon.ts +32 -14
  175. package/src/icon/index.ts +1 -1
  176. package/src/icon/registry.ts +2 -2
  177. package/src/menu/defines.ts +1 -0
  178. package/src/menu/menu-item.ts +14 -4
  179. package/src/menu/menu.ts +5 -2
  180. package/src/navbar/navbar.ts +3 -3
  181. package/src/number-input/number-input.ts +5 -5
  182. package/src/pagination/pagination.ts +3 -3
  183. package/src/progress-bar/progress-bar.ts +3 -3
  184. package/src/radio-group/radio-group.ts +12 -8
  185. package/src/select/select-option.ts +2 -2
  186. package/src/select/select.ts +5 -5
  187. package/src/slider/slider.ts +6 -6
  188. package/src/spinner/spinner.ts +4 -4
  189. package/src/styles/color.css +91 -91
  190. package/src/styles/components/action-button.css +12 -12
  191. package/src/styles/components/alert.css +22 -28
  192. package/src/styles/components/badge.css +13 -20
  193. package/src/styles/components/breadcrumb-item.css +7 -7
  194. package/src/styles/components/button-group.css +2 -0
  195. package/src/styles/components/button.css +39 -50
  196. package/src/styles/components/card.css +69 -30
  197. package/src/styles/components/checkbox.css +22 -16
  198. package/src/styles/components/copy-button.css +22 -33
  199. package/src/styles/components/detail.css +51 -39
  200. package/src/styles/components/dialog.css +11 -11
  201. package/src/styles/components/divider.css +3 -3
  202. package/src/styles/components/drawer.css +59 -27
  203. package/src/styles/components/dropdown-item.css +7 -8
  204. package/src/styles/components/dropdown.css +3 -4
  205. package/src/styles/components/field-label.css +13 -13
  206. package/src/styles/components/icon-button.css +25 -36
  207. package/src/styles/components/icon.css +1 -1
  208. package/src/styles/components/menu-item.css +13 -8
  209. package/src/styles/components/navbar.css +23 -44
  210. package/src/styles/components/number-input.css +27 -36
  211. package/src/styles/components/pagination.css +31 -31
  212. package/src/styles/components/progress-bar.css +2 -3
  213. package/src/styles/components/radio-group.css +88 -83
  214. package/src/styles/components/select-option.css +5 -5
  215. package/src/styles/components/select.css +21 -33
  216. package/src/styles/components/slider.css +56 -34
  217. package/src/styles/components/spinner.css +7 -9
  218. package/src/styles/components/switch.css +21 -19
  219. package/src/styles/components/tab.css +4 -5
  220. package/src/styles/components/tabs.css +48 -1
  221. package/src/styles/components/tag.css +14 -21
  222. package/src/styles/components/text-input.css +13 -22
  223. package/src/styles/components/textarea.css +12 -21
  224. package/src/styles/components/tooltip.css +4 -5
  225. package/src/styles/components/tree-item.css +12 -12
  226. package/src/styles/layout.css +5 -2
  227. package/src/styles/radius.css +25 -0
  228. package/src/styles/size.css +7 -7
  229. package/src/styles/variables.css +271 -247
  230. package/src/switch/switch.ts +6 -6
  231. package/src/tabs/defines.ts +1 -0
  232. package/src/tabs/tab-panel.ts +1 -1
  233. package/src/tabs/tab.ts +1 -1
  234. package/src/tabs/tabs.ts +14 -2
  235. package/src/tag/tag.ts +4 -4
  236. package/src/text-input/text-input.ts +5 -5
  237. package/src/textarea/textarea.ts +5 -5
  238. package/src/tooltip/tooltip.ts +2 -2
  239. package/src/tree/tree-item.ts +2 -2
  240. package/src/tree/tree.ts +2 -2
  241. package/dist/chunks/action-button.cjs +0 -296
  242. package/dist/chunks/action-button.cjs.map +0 -1
  243. package/dist/chunks/action-button.js +0 -297
  244. package/dist/chunks/action-button.js.map +0 -1
  245. package/dist/chunks/aeico-component.cjs +0 -17
  246. package/dist/chunks/aeico-component.cjs.map +0 -1
  247. package/dist/chunks/aeico-component.js +0 -18
  248. package/dist/chunks/aeico-component.js.map +0 -1
  249. package/dist/chunks/alert.cjs +0 -170
  250. package/dist/chunks/alert.cjs.map +0 -1
  251. package/dist/chunks/alert.js +0 -171
  252. package/dist/chunks/alert.js.map +0 -1
  253. package/dist/chunks/badge.cjs +0 -85
  254. package/dist/chunks/badge.cjs.map +0 -1
  255. package/dist/chunks/badge.js +0 -86
  256. package/dist/chunks/badge.js.map +0 -1
  257. package/dist/chunks/breadcrumb-item.cjs +0 -261
  258. package/dist/chunks/breadcrumb-item.cjs.map +0 -1
  259. package/dist/chunks/breadcrumb-item.js +0 -262
  260. package/dist/chunks/breadcrumb-item.js.map +0 -1
  261. package/dist/chunks/button-group.cjs +0 -79
  262. package/dist/chunks/button-group.cjs.map +0 -1
  263. package/dist/chunks/button-group.js +0 -80
  264. package/dist/chunks/button-group.js.map +0 -1
  265. package/dist/chunks/button.cjs +0 -348
  266. package/dist/chunks/button.cjs.map +0 -1
  267. package/dist/chunks/button.js +0 -349
  268. package/dist/chunks/button.js.map +0 -1
  269. package/dist/chunks/card.cjs +0 -93
  270. package/dist/chunks/card.cjs.map +0 -1
  271. package/dist/chunks/card.js +0 -94
  272. package/dist/chunks/card.js.map +0 -1
  273. package/dist/chunks/checkbox.cjs +0 -86
  274. package/dist/chunks/checkbox.cjs.map +0 -1
  275. package/dist/chunks/checkbox.js +0 -87
  276. package/dist/chunks/checkbox.js.map +0 -1
  277. package/dist/chunks/color.cjs +0 -4
  278. package/dist/chunks/color.cjs.map +0 -1
  279. package/dist/chunks/color.js +0 -5
  280. package/dist/chunks/color.js.map +0 -1
  281. package/dist/chunks/copy-button.cjs +0 -168
  282. package/dist/chunks/copy-button.cjs.map +0 -1
  283. package/dist/chunks/copy-button.js +0 -169
  284. package/dist/chunks/copy-button.js.map +0 -1
  285. package/dist/chunks/detail.cjs +0 -146
  286. package/dist/chunks/detail.cjs.map +0 -1
  287. package/dist/chunks/detail.js +0 -147
  288. package/dist/chunks/detail.js.map +0 -1
  289. package/dist/chunks/dialog.cjs +0 -117
  290. package/dist/chunks/dialog.cjs.map +0 -1
  291. package/dist/chunks/dialog.js +0 -118
  292. package/dist/chunks/dialog.js.map +0 -1
  293. package/dist/chunks/divider.cjs +0 -80
  294. package/dist/chunks/divider.cjs.map +0 -1
  295. package/dist/chunks/divider.js +0 -81
  296. package/dist/chunks/divider.js.map +0 -1
  297. package/dist/chunks/drawer.cjs +0 -180
  298. package/dist/chunks/drawer.cjs.map +0 -1
  299. package/dist/chunks/drawer.js +0 -181
  300. package/dist/chunks/drawer.js.map +0 -1
  301. package/dist/chunks/dropdown-button.cjs +0 -534
  302. package/dist/chunks/dropdown-button.cjs.map +0 -1
  303. package/dist/chunks/dropdown-button.js +0 -535
  304. package/dist/chunks/dropdown-button.js.map +0 -1
  305. package/dist/chunks/icon-button.cjs +0 -35
  306. package/dist/chunks/icon-button.cjs.map +0 -1
  307. package/dist/chunks/icon-button.js +0 -36
  308. package/dist/chunks/icon-button.js.map +0 -1
  309. package/dist/chunks/icon.cjs +0 -108
  310. package/dist/chunks/icon.cjs.map +0 -1
  311. package/dist/chunks/icon.js +0 -109
  312. package/dist/chunks/icon.js.map +0 -1
  313. package/dist/chunks/menu.cjs +0 -396
  314. package/dist/chunks/menu.cjs.map +0 -1
  315. package/dist/chunks/menu.js +0 -397
  316. package/dist/chunks/menu.js.map +0 -1
  317. package/dist/chunks/navbar.cjs +0 -142
  318. package/dist/chunks/navbar.cjs.map +0 -1
  319. package/dist/chunks/navbar.js +0 -143
  320. package/dist/chunks/navbar.js.map +0 -1
  321. package/dist/chunks/pagination.cjs +0 -475
  322. package/dist/chunks/pagination.cjs.map +0 -1
  323. package/dist/chunks/pagination.js +0 -476
  324. package/dist/chunks/pagination.js.map +0 -1
  325. package/dist/chunks/progress-bar.cjs +0 -101
  326. package/dist/chunks/progress-bar.cjs.map +0 -1
  327. package/dist/chunks/progress-bar.js +0 -102
  328. package/dist/chunks/progress-bar.js.map +0 -1
  329. package/dist/chunks/radio.cjs +0 -185
  330. package/dist/chunks/radio.cjs.map +0 -1
  331. package/dist/chunks/radio.js +0 -186
  332. package/dist/chunks/radio.js.map +0 -1
  333. package/dist/chunks/select.cjs +0 -381
  334. package/dist/chunks/select.cjs.map +0 -1
  335. package/dist/chunks/select.js +0 -382
  336. package/dist/chunks/select.js.map +0 -1
  337. package/dist/chunks/size.cjs +0 -4
  338. package/dist/chunks/size.cjs.map +0 -1
  339. package/dist/chunks/size.js +0 -5
  340. package/dist/chunks/size.js.map +0 -1
  341. package/dist/chunks/slider.cjs +0 -611
  342. package/dist/chunks/slider.cjs.map +0 -1
  343. package/dist/chunks/slider.js +0 -612
  344. package/dist/chunks/slider.js.map +0 -1
  345. package/dist/chunks/spinner.cjs +0 -102
  346. package/dist/chunks/spinner.cjs.map +0 -1
  347. package/dist/chunks/spinner.js +0 -103
  348. package/dist/chunks/spinner.js.map +0 -1
  349. package/dist/chunks/switch.cjs +0 -167
  350. package/dist/chunks/switch.cjs.map +0 -1
  351. package/dist/chunks/switch.js +0 -168
  352. package/dist/chunks/switch.js.map +0 -1
  353. package/dist/chunks/tab-panel.cjs +0 -165
  354. package/dist/chunks/tab-panel.cjs.map +0 -1
  355. package/dist/chunks/tab-panel.js +0 -166
  356. package/dist/chunks/tab-panel.js.map +0 -1
  357. package/dist/chunks/tag.cjs +0 -108
  358. package/dist/chunks/tag.cjs.map +0 -1
  359. package/dist/chunks/tag.js +0 -109
  360. package/dist/chunks/tag.js.map +0 -1
  361. package/dist/chunks/text-input.cjs +0 -54
  362. package/dist/chunks/text-input.cjs.map +0 -1
  363. package/dist/chunks/text-input.js +0 -55
  364. package/dist/chunks/text-input.js.map +0 -1
  365. package/dist/chunks/textarea.cjs +0 -137
  366. package/dist/chunks/textarea.cjs.map +0 -1
  367. package/dist/chunks/textarea.js +0 -138
  368. package/dist/chunks/textarea.js.map +0 -1
  369. package/dist/chunks/tooltip.cjs +0 -293
  370. package/dist/chunks/tooltip.cjs.map +0 -1
  371. package/dist/chunks/tooltip.js +0 -294
  372. package/dist/chunks/tooltip.js.map +0 -1
  373. package/dist/chunks/tree.cjs +0 -468
  374. package/dist/chunks/tree.cjs.map +0 -1
  375. package/dist/chunks/tree.js +0 -469
  376. package/dist/chunks/tree.js.map +0 -1
  377. package/dist/chunks/variables.cjs +0 -372
  378. package/dist/chunks/variables.cjs.map +0 -1
  379. package/dist/chunks/variables.js +0 -373
  380. package/dist/chunks/variables.js.map +0 -1
package/dist/switch.js CHANGED
@@ -1,6 +1,1016 @@
1
- import { S, S as S2 } from "./chunks/switch.js";
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
5
+ var __typeError = (msg) => {
6
+ throw TypeError(msg);
7
+ };
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
11
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
12
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
13
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
14
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
15
+ var __runInitializers = (array, flags, self, value) => {
16
+ 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);
17
+ return value;
18
+ };
19
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
20
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
21
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
22
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
23
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
24
+ return __privateGet(this, extra);
25
+ }, set [name](x) {
26
+ return __privateSet(this, extra, x);
27
+ } }, name));
28
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
29
+ for (var i = decorators.length - 1; i >= 0; i--) {
30
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
31
+ if (k) {
32
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
33
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
34
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
35
+ }
36
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
37
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
38
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
39
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
40
+ }
41
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
42
+ };
43
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
44
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
45
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
46
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
47
+ 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);
48
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
49
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
50
+
51
+ // src/aeico-field.ts
52
+ import { tags } from "aeico";
53
+
54
+ // src/aeico-component.ts
55
+ import { AeicoElement } from "aeico";
56
+
57
+ // src/utils.ts
58
+ var SVG_NS = "http://www.w3.org/2000/svg";
59
+ function toKebab(str) {
60
+ const cleaned = str.replace(/^[_\d]+/, "");
61
+ return cleaned.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
62
+ }
63
+
64
+ // src/aeico-component.ts
65
+ var TAG_NAME_PREFIX = "ae";
66
+ var AeicoComponent = class extends AeicoElement {
67
+ static register(name) {
68
+ const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;
69
+ super.register(tagName);
70
+ }
71
+ };
72
+ var aeico_component_default = AeicoComponent;
73
+
74
+ // src/aeico-field.ts
75
+ var AeicoField = class _AeicoField extends aeico_component_default {
76
+ /**
77
+ * Define base field properties (extends AeicoElement properties)
78
+ */
79
+ static props = {
80
+ value: { type: String },
81
+ defaultValue: { type: String },
82
+ resettable: { type: Boolean },
83
+ resetText: { type: String },
84
+ resetTitle: { type: String },
85
+ clearable: { type: Boolean },
86
+ clearText: { type: String },
87
+ clearTitle: { type: String },
88
+ actionButtonStyle: { type: String },
89
+ size: { type: String },
90
+ disabled: { type: Boolean },
91
+ label: { type: String },
92
+ labelPlacement: { type: String },
93
+ required: { type: Boolean },
94
+ helperText: { type: String },
95
+ error: { type: String }
96
+ };
97
+ /**
98
+ * Property watchers
99
+ */
100
+ static watchers = {
101
+ disabled: "onDisabledChanged",
102
+ error: "onErrorChanged"
103
+ };
104
+ static _fieldIdCounter = 0;
105
+ _fieldId;
106
+ constructor() {
107
+ super();
108
+ this._fieldId = `ae-field-${++_AeicoField._fieldIdCounter}`;
109
+ }
110
+ /**
111
+ * The underlying form control element (input, select, etc.)
112
+ * Subclasses should set this to their specific element
113
+ */
114
+ fieldElement = null;
115
+ resetBtn = null;
116
+ clearBtn = null;
117
+ boundOnChange = () => this.setValue(this.getValue(), { silent: false, action: "change" });
118
+ boundOnReset = () => this.onReset();
119
+ boundOnClear = () => this.onClear();
120
+ /**
121
+ * Lifecycle: Component connected to DOM
122
+ */
123
+ connectedCallback() {
124
+ super.connectedCallback();
125
+ }
126
+ /**
127
+ * Lifecycle: Component disconnected from DOM
128
+ */
129
+ disconnectedCallback() {
130
+ super.disconnectedCallback();
131
+ }
132
+ /**
133
+ * Render action buttons (clear/reset) using this.builder.
134
+ * Must be called from within a build() callback.
135
+ */
136
+ renderActionButtons(force = false) {
137
+ const style = this.actionButtonStyle || "integrated";
138
+ const hasActions = force || this.clearable || this.resettable;
139
+ if (hasActions && style === "integrated") {
140
+ tags.div({ className: "action-controls" }, () => {
141
+ this.renderClearButton(force);
142
+ this.renderResetButton(force);
143
+ });
144
+ } else {
145
+ this.renderClearButton(force);
146
+ this.renderResetButton(force);
147
+ }
148
+ }
149
+ renderResetButton(force = false) {
150
+ const { button } = tags;
151
+ const style = this.actionButtonStyle || "integrated";
152
+ if (force || this.resettable) {
153
+ const className = style === "integrated" ? "reset-btn action-btn" : "reset-btn";
154
+ this.resetBtn = button({
155
+ className,
156
+ textContent: this.resetText || "\u21BA",
157
+ title: this.resetTitle || "\u21BA",
158
+ "@click": this.boundOnReset
159
+ });
160
+ }
161
+ }
162
+ renderClearButton(force = false) {
163
+ const { button } = tags;
164
+ const style = this.actionButtonStyle || "integrated";
165
+ if (force || this.clearable) {
166
+ const className = style === "integrated" ? "clear-btn action-btn" : "clear-btn";
167
+ this.clearBtn = button({
168
+ className,
169
+ textContent: this.clearText || "\u2715",
170
+ title: this.clearTitle || "\u2715",
171
+ "@click": this.boundOnClear
172
+ });
173
+ }
174
+ }
175
+ /**
176
+ * Returns a stable unique ID for this field instance,
177
+ * used to associate <label htmlFor> with the underlying input.
178
+ */
179
+ getFieldId() {
180
+ return this._fieldId;
181
+ }
182
+ /**
183
+ * Renders a <label> element when the `label` prop is set.
184
+ * Call this as the first statement inside the render() html() callback.
185
+ * @param fieldId - The id to set on the underlying form control element (pass to input via id prop)
186
+ */
187
+ renderLabel(fieldId) {
188
+ if (!this.label) return;
189
+ const { span } = tags;
190
+ tags.label({ id: `${fieldId}-label`, className: "field-label", for: fieldId }, () => {
191
+ span({ textContent: this.label });
192
+ if (this.required) {
193
+ span({ className: "field-required", "aria-hidden": "true", textContent: " *" });
194
+ }
195
+ });
196
+ }
197
+ /**
198
+ * Renders helper text below the field. Hidden when `error` is set.
199
+ * Call this after the field-body div in render().
200
+ */
201
+ renderHelperText() {
202
+ if (!this.helperText || this.error) return;
203
+ const { span } = tags;
204
+ span({ className: "field-helper", textContent: this.helperText });
205
+ }
206
+ /**
207
+ * Renders an error message below the field when `error` is set.
208
+ * Call this after renderHelperText() in render().
209
+ */
210
+ renderError() {
211
+ if (!this.error) return;
212
+ const { span } = tags;
213
+ span({ className: "field-error", textContent: this.error });
214
+ }
215
+ /**
216
+ * Watcher for disabled property
217
+ */
218
+ onDisabledChanged(newValue) {
219
+ if (this.fieldElement) {
220
+ this.fieldElement.disabled = Boolean(newValue);
221
+ }
222
+ }
223
+ /**
224
+ * Watcher for error property — syncs aria-invalid on the field element
225
+ */
226
+ onErrorChanged(newValue) {
227
+ if (this.fieldElement) {
228
+ if (newValue) {
229
+ this.fieldElement.setAttribute("aria-invalid", "true");
230
+ } else {
231
+ this.fieldElement.removeAttribute("aria-invalid");
232
+ }
233
+ }
234
+ }
235
+ /**
236
+ * Lifecycle: called after every render update.
237
+ * Keeps aria-invalid on fieldElement in sync regardless of watcher timing.
238
+ */
239
+ onUpdated(_changedProps) {
240
+ if (!this.fieldElement) return;
241
+ if (this.error) {
242
+ this.fieldElement.setAttribute("aria-invalid", "true");
243
+ } else {
244
+ this.fieldElement.removeAttribute("aria-invalid");
245
+ }
246
+ }
247
+ /**
248
+ * Returns true if the field passes constraint validation.
249
+ * Delegates to the underlying fieldElement when available;
250
+ * falls back to a manual required-check otherwise.
251
+ */
252
+ checkValidity() {
253
+ if (this.fieldElement) {
254
+ return this.fieldElement.checkValidity();
255
+ }
256
+ if (this.required) {
257
+ const v = this.value;
258
+ return v !== void 0 && v !== "" && v !== null;
259
+ }
260
+ return true;
261
+ }
262
+ /**
263
+ * Reports validity, showing the browser's built-in validation UI when possible.
264
+ */
265
+ reportValidity() {
266
+ if (this.fieldElement) {
267
+ return this.fieldElement.reportValidity();
268
+ }
269
+ return this.checkValidity();
270
+ }
271
+ /**
272
+ * Render the field component
273
+ * Override in subclass to provide custom rendering
274
+ */
275
+ render() {
276
+ }
277
+ /**
278
+ * Get current value from the field element
279
+ * Default implementation returns the value property of fieldElement
280
+ * Override in subclasses if needed (e.g., checkbox uses checked instead of value)
281
+ *
282
+ * @returns Current field value
283
+ */
284
+ getValue() {
285
+ return this.fieldElement?.value || "";
286
+ }
287
+ /**
288
+ * Write value to the underlying UI element and sync props
289
+ * Subclasses must override this to update their specific UI element
290
+ *
291
+ * @param _value New value to write to the element
292
+ */
293
+ writeValue(_value) {
294
+ }
295
+ /**
296
+ * Get event payload for change events
297
+ * Override in subclasses to customize event data (e.g., { checked, oldChecked } for checkbox)
298
+ *
299
+ * @param value New value
300
+ * @param oldValue Previous value
301
+ * @param action Action type
302
+ * @returns Event payload object
303
+ */
304
+ getEventPayload(value, oldValue, action) {
305
+ return { value, oldValue, action };
306
+ }
307
+ /**
308
+ * Update field value programmatically (internal method)
309
+ * Subclasses should provide type-safe public wrappers (e.g., change() method)
310
+ *
311
+ * @param value New value
312
+ * @param options.silent If true, won't emit change event (default: true)
313
+ * @param options.action Action type for the event (default: 'change')
314
+ */
315
+ setValue(value, options) {
316
+ const oldValue = this.getValue();
317
+ this.value = value;
318
+ this.writeValue(value);
319
+ if (options?.silent === false) {
320
+ const payload = this.getEventPayload(value, oldValue, options.action || "change");
321
+ this.emit("change", { detail: payload });
322
+ }
323
+ }
324
+ /**
325
+ * Reset field to specified value or default value
326
+ *
327
+ * @param value Value to reset to, defaults to defaultValue prop
328
+ * @param options.silent If false, will emit reset event (default: true)
329
+ */
330
+ reset(value, options) {
331
+ const resetValue = value !== void 0 ? value : this.defaultValue;
332
+ this.setValue(resetValue, { ...options, action: "reset" });
333
+ }
334
+ /**
335
+ * Clear the field value
336
+ *
337
+ * @param options.silent If false, will emit clear event (default: true)
338
+ */
339
+ clear(options) {
340
+ this.setValue("", { ...options, action: "clear" });
341
+ }
342
+ /**
343
+ * Handle clear button click
344
+ * Clears the field and dispatches event
345
+ */
346
+ onClear() {
347
+ this.clear({ silent: false });
348
+ }
349
+ /**
350
+ * Handle reset button click
351
+ * Resets to default value and dispatches event
352
+ */
353
+ onReset() {
354
+ this.reset(void 0, { silent: false });
355
+ }
356
+ };
357
+ var aeico_field_default = AeicoField;
358
+
359
+ // src/switch/switch.ts
360
+ import { html as html2, prop } from "aeico";
361
+
362
+ // src/icon/icon.ts
363
+ import { html } from "aeico";
364
+
365
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css
366
+ var variables_default = `:root,
367
+ :host {
368
+ --ae-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue",
369
+ "Noto Sans", "Liberation Sans", Arial, sans-serif,
370
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
371
+ --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
372
+ "Liberation Mono", "Courier New", monospace;
373
+ font-family: var(--ae-font-sans-serif);
374
+ --ae-blue: #0e639c;
375
+ --ae-green: #28a745;
376
+ --ae-red: #dc3545;
377
+ --ae-yellow: #ffc107;
378
+ --ae-cyan: #17a2b8;
379
+ --ae-gray: #6e6e6e;
380
+ --ae-slate: #64748b;
381
+ --ae-dark: #343a40;
382
+ --ae-light: #f8f9fa;
383
+ }
384
+
385
+ :root,
386
+ :host {
387
+ /* Blue */
388
+ --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);
389
+ --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);
390
+ --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);
391
+ --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);
392
+ --ae-blue-500: var(--ae-blue);
393
+ --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);
394
+ --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);
395
+ --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);
396
+ --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);
397
+
398
+ /* Green */
399
+ --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);
400
+ --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);
401
+ --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);
402
+ --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);
403
+ --ae-green-500: var(--ae-green);
404
+ --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);
405
+ --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);
406
+ --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);
407
+ --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);
408
+
409
+ /* Red */
410
+ --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);
411
+ --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);
412
+ --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);
413
+ --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);
414
+ --ae-red-500: var(--ae-red);
415
+ --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);
416
+ --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);
417
+ --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);
418
+ --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);
419
+
420
+ /* Yellow */
421
+ --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);
422
+ --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);
423
+ --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);
424
+ --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);
425
+ --ae-yellow-500: var(--ae-yellow);
426
+ --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);
427
+ --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);
428
+ --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);
429
+ --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);
430
+
431
+ /* Cyan */
432
+ --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);
433
+ --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);
434
+ --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);
435
+ --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);
436
+ --ae-cyan-500: var(--ae-cyan);
437
+ --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);
438
+ --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);
439
+ --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);
440
+ --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);
441
+
442
+ /* Gray (neutral \u2014 base #6e6e6e) */
443
+ --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);
444
+ --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);
445
+ --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);
446
+ --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);
447
+ --ae-gray-500: var(--ae-gray);
448
+ --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);
449
+ --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);
450
+ --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);
451
+ --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);
452
+
453
+ /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */
454
+ --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);
455
+ --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);
456
+ --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);
457
+ --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);
458
+ --ae-slate-500: var(--ae-slate);
459
+ --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);
460
+ --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);
461
+ --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);
462
+ --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);
463
+
464
+ /* Dark (base #343a40) */
465
+ --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);
466
+ --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);
467
+ --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);
468
+ --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);
469
+ --ae-dark-500: var(--ae-dark);
470
+ --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);
471
+ --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);
472
+ --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);
473
+ --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);
474
+
475
+ /* Light (base #f8f9fa) */
476
+ --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);
477
+ --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);
478
+ --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);
479
+ --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);
480
+ --ae-light-500: var(--ae-light);
481
+ --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);
482
+ --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);
483
+ --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);
484
+ --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);
485
+ }
486
+
487
+ :root,
488
+ :host {
489
+ /* Hover / active mix (light default \u2014 overridden in \xA7 6 dark) */
490
+ --ae-color-mix-hover: black 10%;
491
+ --ae-color-mix-active: black 20%;
492
+
493
+ /* Primary (Blue) */
494
+ --ae-color-primary: var(--ae-blue-500);
495
+ --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));
496
+ --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));
497
+ --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));
498
+
499
+ /* Success (Green) */
500
+ --ae-color-success: var(--ae-green-500);
501
+ --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));
502
+ --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));
503
+ --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));
504
+
505
+ /* Danger (Red) */
506
+ --ae-color-danger: var(--ae-red-500);
507
+ --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));
508
+ --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));
509
+ --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));
510
+
511
+ /* Warning (Yellow) */
512
+ --ae-color-warning: var(--ae-yellow-500);
513
+ --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));
514
+ --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));
515
+ --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));
516
+
517
+ /* Info (Cyan) */
518
+ --ae-color-info: var(--ae-cyan-500);
519
+ --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));
520
+ --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));
521
+ --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));
522
+
523
+ /* Secondary (Slate) \u2014 base differs per theme, overridden in \xA7 6 dark */
524
+ --ae-color-secondary: var(--ae-slate-500);
525
+ --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));
526
+ --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));
527
+ --ae-color-secondary-text: var(--ae-slate-700);
528
+ }
529
+
530
+
531
+ .theme-light,
532
+ :root[theme="light"],
533
+ :host([theme="light"]),
534
+ :host-context([theme="light"]),
535
+ :where(:root),
536
+ :host {
537
+ color-scheme: light;
538
+
539
+ /* Gray UI aliases \u2014 lighter palette steps for elements on white background */
540
+ --ae-color-gray-dark: var(--ae-gray-400);
541
+ --ae-color-gray: var(--ae-gray-300);
542
+ --ae-color-gray-light: var(--ae-gray-200);
543
+ --ae-color-gray-lighter: var(--ae-gray-100);
544
+ --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);
545
+
546
+ /* Text */
547
+ --ae-color-text-main: var(--ae-dark-700);
548
+ --ae-color-text-muted: var(--ae-gray-600);
549
+ --ae-color-text-disabled: var(--ae-gray-300);
550
+ --ae-color-text-link: var(--ae-blue-500);
551
+ --ae-color-text-link-hover: var(--ae-blue-700);
552
+
553
+ /* Surfaces */
554
+ --ae-surface-sunken: var(--ae-light-500);
555
+ --ae-surface-base: white;
556
+ --ae-surface-raised: var(--ae-light-500);
557
+ --ae-surface-overlay: white;
558
+ --ae-color-overlay: rgba(0, 0, 0, 0.4);
559
+
560
+ /* Borders */
561
+ --ae-border-subtle: rgba(0, 0, 0, 0.08);
562
+ --ae-border-default: rgba(0, 0, 0, 0.15);
563
+ --ae-border-hover: rgba(0, 0, 0, 0.25);
564
+ --ae-border-focus: var(--ae-color-primary);
565
+ --ae-border-disabled: rgba(0, 0, 0, 0.06);
566
+
567
+ /* Focus ring */
568
+ --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);
569
+ --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);
570
+
571
+ /* Subtle intent tokens \u2014 light context */
572
+ --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);
573
+ --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);
574
+ --ae-color-primary-text-emphasis: var(--ae-blue-700);
575
+
576
+ --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);
577
+ --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);
578
+ --ae-color-success-text-emphasis: var(--ae-green-700);
579
+
580
+ --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);
581
+ --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);
582
+ --ae-color-danger-text-emphasis: var(--ae-red-700);
583
+
584
+ --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);
585
+ --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);
586
+ --ae-color-warning-text-emphasis: var(--ae-yellow-700);
587
+
588
+ --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);
589
+ --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);
590
+ --ae-color-info-text-emphasis: var(--ae-cyan-700);
591
+
592
+ --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);
593
+ --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);
594
+ --ae-color-secondary-text-emphasis: var(--ae-slate-700);
595
+
596
+ --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */
597
+ --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */
598
+
599
+ --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */
600
+ --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */
601
+
602
+ /* Component tokens \u2014 light defaults */
603
+ --ae-action-btn-bg: var(--ae-gray-200);
604
+ --ae-action-btn-bg-hover: var(--ae-color-primary);
605
+ --ae-action-btn-color: var(--ae-gray-600);
606
+ --ae-action-btn-color-hover: white;
607
+
608
+ --ae-clear-btn-bg-hover: var(--ae-color-danger);
609
+ --ae-clear-btn-color-hover: white;
610
+
611
+ --ae-reset-btn-border-radius: var(--ae-radius-xs);
612
+ --ae-reset-btn-bg: var(--ae-action-btn-bg);
613
+ --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);
614
+ --ae-reset-btn-color: var(--ae-action-btn-color);
615
+ --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);
616
+ --ae-reset-btn-transition: all 0.12s;
617
+
618
+ --ae-clear-btn-border-radius: var(--ae-radius-xs);
619
+ --ae-clear-btn-bg: var(--ae-action-btn-bg);
620
+ --ae-clear-btn-color: var(--ae-action-btn-color);
621
+ --ae-clear-btn-transition: all 0.12s;
622
+ }
623
+
624
+ :root,
625
+ :host {
626
+ --ae-size-scale: 1;
627
+ --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */
628
+ --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */
629
+ --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */
630
+ --ae-size-m: var(--ae-size-base); /* 16px */
631
+ --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */
632
+ --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */
633
+ --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */
634
+ --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */
635
+ }
636
+
637
+ /* Border-radius tokens \u2014 shared across all components */
638
+ :root,
639
+ :host {
640
+ /**
641
+ * Unified border-radius hook for all components.
642
+ *
643
+ * Not set by default \u2014 each component falls back to its own --ae-radius-*
644
+ * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).
645
+ *
646
+ * Usage:
647
+ * :root { --ae-border-radius: 0; } // global: all components square
648
+ * :root { --ae-border-radius: 999px; } // global: all components pill
649
+ * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular
650
+ * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar
651
+ *
652
+ * To restore a component to its own default:
653
+ * ae-card { --ae-border-radius: initial; }
654
+ */
655
+
656
+ --ae-radius-square: 0;
657
+ --ae-radius-xs: 2px;
658
+ --ae-radius-sm: 4px;
659
+ --ae-radius-md: 6px;
660
+ --ae-radius-lg: 8px;
661
+ --ae-radius-xl: 12px;
662
+ --ae-radius-pill: 999px;
663
+ --ae-radius-circle: 50%;
664
+ }
665
+
666
+ /* Layout tokens \u2014 defined on :root so all light DOM elements can use them */
667
+ :root,
668
+ :host {
669
+ --container-max-width: 1280px;
670
+ --container-padding-x: 1.5rem;
671
+ }
672
+
673
+ .theme-dark,
674
+ :root[theme="dark"],
675
+ :host([theme="dark"]),
676
+ :host-context([theme="dark"]) {
677
+ color-scheme: dark;
678
+
679
+ /* Hover / active \u2014 slightly gentler on dark backgrounds */
680
+ --ae-color-mix-hover: black 8%;
681
+ --ae-color-mix-active: black 16%;
682
+
683
+ /* Gray UI aliases \u2014 darker palette steps for elements on dark background */
684
+ --ae-color-gray-dark: var(--ae-gray-800);
685
+ --ae-color-gray: var(--ae-gray-700);
686
+ --ae-color-gray-light: var(--ae-gray-600);
687
+ --ae-color-gray-lighter: var(--ae-gray-500);
688
+ --ae-color-gray-lightest: var(--ae-gray-400);
689
+
690
+ /* Secondary \u2014 deeper base on dark background */
691
+ --ae-color-secondary: var(--ae-slate-700);
692
+ --ae-color-secondary-text: var(--ae-slate-300);
693
+
694
+ /* Text */
695
+ --ae-color-text-main: white;
696
+ --ae-color-text-muted: var(--ae-gray-200);
697
+ --ae-color-text-disabled: var(--ae-gray-500);
698
+ --ae-color-text-link: var(--ae-blue-300);
699
+ --ae-color-text-link-hover: var(--ae-blue-200);
700
+
701
+ /* Surfaces */
702
+ --ae-surface-sunken: var(--ae-gray-900);
703
+ --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);
704
+ --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);
705
+ --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);
706
+ --ae-color-overlay: rgba(0, 0, 0, 0.6);
707
+
708
+ /* Borders */
709
+ --ae-border-subtle: rgba(255, 255, 255, 0.08);
710
+ --ae-border-default: rgba(255, 255, 255, 0.12);
711
+ --ae-border-hover: rgba(255, 255, 255, 0.20);
712
+ --ae-border-focus: var(--ae-color-primary);
713
+ --ae-border-disabled: rgba(255, 255, 255, 0.06);
714
+
715
+ /* Focus ring */
716
+ --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);
717
+ --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);
718
+
719
+ /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */
720
+ --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);
721
+ --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);
722
+ --ae-color-primary-text-emphasis: var(--ae-blue-300);
723
+
724
+ --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);
725
+ --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);
726
+ --ae-color-success-text-emphasis: var(--ae-green-300);
727
+
728
+ --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);
729
+ --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);
730
+ --ae-color-danger-text-emphasis: var(--ae-red-300);
731
+
732
+ --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);
733
+ --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);
734
+ --ae-color-warning-text-emphasis: var(--ae-yellow-300);
735
+
736
+ --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);
737
+ --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);
738
+ --ae-color-info-text-emphasis: var(--ae-cyan-300);
739
+
740
+ --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);
741
+ --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);
742
+ --ae-color-secondary-text-emphasis: var(--ae-slate-300);
743
+
744
+ --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);
745
+ --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);
746
+
747
+ --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);
748
+ --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);
749
+
750
+ /* Component tokens \u2014 dark overrides */
751
+ --ae-action-btn-bg: var(--ae-color-gray);
752
+ --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));
753
+ --ae-action-btn-color: var(--ae-gray-400);
754
+ --ae-action-btn-color-hover: var(--ae-cyan-300);
755
+ --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));
756
+ --ae-clear-btn-color-hover: var(--ae-red-300);
757
+ }
758
+ `;
759
+
760
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/size.css
761
+ var size_default = ':host([size="xs"]) { font-size: var(--ae-size-xs); }\n:host([size="sm"]) { font-size: var(--ae-size-s); }\n:host([size="md"]) { font-size: var(--ae-size-m); }\n:host([size="lg"]) { font-size: var(--ae-size-l); }\n:host([size="xl"]) { font-size: var(--ae-size-xl); }\n:host([size="3xs"]) { font-size: var(--ae-size-3xs); }\n:host([size="2xs"]) { font-size: var(--ae-size-2xs); }\n';
762
+
763
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/color.css
764
+ var color_default = ':host {\n --ae-color-solid: var(--ae-color-gray);\n --ae-color-solid-hover: color-mix(in srgb, var(--ae-color-solid), var(--ae-color-mix-hover));\n --ae-color-solid-active: color-mix(in srgb, var(--ae-color-solid), var(--ae-color-mix-active));\n --ae-color-on-solid: var(--ae-color-text-main);\n --ae-color-border: var(--ae-color-gray);\n --ae-color-border-hover: color-mix(in srgb, var(--ae-color-border), var(--ae-color-mix-hover));\n --ae-color-accent: var(--ae-color-text-muted);\n --ae-color-accent-hover: var(--ae-color-text-main);\n --ae-color-subtle: var(--ae-border-subtle);\n --ae-color-subtle-hover: var(--ae-border-default);\n --ae-color-bg-subtle: var(--ae-border-subtle);\n --ae-color-text-subtle: var(--ae-color-text-muted);\n --ae-color-border-subtle: var(--ae-border-default);\n}\n\n:host([color="primary"]) {\n --ae-color-solid: var(--ae-color-primary);\n --ae-color-on-solid: white;\n --ae-color-border: var(--ae-color-primary);\n --ae-color-accent: var(--ae-color-text-link);\n --ae-color-accent-hover: var(--ae-color-text-link-hover);\n --ae-color-subtle: var(--ae-color-primary-bg-subtle);\n --ae-color-subtle-hover: rgb(from var(--ae-blue) r g b / 0.15);\n --ae-color-bg-subtle: var(--ae-color-primary-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-primary-text-emphasis);\n --ae-color-border-subtle: var(--ae-color-primary-border-subtle);\n}\n\n:host([color="secondary"]) {\n --ae-color-solid: var(--ae-color-secondary);\n --ae-color-on-solid: white;\n --ae-color-border: var(--ae-color-secondary-hover);\n --ae-color-accent: var(--ae-color-secondary-text-emphasis);\n --ae-color-accent-hover: var(--ae-color-text-main);\n --ae-color-subtle: rgb(from var(--ae-slate) r g b / 0.06);\n --ae-color-subtle-hover: rgb(from var(--ae-slate) r g b / 0.12);\n --ae-color-bg-subtle: var(--ae-color-secondary-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-secondary-text-emphasis);\n --ae-color-border-subtle: var(--ae-color-secondary-border-subtle);\n}\n\n:host([color="success"]) {\n --ae-color-solid: var(--ae-color-success);\n --ae-color-on-solid: white;\n --ae-color-border: var(--ae-color-success);\n --ae-color-accent: var(--ae-color-success-text-emphasis);\n --ae-color-accent-hover: var(--ae-color-success-hover);\n --ae-color-subtle: var(--ae-color-success-bg-subtle);\n --ae-color-subtle-hover: rgb(from var(--ae-green) r g b / 0.15);\n --ae-color-bg-subtle: var(--ae-color-success-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-success-text-emphasis);\n --ae-color-border-subtle: var(--ae-color-success-border-subtle);\n}\n\n:host([color="danger"]) {\n --ae-color-solid: var(--ae-color-danger);\n --ae-color-on-solid: white;\n --ae-color-border: var(--ae-color-danger);\n --ae-color-accent: var(--ae-color-danger-text-emphasis);\n --ae-color-accent-hover: var(--ae-color-danger-hover);\n --ae-color-subtle: var(--ae-color-danger-bg-subtle);\n --ae-color-subtle-hover: rgb(from var(--ae-red) r g b / 0.15);\n --ae-color-bg-subtle: var(--ae-color-danger-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-danger-text-emphasis);\n --ae-color-border-subtle: var(--ae-color-danger-border-subtle);\n}\n\n:host([color="warning"]) {\n --ae-color-solid: var(--ae-color-warning);\n --ae-color-on-solid: var(--ae-gray-900);\n --ae-color-border: var(--ae-color-warning);\n --ae-color-accent: var(--ae-color-warning-text-emphasis);\n --ae-color-accent-hover: var(--ae-color-warning-hover);\n --ae-color-subtle: var(--ae-color-warning-bg-subtle);\n --ae-color-subtle-hover: rgb(from var(--ae-yellow) r g b / 0.15);\n --ae-color-bg-subtle: var(--ae-color-warning-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-warning-text-emphasis);\n --ae-color-border-subtle: var(--ae-color-warning-border-subtle);\n}\n\n:host([color="info"]) {\n --ae-color-solid: var(--ae-color-info);\n --ae-color-on-solid: white;\n --ae-color-border: var(--ae-color-info);\n --ae-color-accent: var(--ae-color-info-text-emphasis);\n --ae-color-accent-hover: var(--ae-color-info-hover);\n --ae-color-subtle: var(--ae-color-info-bg-subtle);\n --ae-color-subtle-hover: rgb(from var(--ae-cyan) r g b / 0.15);\n --ae-color-bg-subtle: var(--ae-color-info-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-info-text-emphasis);\n --ae-color-border-subtle: var(--ae-color-info-border-subtle);\n}\n\n:host([color="light"]) {\n --ae-color-solid: var(--ae-light);\n --ae-color-on-solid: var(--ae-gray-900);\n --ae-color-border: var(--ae-border-hover);\n --ae-color-subtle: var(--ae-color-light-bg-subtle);\n --ae-color-subtle-hover: var(--ae-color-light-border-subtle);\n --ae-color-bg-subtle: var(--ae-color-light-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-text-muted);\n --ae-color-border-subtle: var(--ae-color-light-border-subtle);\n}\n\n:host([color="dark"]) {\n --ae-color-solid: var(--ae-dark-500);\n --ae-color-on-solid: white;\n --ae-color-border: var(--ae-dark-500);\n --ae-color-accent: var(--ae-color-text-main);\n --ae-color-accent-hover: var(--ae-color-text-main);\n --ae-color-subtle: var(--ae-color-dark-bg-subtle);\n --ae-color-subtle-hover: var(--ae-color-dark-border-subtle);\n --ae-color-bg-subtle: var(--ae-color-dark-bg-subtle);\n --ae-color-text-subtle: var(--ae-color-text-main);\n --ae-color-border-subtle: var(--ae-color-dark-border-subtle);\n}\n';
765
+
766
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/icon.css
767
+ var icon_default = ":host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n width: 1em;\n height: 1em;\n color: inherit;\n flex-shrink: 0;\n line-height: 0;\n vertical-align: middle;\n}\n\n:host([color]) {\n color: var(--ae-color-solid);\n}\n\n.icon-svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: var(--icon-fill, currentColor);\n stroke: var(--icon-stroke, none);\n stroke-width: var(--icon-stroke-width, 2);\n stroke-linecap: var(--icon-stroke-linecap, round);\n stroke-linejoin: var(--icon-stroke-linejoin, round);\n pointer-events: none;\n overflow: visible;\n}\n";
768
+
769
+ // src/icon/defines.ts
770
+ var defaultViewBox = "0 0 24 24";
771
+
772
+ // src/icon/registry.ts
773
+ var IconRegistry = class {
774
+ static _icons = /* @__PURE__ */ new Map();
775
+ /** Names registered via addBuiltIn — can be overridden by user add() calls */
776
+ static _builtInKeys = /* @__PURE__ */ new Set();
777
+ /** Register user icons. Always takes priority over built-in icons. */
778
+ static add(icons) {
779
+ for (const [name, data] of Object.entries(icons)) {
780
+ if (typeof data === "string") {
781
+ this._icons.set(name, { paths: data, viewBox: defaultViewBox });
782
+ } else {
783
+ this._icons.set(name, data);
784
+ }
785
+ this._builtInKeys.delete(name);
786
+ }
787
+ }
788
+ /**
789
+ * Register built-in icons provided by the library.
790
+ * A built-in icon will NOT overwrite an icon already registered by the user.
791
+ */
792
+ static addBuiltIn(icons) {
793
+ for (const [name, data] of Object.entries(icons)) {
794
+ if (this._icons.has(name) && !this._builtInKeys.has(name)) continue;
795
+ if (typeof data === "string") {
796
+ this._icons.set(name, { paths: data, viewBox: defaultViewBox });
797
+ } else {
798
+ this._icons.set(name, data);
799
+ }
800
+ this._builtInKeys.add(name);
801
+ }
802
+ }
803
+ static get(name) {
804
+ return this._icons.get(name);
805
+ }
806
+ static has(name) {
807
+ return this._icons.has(name);
808
+ }
809
+ };
810
+ var registry_default = IconRegistry;
811
+
812
+ // src/icon/built-in-icons.ts
813
+ registry_default.addBuiltIn({
814
+ copy: "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z",
815
+ check: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",
816
+ "chevron-left": "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z",
817
+ "chevron-right": "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z",
818
+ "chevron-up": "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",
819
+ "chevron-down": "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z",
820
+ "chevrons-left": "M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z",
821
+ "chevrons-right": "M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z",
822
+ close: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
823
+ });
824
+
825
+ // src/icon/icon.ts
826
+ var Icon = class extends aeico_component_default {
827
+ static tagName = "icon";
828
+ static props = {
829
+ name: { type: String },
830
+ size: { type: String },
831
+ color: { type: String },
832
+ stroke: { type: Boolean },
833
+ strokeWidth: { type: Number }
834
+ };
835
+ static styles = [variables_default, size_default, color_default, icon_default];
836
+ render() {
837
+ const def = this.name ? registry_default.get(this.name) : void 0;
838
+ const numericSize = Number(this.size);
839
+ if (this.size !== void 0 && !isNaN(numericSize) && numericSize > 0) {
840
+ this.style.setProperty("font-size", `${numericSize}px`);
841
+ } else {
842
+ this.style.removeProperty("font-size");
843
+ }
844
+ if (!def) return;
845
+ const { paths } = def;
846
+ const isMultiPath = Array.isArray(paths);
847
+ if (!isMultiPath) {
848
+ const useStroke = this.stroke ?? (this.strokeWidth !== void 0 ? true : def.stroke ?? false);
849
+ const useStrokeWidth = this.strokeWidth ?? def.strokeWidth ?? 2;
850
+ if (useStroke) {
851
+ this.style.setProperty("--icon-fill", "none");
852
+ this.style.setProperty("--icon-stroke", "currentColor");
853
+ this.style.setProperty("--icon-stroke-width", String(useStrokeWidth));
854
+ } else {
855
+ this.style.removeProperty("--icon-fill");
856
+ this.style.removeProperty("--icon-stroke");
857
+ this.style.removeProperty("--icon-stroke-width");
858
+ }
859
+ } else {
860
+ this.style.removeProperty("--icon-fill");
861
+ this.style.removeProperty("--icon-stroke");
862
+ this.style.removeProperty("--icon-stroke-width");
863
+ }
864
+ return html(({ svg, path }) => {
865
+ svg(
866
+ {
867
+ className: "icon-svg",
868
+ viewBox: def.viewBox ?? defaultViewBox,
869
+ "aria-hidden": "true",
870
+ xmlns: SVG_NS
871
+ },
872
+ () => {
873
+ if (typeof paths === "string") {
874
+ path({ d: paths });
875
+ } else {
876
+ for (const p of paths) {
877
+ const attrs = { d: p.d };
878
+ if (p.fill) attrs.style = { fill: p.fill };
879
+ path(attrs);
880
+ }
881
+ }
882
+ }
883
+ );
884
+ });
885
+ }
886
+ };
887
+ Icon.register();
888
+
889
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/field-label.css
890
+ var field_label_default = ':host {\n --field-label-gap: 4px;\n --field-label-col-gap: 8px;\n --field-label-width: 100px;\n --field-label-font-size: 0.875em;\n --field-label-color: inherit;\n --field-required-color: var(--ae-red, #dc3545);\n --field-helper-color: var(--ae-color-text-muted, #6e6e6e);\n --field-error-color: var(--ae-red, #dc3545);\n}\n\n:host([label]) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--field-label-gap);\n}\n\n:host([label][label-placement="left"]) {\n display: grid;\n grid-template-columns: var(--field-label-width) 1fr;\n column-gap: var(--field-label-col-gap);\n row-gap: var(--field-label-gap);\n align-items: center;\n}\n\n:host([label][label-placement="left"]) .field-label {\n align-self: center;\n}\n\n:host([label][label-placement="left"]) .field-helper,\n:host([label][label-placement="left"]) .field-error {\n grid-column: 2;\n}\n\n.field-label {\n font-size: var(--field-label-font-size);\n color: var(--field-label-color);\n user-select: none;\n line-height: 1.4;\n}\n\n.field-required {\n color: var(--field-required-color);\n margin-left: 2px;\n}\n\n.field-helper {\n font-size: 0.8em;\n color: var(--field-helper-color);\n line-height: 1.4;\n}\n\n.field-error {\n font-size: 0.8em;\n color: var(--field-error-color);\n line-height: 1.4;\n}\n\n/* Action controls container (integrated style) */\n.action-controls {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\n border-radius: 0 var(--field-action-border-radius, var(--ae-radius-xs)) var(--field-action-border-radius, var(--ae-radius-xs)) 0;\n overflow: hidden;\n flex-shrink: 0;\n transition: border-color 0.12s;\n background: var(--field-action-bg, var(--ae-surface-base));\n position: relative;\n z-index: 1;\n align-self: stretch;\n}\n\n.action-controls .action-btn {\n border: none;\n background: transparent;\n color: var(--field-action-color, var(--ae-color-text-muted));\n font-size: 0.875em;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5em;\n transition: background 0.12s;\n}\n\n.action-controls .action-btn:hover:not(:disabled) {\n background: var(--field-action-bg-hover, var(--ae-surface-raised));\n}\n\n.action-controls .action-btn:active:not(:disabled) {\n background: var(--field-action-bg-focus, var(--ae-surface-raised));\n}\n\n.action-controls .action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-controls .action-btn + .action-btn {\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\n}\n\n.input-container:has(input:focus) ~ .action-controls,\n.input-container:has(input:focus) .action-controls,\n.container:has(.trigger.open) ~ .action-controls,\n.container:has(.trigger.open) .action-controls {\n border-color: var(--field-action-border-color-focus, var(--ae-border-focus));\n}\n\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\n.input-container:has(input:hover:not(:focus)) .action-controls,\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\n border-color: var(--field-action-border-color-hover, var(--ae-border-default));\n}\n';
891
+
892
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css
893
+ var action_button_default = "/* Action button base styles \u2014 shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--ae-clear-btn-border-radius);\n background: var(--ae-clear-btn-bg);\n color: var(--ae-clear-btn-color);\n transition: var(--ae-clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--ae-reset-btn-border-radius);\n background: var(--ae-reset-btn-bg);\n color: var(--ae-reset-btn-color);\n transition: var(--ae-reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--ae-clear-btn-bg-hover);\n color: var(--ae-clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--ae-reset-btn-bg-hover);\n color: var(--ae-reset-btn-color-hover);\n}\n";
894
+
895
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/switch.css
896
+ var switch_default = ":host {\n display: block;\n font-size: var(--ae-size-base);\n --switch-field-gap: 4px;\n --toggle-width: 2.667em;\n --toggle-height: 1.333em;\n --toggle-slider-size: 1em;\n --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);\n --toggle-border-radius: calc(var(--toggle-height) / 2);\n --toggle-bg: var(--ae-color-gray);\n --toggle-bg-checked: var(--ae-color-solid);\n --toggle-slider-bg: white;\n --toggle-transition: 0.2s;\n}\n\n.switch-container {\n display: flex;\n align-items: center;\n gap: var(--switch-field-gap);\n}\n\n.switch-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--toggle-width);\n height: var(--toggle-height);\n flex-shrink: 0;\n}\n\n.field-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n margin: 0;\n z-index: 1;\n border: none;\n border-radius: var(--ae-radius-square);\n background: none;\n accent-color: unset;\n}\n\n.field-input:disabled {\n cursor: not-allowed;\n}\n\n.toggle-slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--toggle-bg);\n border-radius: var(--toggle-border-radius);\n transition: var(--toggle-transition);\n pointer-events: none;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n background: var(--toggle-slider-bg);\n border-radius: var(--ae-radius-circle);\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider {\n background: var(--toggle-bg-checked);\n}\n\n.field-input:checked + .toggle-slider::before {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.field-input:disabled + .toggle-slider {\n opacity: 0.5;\n pointer-events: auto;\n}\n\n.toggle-knob-icon ae-icon,\n.track-icon ae-icon {\n font-size: var(--toggle-icon-size, calc(var(--toggle-slider-size) * 0.72));\n width: 1em;\n height: 1em;\n}\n\n.toggle-knob-icon {\n position: absolute;\n height: var(--toggle-slider-size);\n width: var(--toggle-slider-size);\n left: var(--toggle-gap);\n top: var(--toggle-gap);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--toggle-knob-icon-color, rgba(0, 0, 0, 0.6));\n transition: var(--toggle-transition);\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon {\n transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));\n}\n\n.toggle-knob-icon.icon-checked {\n opacity: 0;\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon.icon-checked {\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .toggle-knob-icon.icon-unchecked {\n opacity: 0;\n}\n\n.track-icon {\n position: absolute;\n top: var(--toggle-gap);\n width: var(--toggle-slider-size);\n height: var(--toggle-slider-size);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--toggle-track-icon-color, white);\n transition: opacity var(--toggle-transition);\n}\n\n.track-icon-left {\n left: var(--toggle-gap);\n opacity: 0;\n}\n\n.track-icon-right {\n right: var(--toggle-gap);\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .track-icon-left {\n opacity: 1;\n}\n\n.field-input:checked + .toggle-slider .track-icon-right {\n opacity: 0;\n}\n\n.switch-container:has(.action-controls) .switch-wrapper .toggle-slider {\n border-radius: var(--toggle-border-radius) 0 0 var(--toggle-border-radius);\n}\n\n.switch-container .action-controls {\n margin-left: calc(-1 * var(--switch-field-gap) - 1px);\n border: 1px solid var(--field-action-border-color, var(--ae-border-subtle));\n border-left: none;\n border-radius: 0 var(--toggle-border-radius) var(--toggle-border-radius) 0;\n overflow: hidden;\n background: var(--field-action-bg, var(--ae-surface-base));\n transition: border-color 0.12s;\n height: var(--toggle-height);\n box-sizing: border-box;\n}\n";
897
+
898
+ // src/switch/switch.ts
899
+ var _iconPlacement_dec, _iconChecked_dec, _icon_dec, _defaultChecked_dec, _checked_dec, _a, _init, _checked, _defaultChecked, _icon, _iconChecked, _iconPlacement;
900
+ var Switch = class extends (_a = aeico_field_default, _checked_dec = [prop({ type: Boolean })], _defaultChecked_dec = [prop({ type: Boolean })], _icon_dec = [prop({ type: String })], _iconChecked_dec = [prop({ type: String })], _iconPlacement_dec = [prop({ type: String })], _a) {
901
+ constructor() {
902
+ super(...arguments);
903
+ __publicField(this, "fieldElement", null);
904
+ __privateAdd(this, _checked, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
905
+ __privateAdd(this, _defaultChecked, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
906
+ __privateAdd(this, _icon, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
907
+ __privateAdd(this, _iconChecked, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
908
+ __privateAdd(this, _iconPlacement, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
909
+ }
910
+ getValue() {
911
+ return this.fieldElement?.checked ?? false;
912
+ }
913
+ writeValue(checked) {
914
+ if (this.fieldElement) {
915
+ this.fieldElement.checked = Boolean(checked);
916
+ }
917
+ }
918
+ getEventPayload(checked, oldChecked, action) {
919
+ return { checked, oldChecked, action };
920
+ }
921
+ setValue(checked, options) {
922
+ const oldChecked = this.getValue();
923
+ this.checked = checked;
924
+ this.writeValue(checked);
925
+ if (options?.silent === false) {
926
+ this.emit("change", {
927
+ detail: this.getEventPayload(checked, oldChecked, options.action || "change")
928
+ });
929
+ }
930
+ }
931
+ reset(checked, options) {
932
+ this.setValue(checked !== void 0 ? checked : this.defaultChecked ?? false, {
933
+ ...options,
934
+ action: "reset"
935
+ });
936
+ }
937
+ clear(options) {
938
+ this.setValue(false, { ...options, action: "clear" });
939
+ }
940
+ render() {
941
+ return html2(({ div, input, span, aeIcon }) => {
942
+ const id = this.getFieldId();
943
+ this.renderLabel(id);
944
+ div({ className: "switch-container field-body" }, () => {
945
+ div({ className: "switch-wrapper" }, () => {
946
+ this.fieldElement = input({
947
+ id,
948
+ type: "checkbox",
949
+ className: "field-input",
950
+ checked: Boolean(this.checked),
951
+ disabled: Boolean(this.disabled),
952
+ required: Boolean(this.required),
953
+ "@change": this.boundOnChange
954
+ });
955
+ const hasIcon = this.icon || this.iconChecked;
956
+ const placement = this.iconPlacement ?? "knob";
957
+ span({ className: "toggle-slider" }, () => {
958
+ if (!hasIcon) return;
959
+ if (placement === "track") {
960
+ span({ className: "track-icon track-icon-left" }, () => {
961
+ aeIcon({ name: this.iconChecked ?? this.icon });
962
+ });
963
+ span({ className: "track-icon track-icon-right" }, () => {
964
+ aeIcon({ name: this.icon ?? this.iconChecked });
965
+ });
966
+ } else {
967
+ if (this.icon && this.iconChecked) {
968
+ span({ className: "toggle-knob-icon icon-unchecked" }, () => {
969
+ aeIcon({ name: this.icon });
970
+ });
971
+ span({ className: "toggle-knob-icon icon-checked" }, () => {
972
+ aeIcon({ name: this.iconChecked });
973
+ });
974
+ } else {
975
+ span({ className: "toggle-knob-icon" }, () => {
976
+ aeIcon({ name: this.icon ?? this.iconChecked });
977
+ });
978
+ }
979
+ }
980
+ });
981
+ });
982
+ this.renderActionButtons();
983
+ });
984
+ this.renderHelperText();
985
+ this.renderError();
986
+ });
987
+ }
988
+ };
989
+ _init = __decoratorStart(_a);
990
+ _checked = new WeakMap();
991
+ _defaultChecked = new WeakMap();
992
+ _icon = new WeakMap();
993
+ _iconChecked = new WeakMap();
994
+ _iconPlacement = new WeakMap();
995
+ __decorateElement(_init, 4, "checked", _checked_dec, Switch, _checked);
996
+ __decorateElement(_init, 4, "defaultChecked", _defaultChecked_dec, Switch, _defaultChecked);
997
+ __decorateElement(_init, 4, "icon", _icon_dec, Switch, _icon);
998
+ __decorateElement(_init, 4, "iconChecked", _iconChecked_dec, Switch, _iconChecked);
999
+ __decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, Switch, _iconPlacement);
1000
+ __decoratorMetadata(_init, Switch);
1001
+ __publicField(Switch, "tagName", "switch");
1002
+ __publicField(Switch, "styles", [
1003
+ variables_default,
1004
+ size_default,
1005
+ color_default,
1006
+ field_label_default,
1007
+ action_button_default,
1008
+ switch_default
1009
+ ]);
1010
+ Switch.register();
1011
+ var switch_default2 = Switch;
2
1012
  export {
3
- S as Switch,
4
- S2 as default
1013
+ switch_default2 as Switch,
1014
+ switch_default2 as default
5
1015
  };
6
1016
  //# sourceMappingURL=switch.js.map