aeico-components 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) 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 +531 -4
  35. package/dist/detail-group.cjs.map +7 -1
  36. package/dist/detail-group.js +474 -3
  37. package/dist/detail-group.js.map +7 -1
  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 +6532 -74
  67. package/dist/index.cjs.map +7 -1
  68. package/dist/index.js +6183 -73
  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 +885 -4
  79. package/dist/number-input.cjs.map +7 -1
  80. package/dist/number-input.js +817 -3
  81. package/dist/number-input.js.map +7 -1
  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/dialog/dialog.d.ts +1 -0
  141. package/dist/types/drawer/drawer.d.ts +2 -0
  142. package/dist/types/icon/defines.d.ts +2 -0
  143. package/dist/types/menu/defines.d.ts +1 -0
  144. package/dist/types/menu/menu-item.d.ts +1 -0
  145. package/dist/types/menu/menu.d.ts +1 -0
  146. package/dist/types/styles/layout.d.ts +2 -0
  147. package/dist/types/styles/radius.d.ts +2 -0
  148. package/dist/types/styles/variables.d.ts +2 -0
  149. package/package.json +31 -7
  150. package/src/alert/alert.ts +3 -3
  151. package/src/badge/badge.ts +4 -4
  152. package/src/breadcrumb/breadcrumb-item.ts +2 -2
  153. package/src/breadcrumb/breadcrumb.ts +3 -3
  154. package/src/button/button.ts +4 -4
  155. package/src/button-group/button-group.ts +8 -9
  156. package/src/card/card.ts +3 -3
  157. package/src/checkbox/checkbox.ts +6 -6
  158. package/src/copy-button/copy-button.ts +4 -4
  159. package/src/detail/detail.ts +3 -3
  160. package/src/detail-group/detail-group.ts +2 -2
  161. package/src/dialog/dialog.ts +15 -14
  162. package/src/divider/divider.ts +3 -3
  163. package/src/drawer/drawer.ts +28 -11
  164. package/src/dropdown/dropdown-item.ts +2 -2
  165. package/src/dropdown/dropdown.ts +2 -2
  166. package/src/icon/defines.ts +2 -0
  167. package/src/icon/icon.ts +4 -4
  168. package/src/menu/defines.ts +1 -0
  169. package/src/menu/menu-item.ts +14 -4
  170. package/src/menu/menu.ts +5 -2
  171. package/src/navbar/navbar.ts +3 -3
  172. package/src/number-input/number-input.ts +5 -5
  173. package/src/pagination/pagination.ts +3 -3
  174. package/src/progress-bar/progress-bar.ts +3 -3
  175. package/src/radio-group/radio-group.ts +12 -8
  176. package/src/select/select-option.ts +2 -2
  177. package/src/select/select.ts +5 -5
  178. package/src/slider/slider.ts +6 -6
  179. package/src/spinner/spinner.ts +4 -4
  180. package/src/styles/components/button-group.css +2 -0
  181. package/src/styles/components/card.css +42 -18
  182. package/src/styles/components/checkbox.css +16 -5
  183. package/src/styles/components/dialog.css +1 -1
  184. package/src/styles/components/drawer.css +50 -9
  185. package/src/styles/components/field-label.css +1 -1
  186. package/src/styles/components/menu-item.css +6 -0
  187. package/src/styles/components/navbar.css +7 -28
  188. package/src/styles/components/radio-group.css +19 -0
  189. package/src/styles/components/slider.css +30 -5
  190. package/src/styles/components/switch.css +16 -2
  191. package/src/styles/layout.css +5 -2
  192. package/src/styles/radius.css +15 -0
  193. package/src/switch/switch.ts +6 -6
  194. package/src/tabs/tab-panel.ts +1 -1
  195. package/src/tabs/tab.ts +1 -1
  196. package/src/tabs/tabs.ts +2 -2
  197. package/src/tag/tag.ts +4 -4
  198. package/src/text-input/text-input.ts +5 -5
  199. package/src/textarea/textarea.ts +5 -5
  200. package/src/tooltip/tooltip.ts +2 -2
  201. package/src/tree/tree-item.ts +2 -2
  202. package/src/tree/tree.ts +2 -2
  203. package/dist/chunks/action-button.cjs +0 -296
  204. package/dist/chunks/action-button.cjs.map +0 -1
  205. package/dist/chunks/action-button.js +0 -297
  206. package/dist/chunks/action-button.js.map +0 -1
  207. package/dist/chunks/aeico-component.cjs +0 -17
  208. package/dist/chunks/aeico-component.cjs.map +0 -1
  209. package/dist/chunks/aeico-component.js +0 -18
  210. package/dist/chunks/aeico-component.js.map +0 -1
  211. package/dist/chunks/alert.cjs +0 -164
  212. package/dist/chunks/alert.cjs.map +0 -1
  213. package/dist/chunks/alert.js +0 -165
  214. package/dist/chunks/alert.js.map +0 -1
  215. package/dist/chunks/badge.cjs +0 -85
  216. package/dist/chunks/badge.cjs.map +0 -1
  217. package/dist/chunks/badge.js +0 -86
  218. package/dist/chunks/badge.js.map +0 -1
  219. package/dist/chunks/breadcrumb-item.cjs +0 -261
  220. package/dist/chunks/breadcrumb-item.cjs.map +0 -1
  221. package/dist/chunks/breadcrumb-item.js +0 -262
  222. package/dist/chunks/breadcrumb-item.js.map +0 -1
  223. package/dist/chunks/button-group.cjs +0 -79
  224. package/dist/chunks/button-group.cjs.map +0 -1
  225. package/dist/chunks/button-group.js +0 -80
  226. package/dist/chunks/button-group.js.map +0 -1
  227. package/dist/chunks/button.cjs +0 -337
  228. package/dist/chunks/button.cjs.map +0 -1
  229. package/dist/chunks/button.js +0 -338
  230. package/dist/chunks/button.js.map +0 -1
  231. package/dist/chunks/card.cjs +0 -93
  232. package/dist/chunks/card.cjs.map +0 -1
  233. package/dist/chunks/card.js +0 -94
  234. package/dist/chunks/card.js.map +0 -1
  235. package/dist/chunks/checkbox.cjs +0 -86
  236. package/dist/chunks/checkbox.cjs.map +0 -1
  237. package/dist/chunks/checkbox.js +0 -87
  238. package/dist/chunks/checkbox.js.map +0 -1
  239. package/dist/chunks/color.cjs +0 -4
  240. package/dist/chunks/color.cjs.map +0 -1
  241. package/dist/chunks/color.js +0 -5
  242. package/dist/chunks/color.js.map +0 -1
  243. package/dist/chunks/copy-button.cjs +0 -171
  244. package/dist/chunks/copy-button.cjs.map +0 -1
  245. package/dist/chunks/copy-button.js +0 -172
  246. package/dist/chunks/copy-button.js.map +0 -1
  247. package/dist/chunks/detail-group.cjs +0 -65
  248. package/dist/chunks/detail-group.cjs.map +0 -1
  249. package/dist/chunks/detail-group.js +0 -66
  250. package/dist/chunks/detail-group.js.map +0 -1
  251. package/dist/chunks/detail.cjs +0 -146
  252. package/dist/chunks/detail.cjs.map +0 -1
  253. package/dist/chunks/detail.js +0 -147
  254. package/dist/chunks/detail.js.map +0 -1
  255. package/dist/chunks/dialog.cjs +0 -117
  256. package/dist/chunks/dialog.cjs.map +0 -1
  257. package/dist/chunks/dialog.js +0 -118
  258. package/dist/chunks/dialog.js.map +0 -1
  259. package/dist/chunks/divider.cjs +0 -80
  260. package/dist/chunks/divider.cjs.map +0 -1
  261. package/dist/chunks/divider.js +0 -81
  262. package/dist/chunks/divider.js.map +0 -1
  263. package/dist/chunks/drawer.cjs +0 -180
  264. package/dist/chunks/drawer.cjs.map +0 -1
  265. package/dist/chunks/drawer.js +0 -181
  266. package/dist/chunks/drawer.js.map +0 -1
  267. package/dist/chunks/dropdown-button.cjs +0 -533
  268. package/dist/chunks/dropdown-button.cjs.map +0 -1
  269. package/dist/chunks/dropdown-button.js +0 -534
  270. package/dist/chunks/dropdown-button.js.map +0 -1
  271. package/dist/chunks/icon-button.cjs +0 -35
  272. package/dist/chunks/icon-button.cjs.map +0 -1
  273. package/dist/chunks/icon-button.js +0 -36
  274. package/dist/chunks/icon-button.js.map +0 -1
  275. package/dist/chunks/icon.cjs +0 -124
  276. package/dist/chunks/icon.cjs.map +0 -1
  277. package/dist/chunks/icon.js +0 -125
  278. package/dist/chunks/icon.js.map +0 -1
  279. package/dist/chunks/menu.cjs +0 -396
  280. package/dist/chunks/menu.cjs.map +0 -1
  281. package/dist/chunks/menu.js +0 -397
  282. package/dist/chunks/menu.js.map +0 -1
  283. package/dist/chunks/navbar.cjs +0 -142
  284. package/dist/chunks/navbar.cjs.map +0 -1
  285. package/dist/chunks/navbar.js +0 -143
  286. package/dist/chunks/navbar.js.map +0 -1
  287. package/dist/chunks/number-input.cjs +0 -110
  288. package/dist/chunks/number-input.cjs.map +0 -1
  289. package/dist/chunks/number-input.js +0 -111
  290. package/dist/chunks/number-input.js.map +0 -1
  291. package/dist/chunks/pagination.cjs +0 -475
  292. package/dist/chunks/pagination.cjs.map +0 -1
  293. package/dist/chunks/pagination.js +0 -476
  294. package/dist/chunks/pagination.js.map +0 -1
  295. package/dist/chunks/progress-bar.cjs +0 -101
  296. package/dist/chunks/progress-bar.cjs.map +0 -1
  297. package/dist/chunks/progress-bar.js +0 -102
  298. package/dist/chunks/progress-bar.js.map +0 -1
  299. package/dist/chunks/radio.cjs +0 -185
  300. package/dist/chunks/radio.cjs.map +0 -1
  301. package/dist/chunks/radio.js +0 -186
  302. package/dist/chunks/radio.js.map +0 -1
  303. package/dist/chunks/select.cjs +0 -381
  304. package/dist/chunks/select.cjs.map +0 -1
  305. package/dist/chunks/select.js +0 -382
  306. package/dist/chunks/select.js.map +0 -1
  307. package/dist/chunks/size.cjs +0 -4
  308. package/dist/chunks/size.cjs.map +0 -1
  309. package/dist/chunks/size.js +0 -5
  310. package/dist/chunks/size.js.map +0 -1
  311. package/dist/chunks/slider.cjs +0 -608
  312. package/dist/chunks/slider.cjs.map +0 -1
  313. package/dist/chunks/slider.js +0 -609
  314. package/dist/chunks/slider.js.map +0 -1
  315. package/dist/chunks/spinner.cjs +0 -102
  316. package/dist/chunks/spinner.cjs.map +0 -1
  317. package/dist/chunks/spinner.js +0 -103
  318. package/dist/chunks/spinner.js.map +0 -1
  319. package/dist/chunks/switch.cjs +0 -167
  320. package/dist/chunks/switch.cjs.map +0 -1
  321. package/dist/chunks/switch.js +0 -168
  322. package/dist/chunks/switch.js.map +0 -1
  323. package/dist/chunks/tab-panel.cjs +0 -174
  324. package/dist/chunks/tab-panel.cjs.map +0 -1
  325. package/dist/chunks/tab-panel.js +0 -175
  326. package/dist/chunks/tab-panel.js.map +0 -1
  327. package/dist/chunks/tag.cjs +0 -108
  328. package/dist/chunks/tag.cjs.map +0 -1
  329. package/dist/chunks/tag.js +0 -109
  330. package/dist/chunks/tag.js.map +0 -1
  331. package/dist/chunks/text-input.cjs +0 -54
  332. package/dist/chunks/text-input.cjs.map +0 -1
  333. package/dist/chunks/text-input.js +0 -55
  334. package/dist/chunks/text-input.js.map +0 -1
  335. package/dist/chunks/textarea.cjs +0 -137
  336. package/dist/chunks/textarea.cjs.map +0 -1
  337. package/dist/chunks/textarea.js +0 -138
  338. package/dist/chunks/textarea.js.map +0 -1
  339. package/dist/chunks/tooltip.cjs +0 -292
  340. package/dist/chunks/tooltip.cjs.map +0 -1
  341. package/dist/chunks/tooltip.js +0 -293
  342. package/dist/chunks/tooltip.js.map +0 -1
  343. package/dist/chunks/tree.cjs +0 -468
  344. package/dist/chunks/tree.cjs.map +0 -1
  345. package/dist/chunks/tree.js +0 -469
  346. package/dist/chunks/tree.js.map +0 -1
  347. package/dist/chunks/variables.cjs +0 -396
  348. package/dist/chunks/variables.cjs.map +0 -1
  349. package/dist/chunks/variables.js +0 -397
  350. package/dist/chunks/variables.js.map +0 -1
package/dist/select.cjs CHANGED
@@ -1,19 +1,45 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const select = require("./chunks/select.cjs");
4
- const aeicoComponent = require("./chunks/aeico-component.cjs");
5
- const aeico = require("aeico");
6
- const variables = require("./chunks/variables.cjs");
7
- const style = ":host {\n display: block;\n\n --option-padding: 0.417em 0.667em;\n --option-bg: transparent;\n --option-bg-hover: var(--ae-surface-raised);\n --option-bg-selected: color-mix(in srgb, var(--ae-color-primary) 12%, transparent);\n --option-color: var(--ae-color-text-main);\n --option-color-disabled: var(--ae-color-text-disabled);\n --option-color-selected: var(--ae-color-primary);\n --option-font-size: 1em;\n --option-transition: background 0.1s;\n}\n\n.option-item {\n padding: var(--option-padding);\n font-size: var(--option-font-size);\n color: var(--option-color);\n background: var(--option-bg);\n cursor: pointer;\n transition: var(--option-transition);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n}\n\n:host(:hover:not([disabled])) .option-item {\n background: var(--option-bg-hover);\n}\n\n:host([selected]) .option-item {\n background: var(--option-bg-selected);\n color: var(--option-color-selected);\n}\n\n:host([disabled]) .option-item {\n color: var(--option-color-disabled);\n cursor: default;\n pointer-events: none;\n}\n\n\n";
8
2
  var __create = Object.create;
9
3
  var __defProp = Object.defineProperty;
10
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
12
9
  var __typeError = (msg) => {
13
10
  throw TypeError(msg);
14
11
  };
15
12
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
13
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
14
+ var __commonJS = (cb, mod) => function __require() {
15
+ try {
16
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
17
+ } catch (e) {
18
+ throw mod = 0, e;
19
+ }
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ // If the importer is in node compatibility mode or this is not an ESM
35
+ // file that has been converted to a CommonJS file using a Babel-
36
+ // compatible transform (i.e. "__esModule" has not been set), then set
37
+ // "default" to the CommonJS "module.exports" for node compatibility.
38
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
39
+ mod
40
+ ));
41
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
42
+ var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
17
43
  var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
18
44
  var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
19
45
  var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
@@ -23,48 +49,1216 @@ var __runInitializers = (array, flags, self, value) => {
23
49
  return value;
24
50
  };
25
51
  var __decorateElement = (array, flags, name, decorators, target, extra) => {
26
- var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
27
- var j = array.length + 1, key = __decoratorStrings[k + 5];
28
- var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
29
- var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
52
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
53
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
54
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
55
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
30
56
  return __privateGet(this, extra);
31
57
  }, set [name](x) {
32
58
  return __privateSet(this, extra, x);
33
59
  } }, name));
60
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
34
61
  for (var i = decorators.length - 1; i >= 0; i--) {
35
62
  ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
36
- {
37
- ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
38
- access.get = (x) => x[name];
39
- access.set = (x, y) => x[name] = y;
63
+ if (k) {
64
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
65
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
66
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
40
67
  }
41
- it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
42
- if (it === void 0) __expectFn(it) && (desc[key] = it);
68
+ 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;
69
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
43
70
  else if (typeof it !== "object" || it === null) __typeError("Object expected");
44
71
  else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
45
72
  }
46
- return desc && __defProp(target, name, desc), target;
73
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
47
74
  };
48
75
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
49
76
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
50
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
77
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
78
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
51
79
  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);
52
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
53
- var _selected_dec, _disabled_dec, _label_dec, _value_dec, _a, _init, _value, _label, _disabled, _selected;
54
- class SelectOption extends (_a = aeicoComponent.AeicoComponent, _value_dec = [aeico.prop({ type: String })], _label_dec = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _selected_dec = [aeico.prop({ type: Boolean })], _a) {
80
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
81
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
82
+
83
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/select.css
84
+ var require_select = __commonJS({
85
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/select.css"(exports2, module2) {
86
+ module2.exports = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n\n /* Layout variables */\n --select-field-gap: 2px;\n\n /* Trigger variables */\n --select-font-size: 1em;\n --select-padding: 0.333em 0.583em;\n --select-border-width: 1px;\n --select-transition: border-color 0.12s, background 0.12s;\n\n /* Arrow */\n --select-arrow-size: 0.75em;\n\n /* Dropdown */\n --select-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n --select-dropdown-max-height: 240px;\n --select-dropdown-z-index: 1000;\n}\n\n.container {\n display: flex;\n align-items: center;\n gap: var(--select-field-gap);\n width: 100%;\n position: relative;\n}\n\n.trigger {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.333em;\n font-size: var(--select-font-size);\n padding: var(--select-padding);\n border: var(--select-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n cursor: pointer;\n transition: var(--select-transition);\n user-select: none;\n outline: none;\n box-sizing: border-box;\n}\n\n.trigger:hover:not(.disabled) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\n.trigger.open {\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\n.trigger.disabled {\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n}\n\n/* Error state */\n:host([error]) .trigger {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) .trigger:hover:not(.disabled),\n:host([error]) .trigger.open {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n.value {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.placeholder {\n color: var(--ae-color-text-disabled);\n}\n\n.selected-list {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n padding: 2px 0;\n}\n\n/* Non-expandable (default): single-row, clip overflow */\n.trigger:has(.selected-list--clipped) {\n flex-wrap: nowrap;\n}\n\n.selected-list--clipped {\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.overflow-indicator {\n flex-shrink: 0;\n align-self: center;\n padding: 1px 6px;\n background: color-mix(in srgb, var(--ae-color-primary) 12%, transparent);\n color: var(--ae-color-primary);\n border: 1px solid color-mix(in srgb, var(--ae-color-primary) 30%, transparent);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n font-size: 0.82em;\n line-height: 1.6;\n cursor: default;\n user-select: none;\n}\n\n.arrow {\n flex-shrink: 0;\n align-self: center;\n font-size: var(--select-arrow-size);\n color: var(--ae-color-text-muted);\n transition: transform 0.12s;\n pointer-events: none;\n line-height: 1;\n}\n\n.trigger.open .arrow {\n transform: rotate(180deg);\n}\n\n.dropdown {\n display: none;\n position: absolute;\n z-index: var(--select-dropdown-z-index);\n background: var(--ae-surface-overlay);\n border: 1px solid var(--ae-border-default);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n box-shadow: var(--select-dropdown-shadow);\n max-height: var(--select-dropdown-max-height);\n overflow-y: auto;\n min-width: 100%;\n box-sizing: border-box;\n}\n\n.dropdown.open {\n display: block;\n}\n\n.dropdown.position-bottom {\n top: 100%;\n left: 0;\n margin-top: 2px;\n}\n\n.dropdown.position-top {\n bottom: 100%;\n left: 0;\n margin-bottom: 2px;\n}\n\n.dropdown.position-left {\n right: 100%;\n top: 0;\n margin-right: 2px;\n}\n\n.dropdown.position-right {\n left: 100%;\n top: 0;\n margin-left: 2px;\n}\n\n.container:has(.action-controls) .trigger {\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\n}\n";
87
+ }
88
+ });
89
+
90
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css
91
+ var require_variables = __commonJS({
92
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css"(exports2, module2) {
93
+ module2.exports = `:root,
94
+ :host {
95
+ --ae-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue",
96
+ "Noto Sans", "Liberation Sans", Arial, sans-serif,
97
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
98
+ --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
99
+ "Liberation Mono", "Courier New", monospace;
100
+ font-family: var(--ae-font-sans-serif);
101
+ --ae-blue: #0e639c;
102
+ --ae-green: #28a745;
103
+ --ae-red: #dc3545;
104
+ --ae-yellow: #ffc107;
105
+ --ae-cyan: #17a2b8;
106
+ --ae-gray: #6e6e6e;
107
+ --ae-slate: #64748b;
108
+ --ae-dark: #343a40;
109
+ --ae-light: #f8f9fa;
110
+ }
111
+
112
+ :root,
113
+ :host {
114
+ /* Blue */
115
+ --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);
116
+ --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);
117
+ --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);
118
+ --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);
119
+ --ae-blue-500: var(--ae-blue);
120
+ --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);
121
+ --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);
122
+ --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);
123
+ --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);
124
+
125
+ /* Green */
126
+ --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);
127
+ --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);
128
+ --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);
129
+ --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);
130
+ --ae-green-500: var(--ae-green);
131
+ --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);
132
+ --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);
133
+ --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);
134
+ --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);
135
+
136
+ /* Red */
137
+ --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);
138
+ --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);
139
+ --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);
140
+ --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);
141
+ --ae-red-500: var(--ae-red);
142
+ --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);
143
+ --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);
144
+ --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);
145
+ --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);
146
+
147
+ /* Yellow */
148
+ --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);
149
+ --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);
150
+ --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);
151
+ --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);
152
+ --ae-yellow-500: var(--ae-yellow);
153
+ --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);
154
+ --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);
155
+ --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);
156
+ --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);
157
+
158
+ /* Cyan */
159
+ --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);
160
+ --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);
161
+ --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);
162
+ --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);
163
+ --ae-cyan-500: var(--ae-cyan);
164
+ --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);
165
+ --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);
166
+ --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);
167
+ --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);
168
+
169
+ /* Gray (neutral \u2014 base #6e6e6e) */
170
+ --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);
171
+ --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);
172
+ --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);
173
+ --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);
174
+ --ae-gray-500: var(--ae-gray);
175
+ --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);
176
+ --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);
177
+ --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);
178
+ --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);
179
+
180
+ /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */
181
+ --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);
182
+ --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);
183
+ --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);
184
+ --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);
185
+ --ae-slate-500: var(--ae-slate);
186
+ --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);
187
+ --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);
188
+ --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);
189
+ --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);
190
+
191
+ /* Dark (base #343a40) */
192
+ --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);
193
+ --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);
194
+ --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);
195
+ --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);
196
+ --ae-dark-500: var(--ae-dark);
197
+ --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);
198
+ --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);
199
+ --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);
200
+ --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);
201
+
202
+ /* Light (base #f8f9fa) */
203
+ --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);
204
+ --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);
205
+ --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);
206
+ --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);
207
+ --ae-light-500: var(--ae-light);
208
+ --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);
209
+ --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);
210
+ --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);
211
+ --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);
212
+ }
213
+
214
+ :root,
215
+ :host {
216
+ /* Hover / active mix (light default \u2014 overridden in \xA7 6 dark) */
217
+ --ae-color-mix-hover: black 10%;
218
+ --ae-color-mix-active: black 20%;
219
+
220
+ /* Primary (Blue) */
221
+ --ae-color-primary: var(--ae-blue-500);
222
+ --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));
223
+ --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));
224
+ --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));
225
+
226
+ /* Success (Green) */
227
+ --ae-color-success: var(--ae-green-500);
228
+ --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));
229
+ --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));
230
+ --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));
231
+
232
+ /* Danger (Red) */
233
+ --ae-color-danger: var(--ae-red-500);
234
+ --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));
235
+ --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));
236
+ --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));
237
+
238
+ /* Warning (Yellow) */
239
+ --ae-color-warning: var(--ae-yellow-500);
240
+ --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));
241
+ --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));
242
+ --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));
243
+
244
+ /* Info (Cyan) */
245
+ --ae-color-info: var(--ae-cyan-500);
246
+ --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));
247
+ --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));
248
+ --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));
249
+
250
+ /* Secondary (Slate) \u2014 base differs per theme, overridden in \xA7 6 dark */
251
+ --ae-color-secondary: var(--ae-slate-500);
252
+ --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));
253
+ --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));
254
+ --ae-color-secondary-text: var(--ae-slate-700);
255
+ }
256
+
257
+
258
+ .theme-light,
259
+ :root[theme="light"],
260
+ :host([theme="light"]),
261
+ :host-context([theme="light"]),
262
+ :where(:root),
263
+ :host {
264
+ color-scheme: light;
265
+
266
+ /* Gray UI aliases \u2014 lighter palette steps for elements on white background */
267
+ --ae-color-gray-dark: var(--ae-gray-400);
268
+ --ae-color-gray: var(--ae-gray-300);
269
+ --ae-color-gray-light: var(--ae-gray-200);
270
+ --ae-color-gray-lighter: var(--ae-gray-100);
271
+ --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);
272
+
273
+ /* Text */
274
+ --ae-color-text-main: var(--ae-dark-700);
275
+ --ae-color-text-muted: var(--ae-gray-600);
276
+ --ae-color-text-disabled: var(--ae-gray-300);
277
+ --ae-color-text-link: var(--ae-blue-500);
278
+ --ae-color-text-link-hover: var(--ae-blue-700);
279
+
280
+ /* Surfaces */
281
+ --ae-surface-sunken: var(--ae-light-500);
282
+ --ae-surface-base: white;
283
+ --ae-surface-raised: var(--ae-light-500);
284
+ --ae-surface-overlay: white;
285
+ --ae-color-overlay: rgba(0, 0, 0, 0.4);
286
+
287
+ /* Borders */
288
+ --ae-border-subtle: rgba(0, 0, 0, 0.08);
289
+ --ae-border-default: rgba(0, 0, 0, 0.15);
290
+ --ae-border-hover: rgba(0, 0, 0, 0.25);
291
+ --ae-border-focus: var(--ae-color-primary);
292
+ --ae-border-disabled: rgba(0, 0, 0, 0.06);
293
+
294
+ /* Focus ring */
295
+ --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);
296
+ --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);
297
+
298
+ /* Subtle intent tokens \u2014 light context */
299
+ --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);
300
+ --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);
301
+ --ae-color-primary-text-emphasis: var(--ae-blue-700);
302
+
303
+ --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);
304
+ --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);
305
+ --ae-color-success-text-emphasis: var(--ae-green-700);
306
+
307
+ --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);
308
+ --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);
309
+ --ae-color-danger-text-emphasis: var(--ae-red-700);
310
+
311
+ --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);
312
+ --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);
313
+ --ae-color-warning-text-emphasis: var(--ae-yellow-700);
314
+
315
+ --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);
316
+ --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);
317
+ --ae-color-info-text-emphasis: var(--ae-cyan-700);
318
+
319
+ --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);
320
+ --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);
321
+ --ae-color-secondary-text-emphasis: var(--ae-slate-700);
322
+
323
+ --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */
324
+ --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */
325
+
326
+ --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */
327
+ --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */
328
+
329
+ /* Component tokens \u2014 light defaults */
330
+ --ae-action-btn-bg: var(--ae-gray-200);
331
+ --ae-action-btn-bg-hover: var(--ae-color-primary);
332
+ --ae-action-btn-color: var(--ae-gray-600);
333
+ --ae-action-btn-color-hover: white;
334
+
335
+ --ae-clear-btn-bg-hover: var(--ae-color-danger);
336
+ --ae-clear-btn-color-hover: white;
337
+
338
+ --ae-reset-btn-border-radius: var(--ae-radius-xs);
339
+ --ae-reset-btn-bg: var(--ae-action-btn-bg);
340
+ --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);
341
+ --ae-reset-btn-color: var(--ae-action-btn-color);
342
+ --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);
343
+ --ae-reset-btn-transition: all 0.12s;
344
+
345
+ --ae-clear-btn-border-radius: var(--ae-radius-xs);
346
+ --ae-clear-btn-bg: var(--ae-action-btn-bg);
347
+ --ae-clear-btn-color: var(--ae-action-btn-color);
348
+ --ae-clear-btn-transition: all 0.12s;
349
+ }
350
+
351
+ :root,
352
+ :host {
353
+ --ae-size-scale: 1;
354
+ --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */
355
+ --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */
356
+ --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */
357
+ --ae-size-m: var(--ae-size-base); /* 16px */
358
+ --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */
359
+ --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */
360
+ --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */
361
+ --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */
362
+ }
363
+
364
+ /* Border-radius tokens \u2014 shared across all components */
365
+ :root,
366
+ :host {
367
+ /**
368
+ * Unified border-radius hook for all components.
369
+ *
370
+ * Not set by default \u2014 each component falls back to its own --ae-radius-*
371
+ * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).
372
+ *
373
+ * Usage:
374
+ * :root { --ae-border-radius: 0; } // global: all components square
375
+ * :root { --ae-border-radius: 999px; } // global: all components pill
376
+ * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular
377
+ * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar
378
+ *
379
+ * To restore a component to its own default:
380
+ * ae-card { --ae-border-radius: initial; }
381
+ */
382
+
383
+ --ae-radius-square: 0;
384
+ --ae-radius-xs: 2px;
385
+ --ae-radius-sm: 4px;
386
+ --ae-radius-md: 6px;
387
+ --ae-radius-lg: 8px;
388
+ --ae-radius-xl: 12px;
389
+ --ae-radius-pill: 999px;
390
+ --ae-radius-circle: 50%;
391
+ }
392
+
393
+ /* Layout tokens \u2014 defined on :root so all light DOM elements can use them */
394
+ :root,
395
+ :host {
396
+ --container-max-width: 1280px;
397
+ --container-padding-x: 1.5rem;
398
+ }
399
+
400
+ .theme-dark,
401
+ :root[theme="dark"],
402
+ :host([theme="dark"]),
403
+ :host-context([theme="dark"]) {
404
+ color-scheme: dark;
405
+
406
+ /* Hover / active \u2014 slightly gentler on dark backgrounds */
407
+ --ae-color-mix-hover: black 8%;
408
+ --ae-color-mix-active: black 16%;
409
+
410
+ /* Gray UI aliases \u2014 darker palette steps for elements on dark background */
411
+ --ae-color-gray-dark: var(--ae-gray-800);
412
+ --ae-color-gray: var(--ae-gray-700);
413
+ --ae-color-gray-light: var(--ae-gray-600);
414
+ --ae-color-gray-lighter: var(--ae-gray-500);
415
+ --ae-color-gray-lightest: var(--ae-gray-400);
416
+
417
+ /* Secondary \u2014 deeper base on dark background */
418
+ --ae-color-secondary: var(--ae-slate-700);
419
+ --ae-color-secondary-text: var(--ae-slate-300);
420
+
421
+ /* Text */
422
+ --ae-color-text-main: white;
423
+ --ae-color-text-muted: var(--ae-gray-200);
424
+ --ae-color-text-disabled: var(--ae-gray-500);
425
+ --ae-color-text-link: var(--ae-blue-300);
426
+ --ae-color-text-link-hover: var(--ae-blue-200);
427
+
428
+ /* Surfaces */
429
+ --ae-surface-sunken: var(--ae-gray-900);
430
+ --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);
431
+ --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);
432
+ --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);
433
+ --ae-color-overlay: rgba(0, 0, 0, 0.6);
434
+
435
+ /* Borders */
436
+ --ae-border-subtle: rgba(255, 255, 255, 0.08);
437
+ --ae-border-default: rgba(255, 255, 255, 0.12);
438
+ --ae-border-hover: rgba(255, 255, 255, 0.20);
439
+ --ae-border-focus: var(--ae-color-primary);
440
+ --ae-border-disabled: rgba(255, 255, 255, 0.06);
441
+
442
+ /* Focus ring */
443
+ --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);
444
+ --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);
445
+
446
+ /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */
447
+ --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);
448
+ --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);
449
+ --ae-color-primary-text-emphasis: var(--ae-blue-300);
450
+
451
+ --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);
452
+ --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);
453
+ --ae-color-success-text-emphasis: var(--ae-green-300);
454
+
455
+ --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);
456
+ --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);
457
+ --ae-color-danger-text-emphasis: var(--ae-red-300);
458
+
459
+ --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);
460
+ --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);
461
+ --ae-color-warning-text-emphasis: var(--ae-yellow-300);
462
+
463
+ --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);
464
+ --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);
465
+ --ae-color-info-text-emphasis: var(--ae-cyan-300);
466
+
467
+ --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);
468
+ --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);
469
+ --ae-color-secondary-text-emphasis: var(--ae-slate-300);
470
+
471
+ --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);
472
+ --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);
473
+
474
+ --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);
475
+ --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);
476
+
477
+ /* Component tokens \u2014 dark overrides */
478
+ --ae-action-btn-bg: var(--ae-color-gray);
479
+ --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));
480
+ --ae-action-btn-color: var(--ae-gray-400);
481
+ --ae-action-btn-color-hover: var(--ae-cyan-300);
482
+ --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));
483
+ --ae-clear-btn-color-hover: var(--ae-red-300);
484
+ }
485
+ `;
486
+ }
487
+ });
488
+
489
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/size.css
490
+ var require_size = __commonJS({
491
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/size.css"(exports2, module2) {
492
+ module2.exports = ':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';
493
+ }
494
+ });
495
+
496
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/field-label.css
497
+ var require_field_label = __commonJS({
498
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/field-label.css"(exports2, module2) {
499
+ module2.exports = ':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';
500
+ }
501
+ });
502
+
503
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css
504
+ var require_action_button = __commonJS({
505
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css"(exports2, module2) {
506
+ module2.exports = "/* 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";
507
+ }
508
+ });
509
+
510
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/color.css
511
+ var require_color = __commonJS({
512
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/color.css"(exports2, module2) {
513
+ module2.exports = ':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';
514
+ }
515
+ });
516
+
517
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/tag.css
518
+ var require_tag = __commonJS({
519
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/tag.css"(exports2, module2) {
520
+ module2.exports = ':host {\n display: inline-flex;\n align-items: center;\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.5em 0.15em 0.6em;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n border: 1px solid var(--ae-color-solid);\n background: var(--ae-color-solid);\n color: var(--ae-color-on-solid);\n max-width: 160px;\n min-width: 0;\n}\n\n:host([variant="outlined"]) .tag {\n background: transparent;\n border-color: var(--ae-color-border);\n color: var(--ae-color-accent);\n}\n\n:host([variant="faint"]) .tag {\n background: var(--ae-color-bg-subtle);\n border-color: var(--ae-color-border-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="subtle"]) .tag {\n background: var(--ae-color-bg-subtle);\n border-color: transparent;\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="text"]) .tag {\n background: transparent;\n border-color: transparent;\n color: var(--ae-color-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n\n:host([pill]) .tag { border-radius: var(--ae-radius-pill); }\n\n.tag-content {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n::slotted(ae-icon) { font-size: 1.1em; }\n\n.tag-dismiss {\n display: none;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n opacity: 0.55;\n line-height: 1;\n font-size: 1em;\n padding: 0 1px;\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: transparent;\n border: none;\n color: inherit;\n font-family: inherit;\n transition: opacity 0.1s, background 0.1s;\n}\n\n:host([dismissible]) .tag-dismiss {\n display: inline-flex;\n}\n\n.tag-dismiss:hover {\n opacity: 1;\n background: color-mix(in srgb, currentColor 15%, transparent);\n}\n\n/* disabled: button remains visible but is inert */\n:host([disabled]) .tag-dismiss {\n opacity: 0.4;\n pointer-events: none;\n cursor: default;\n}\n\n:host([disabled]) .tag {\n opacity: 0.6;\n}\n';
521
+ }
522
+ });
523
+
524
+ // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/select-option.css
525
+ var require_select_option = __commonJS({
526
+ "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/select-option.css"(exports2, module2) {
527
+ module2.exports = ":host {\n display: block;\n\n --option-padding: 0.417em 0.667em;\n --option-bg: transparent;\n --option-bg-hover: var(--ae-surface-raised);\n --option-bg-selected: color-mix(in srgb, var(--ae-color-primary) 12%, transparent);\n --option-color: var(--ae-color-text-main);\n --option-color-disabled: var(--ae-color-text-disabled);\n --option-color-selected: var(--ae-color-primary);\n --option-font-size: 1em;\n --option-transition: background 0.1s;\n}\n\n.option-item {\n padding: var(--option-padding);\n font-size: var(--option-font-size);\n color: var(--option-color);\n background: var(--option-bg);\n cursor: pointer;\n transition: var(--option-transition);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n}\n\n:host(:hover:not([disabled])) .option-item {\n background: var(--option-bg-hover);\n}\n\n:host([selected]) .option-item {\n background: var(--option-bg-selected);\n color: var(--option-color-selected);\n}\n\n:host([disabled]) .option-item {\n color: var(--option-color-disabled);\n cursor: default;\n pointer-events: none;\n}\n\n\n";
528
+ }
529
+ });
530
+
531
+ // src/select/index.ts
532
+ var select_exports = {};
533
+ __export(select_exports, {
534
+ Select: () => select_default,
535
+ SelectOption: () => select_option_default,
536
+ default: () => select_default
537
+ });
538
+ module.exports = __toCommonJS(select_exports);
539
+
540
+ // src/aeico-field.ts
541
+ var import_aeico2 = require("aeico");
542
+
543
+ // src/aeico-component.ts
544
+ var import_aeico = require("aeico");
545
+
546
+ // src/utils.ts
547
+ function toKebab(str) {
548
+ const cleaned = str.replace(/^[_\d]+/, "");
549
+ return cleaned.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
550
+ }
551
+
552
+ // src/aeico-component.ts
553
+ var TAG_NAME_PREFIX = "ae";
554
+ var AeicoComponent = class extends import_aeico.AeicoElement {
555
+ static register(name) {
556
+ const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;
557
+ super.register(tagName);
558
+ }
559
+ };
560
+ var aeico_component_default = AeicoComponent;
561
+
562
+ // src/aeico-field.ts
563
+ var AeicoField = class _AeicoField extends aeico_component_default {
564
+ /**
565
+ * Define base field properties (extends AeicoElement properties)
566
+ */
567
+ static props = {
568
+ value: { type: String },
569
+ defaultValue: { type: String },
570
+ resettable: { type: Boolean },
571
+ resetText: { type: String },
572
+ resetTitle: { type: String },
573
+ clearable: { type: Boolean },
574
+ clearText: { type: String },
575
+ clearTitle: { type: String },
576
+ actionButtonStyle: { type: String },
577
+ size: { type: String },
578
+ disabled: { type: Boolean },
579
+ label: { type: String },
580
+ labelPlacement: { type: String },
581
+ required: { type: Boolean },
582
+ helperText: { type: String },
583
+ error: { type: String }
584
+ };
585
+ /**
586
+ * Property watchers
587
+ */
588
+ static watchers = {
589
+ disabled: "onDisabledChanged",
590
+ error: "onErrorChanged"
591
+ };
592
+ static _fieldIdCounter = 0;
593
+ _fieldId;
594
+ constructor() {
595
+ super();
596
+ this._fieldId = `ae-field-${++_AeicoField._fieldIdCounter}`;
597
+ }
598
+ /**
599
+ * The underlying form control element (input, select, etc.)
600
+ * Subclasses should set this to their specific element
601
+ */
602
+ fieldElement = null;
603
+ resetBtn = null;
604
+ clearBtn = null;
605
+ boundOnChange = () => this.setValue(this.getValue(), { silent: false, action: "change" });
606
+ boundOnReset = () => this.onReset();
607
+ boundOnClear = () => this.onClear();
608
+ /**
609
+ * Lifecycle: Component connected to DOM
610
+ */
611
+ connectedCallback() {
612
+ super.connectedCallback();
613
+ }
614
+ /**
615
+ * Lifecycle: Component disconnected from DOM
616
+ */
617
+ disconnectedCallback() {
618
+ super.disconnectedCallback();
619
+ }
620
+ /**
621
+ * Render action buttons (clear/reset) using this.builder.
622
+ * Must be called from within a build() callback.
623
+ */
624
+ renderActionButtons(force = false) {
625
+ const style3 = this.actionButtonStyle || "integrated";
626
+ const hasActions = force || this.clearable || this.resettable;
627
+ if (hasActions && style3 === "integrated") {
628
+ import_aeico2.tags.div({ className: "action-controls" }, () => {
629
+ this.renderClearButton(force);
630
+ this.renderResetButton(force);
631
+ });
632
+ } else {
633
+ this.renderClearButton(force);
634
+ this.renderResetButton(force);
635
+ }
636
+ }
637
+ renderResetButton(force = false) {
638
+ const { button } = import_aeico2.tags;
639
+ const style3 = this.actionButtonStyle || "integrated";
640
+ if (force || this.resettable) {
641
+ const className = style3 === "integrated" ? "reset-btn action-btn" : "reset-btn";
642
+ this.resetBtn = button({
643
+ className,
644
+ textContent: this.resetText || "\u21BA",
645
+ title: this.resetTitle || "\u21BA",
646
+ "@click": this.boundOnReset
647
+ });
648
+ }
649
+ }
650
+ renderClearButton(force = false) {
651
+ const { button } = import_aeico2.tags;
652
+ const style3 = this.actionButtonStyle || "integrated";
653
+ if (force || this.clearable) {
654
+ const className = style3 === "integrated" ? "clear-btn action-btn" : "clear-btn";
655
+ this.clearBtn = button({
656
+ className,
657
+ textContent: this.clearText || "\u2715",
658
+ title: this.clearTitle || "\u2715",
659
+ "@click": this.boundOnClear
660
+ });
661
+ }
662
+ }
663
+ /**
664
+ * Returns a stable unique ID for this field instance,
665
+ * used to associate <label htmlFor> with the underlying input.
666
+ */
667
+ getFieldId() {
668
+ return this._fieldId;
669
+ }
670
+ /**
671
+ * Renders a <label> element when the `label` prop is set.
672
+ * Call this as the first statement inside the render() html() callback.
673
+ * @param fieldId - The id to set on the underlying form control element (pass to input via id prop)
674
+ */
675
+ renderLabel(fieldId) {
676
+ if (!this.label) return;
677
+ const { span } = import_aeico2.tags;
678
+ import_aeico2.tags.label({ id: `${fieldId}-label`, className: "field-label", for: fieldId }, () => {
679
+ span({ textContent: this.label });
680
+ if (this.required) {
681
+ span({ className: "field-required", "aria-hidden": "true", textContent: " *" });
682
+ }
683
+ });
684
+ }
685
+ /**
686
+ * Renders helper text below the field. Hidden when `error` is set.
687
+ * Call this after the field-body div in render().
688
+ */
689
+ renderHelperText() {
690
+ if (!this.helperText || this.error) return;
691
+ const { span } = import_aeico2.tags;
692
+ span({ className: "field-helper", textContent: this.helperText });
693
+ }
694
+ /**
695
+ * Renders an error message below the field when `error` is set.
696
+ * Call this after renderHelperText() in render().
697
+ */
698
+ renderError() {
699
+ if (!this.error) return;
700
+ const { span } = import_aeico2.tags;
701
+ span({ className: "field-error", textContent: this.error });
702
+ }
703
+ /**
704
+ * Watcher for disabled property
705
+ */
706
+ onDisabledChanged(newValue) {
707
+ if (this.fieldElement) {
708
+ this.fieldElement.disabled = Boolean(newValue);
709
+ }
710
+ }
711
+ /**
712
+ * Watcher for error property — syncs aria-invalid on the field element
713
+ */
714
+ onErrorChanged(newValue) {
715
+ if (this.fieldElement) {
716
+ if (newValue) {
717
+ this.fieldElement.setAttribute("aria-invalid", "true");
718
+ } else {
719
+ this.fieldElement.removeAttribute("aria-invalid");
720
+ }
721
+ }
722
+ }
723
+ /**
724
+ * Lifecycle: called after every render update.
725
+ * Keeps aria-invalid on fieldElement in sync regardless of watcher timing.
726
+ */
727
+ onUpdated(_changedProps) {
728
+ if (!this.fieldElement) return;
729
+ if (this.error) {
730
+ this.fieldElement.setAttribute("aria-invalid", "true");
731
+ } else {
732
+ this.fieldElement.removeAttribute("aria-invalid");
733
+ }
734
+ }
735
+ /**
736
+ * Returns true if the field passes constraint validation.
737
+ * Delegates to the underlying fieldElement when available;
738
+ * falls back to a manual required-check otherwise.
739
+ */
740
+ checkValidity() {
741
+ if (this.fieldElement) {
742
+ return this.fieldElement.checkValidity();
743
+ }
744
+ if (this.required) {
745
+ const v = this.value;
746
+ return v !== void 0 && v !== "" && v !== null;
747
+ }
748
+ return true;
749
+ }
750
+ /**
751
+ * Reports validity, showing the browser's built-in validation UI when possible.
752
+ */
753
+ reportValidity() {
754
+ if (this.fieldElement) {
755
+ return this.fieldElement.reportValidity();
756
+ }
757
+ return this.checkValidity();
758
+ }
759
+ /**
760
+ * Render the field component
761
+ * Override in subclass to provide custom rendering
762
+ */
763
+ render() {
764
+ }
765
+ /**
766
+ * Get current value from the field element
767
+ * Default implementation returns the value property of fieldElement
768
+ * Override in subclasses if needed (e.g., checkbox uses checked instead of value)
769
+ *
770
+ * @returns Current field value
771
+ */
772
+ getValue() {
773
+ return this.fieldElement?.value || "";
774
+ }
775
+ /**
776
+ * Write value to the underlying UI element and sync props
777
+ * Subclasses must override this to update their specific UI element
778
+ *
779
+ * @param _value New value to write to the element
780
+ */
781
+ writeValue(_value2) {
782
+ }
783
+ /**
784
+ * Get event payload for change events
785
+ * Override in subclasses to customize event data (e.g., { checked, oldChecked } for checkbox)
786
+ *
787
+ * @param value New value
788
+ * @param oldValue Previous value
789
+ * @param action Action type
790
+ * @returns Event payload object
791
+ */
792
+ getEventPayload(value, oldValue, action) {
793
+ return { value, oldValue, action };
794
+ }
795
+ /**
796
+ * Update field value programmatically (internal method)
797
+ * Subclasses should provide type-safe public wrappers (e.g., change() method)
798
+ *
799
+ * @param value New value
800
+ * @param options.silent If true, won't emit change event (default: true)
801
+ * @param options.action Action type for the event (default: 'change')
802
+ */
803
+ setValue(value, options) {
804
+ const oldValue = this.getValue();
805
+ this.value = value;
806
+ this.writeValue(value);
807
+ if (options?.silent === false) {
808
+ const payload = this.getEventPayload(value, oldValue, options.action || "change");
809
+ this.emit("change", { detail: payload });
810
+ }
811
+ }
812
+ /**
813
+ * Reset field to specified value or default value
814
+ *
815
+ * @param value Value to reset to, defaults to defaultValue prop
816
+ * @param options.silent If false, will emit reset event (default: true)
817
+ */
818
+ reset(value, options) {
819
+ const resetValue = value !== void 0 ? value : this.defaultValue;
820
+ this.setValue(resetValue, { ...options, action: "reset" });
821
+ }
822
+ /**
823
+ * Clear the field value
824
+ *
825
+ * @param options.silent If false, will emit clear event (default: true)
826
+ */
827
+ clear(options) {
828
+ this.setValue("", { ...options, action: "clear" });
829
+ }
830
+ /**
831
+ * Handle clear button click
832
+ * Clears the field and dispatches event
833
+ */
834
+ onClear() {
835
+ this.clear({ silent: false });
836
+ }
837
+ /**
838
+ * Handle reset button click
839
+ * Resets to default value and dispatches event
840
+ */
841
+ onReset() {
842
+ this.reset(void 0, { silent: false });
843
+ }
844
+ };
845
+ var aeico_field_default = AeicoField;
846
+
847
+ // src/select/select.ts
848
+ var import_aeico5 = require("aeico");
849
+ var import_select = __toESM(require_select(), 1);
850
+ var import_variables2 = __toESM(require_variables(), 1);
851
+ var import_size2 = __toESM(require_size(), 1);
852
+ var import_field_label = __toESM(require_field_label(), 1);
853
+ var import_action_button = __toESM(require_action_button(), 1);
854
+
855
+ // src/tag/tag.ts
856
+ var import_variables = __toESM(require_variables(), 1);
857
+ var import_size = __toESM(require_size(), 1);
858
+ var import_color = __toESM(require_color(), 1);
859
+ var import_tag = __toESM(require_tag(), 1);
860
+ var import_aeico3 = require("aeico");
861
+ var import_aeico4 = require("aeico");
862
+ var _pill_dec, _disabled_dec, _dismissible_dec, _size_dec, _variant_dec, _color_dec, _a, _init, _color, _variant, _size, _dismissible, _disabled, _pill;
863
+ var Tag = class extends (_a = aeico_component_default, _color_dec = [(0, import_aeico4.prop)({ type: String })], _variant_dec = [(0, import_aeico4.prop)({ type: String })], _size_dec = [(0, import_aeico4.prop)({ type: String })], _dismissible_dec = [(0, import_aeico4.prop)({ type: Boolean })], _disabled_dec = [(0, import_aeico4.prop)({ type: Boolean })], _pill_dec = [(0, import_aeico4.prop)({ type: Boolean })], _a) {
864
+ constructor() {
865
+ super(...arguments);
866
+ __privateAdd(this, _color, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
867
+ __privateAdd(this, _variant, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
868
+ __privateAdd(this, _size, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
869
+ __privateAdd(this, _dismissible, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
870
+ __privateAdd(this, _disabled, __runInitializers(_init, 24, this, false)), __runInitializers(_init, 27, this);
871
+ __privateAdd(this, _pill, __runInitializers(_init, 28, this, false)), __runInitializers(_init, 31, this);
872
+ }
873
+ render() {
874
+ return (0, import_aeico3.html)(({ span, button, slot }) => {
875
+ span({ part: "tag", className: "tag" }, () => {
876
+ slot({ name: "start" });
877
+ span({ className: "tag-content" }, () => {
878
+ slot();
879
+ });
880
+ slot({ name: "end" });
881
+ button(
882
+ {
883
+ type: "button",
884
+ className: "tag-dismiss",
885
+ "aria-label": "dismiss",
886
+ "@click": (e) => {
887
+ e.stopPropagation();
888
+ if (this.disabled) return;
889
+ this.emit("dismiss");
890
+ }
891
+ },
892
+ () => {
893
+ span({ textContent: "\xD7" });
894
+ }
895
+ );
896
+ });
897
+ });
898
+ }
899
+ };
900
+ _init = __decoratorStart(_a);
901
+ _color = new WeakMap();
902
+ _variant = new WeakMap();
903
+ _size = new WeakMap();
904
+ _dismissible = new WeakMap();
905
+ _disabled = new WeakMap();
906
+ _pill = new WeakMap();
907
+ __decorateElement(_init, 4, "color", _color_dec, Tag, _color);
908
+ __decorateElement(_init, 4, "variant", _variant_dec, Tag, _variant);
909
+ __decorateElement(_init, 4, "size", _size_dec, Tag, _size);
910
+ __decorateElement(_init, 4, "dismissible", _dismissible_dec, Tag, _dismissible);
911
+ __decorateElement(_init, 4, "disabled", _disabled_dec, Tag, _disabled);
912
+ __decorateElement(_init, 4, "pill", _pill_dec, Tag, _pill);
913
+ __decoratorMetadata(_init, Tag);
914
+ __publicField(Tag, "styles", [import_variables.default, import_size.default, import_color.default, import_tag.default]);
915
+ Tag.register();
916
+
917
+ // src/select/select.ts
918
+ var import_aeico6 = require("aeico");
919
+ var _defaultValue_dec, _value_dec, _expandable_dec, _multiple_dec, _placeholder_dec, _position_dec, _options_dec, __expanded_dec, _a2, _init2, __expanded, _options, _position, _placeholder, _multiple, _expandable;
920
+ var Select = class extends (_a2 = aeico_field_default, __expanded_dec = [(0, import_aeico6.prop)({ type: Boolean, observe: false, reflect: false })], _options_dec = [(0, import_aeico6.prop)({ type: Array })], _position_dec = [(0, import_aeico6.prop)({ type: String })], _placeholder_dec = [(0, import_aeico6.prop)({ type: String })], _multiple_dec = [(0, import_aeico6.prop)({ type: Boolean })], _expandable_dec = [(0, import_aeico6.prop)({ type: Boolean })], _value_dec = [(0, import_aeico6.prop)({
921
+ type: String,
922
+ parser: (v) => {
923
+ if (v === null || v === void 0) return void 0;
924
+ try {
925
+ return JSON.parse(v);
926
+ } catch {
927
+ return v;
928
+ }
929
+ },
930
+ formatter: (v) => {
931
+ if (v === null || v === void 0) return "";
932
+ if (Array.isArray(v)) return JSON.stringify(v);
933
+ return String(v);
934
+ }
935
+ })], _defaultValue_dec = [(0, import_aeico6.prop)({
936
+ type: String,
937
+ parser: (v) => {
938
+ if (v === null || v === void 0) return void 0;
939
+ try {
940
+ return JSON.parse(v);
941
+ } catch {
942
+ return v;
943
+ }
944
+ },
945
+ formatter: (v) => {
946
+ if (v === null || v === void 0) return "";
947
+ if (Array.isArray(v)) return JSON.stringify(v);
948
+ return String(v);
949
+ }
950
+ })], _a2) {
55
951
  constructor() {
56
952
  super(...arguments);
57
- __privateAdd(this, _value, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
58
- __privateAdd(this, _label, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
59
- __privateAdd(this, _disabled, __runInitializers(_init, 16, this, false)), __runInitializers(_init, 19, this);
60
- __privateAdd(this, _selected, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
953
+ __publicField(this, "fieldElement", null);
954
+ __publicField(this, "_isOpen", false);
955
+ __publicField(this, "_triggerEl", null);
956
+ __publicField(this, "_dropdownEl", null);
957
+ __publicField(this, "_slotEl", null);
958
+ __publicField(this, "_slotOptionData", []);
959
+ __publicField(this, "_selectedListEl", null);
960
+ __privateAdd(this, __expanded, __runInitializers(_init2, 8, this, false)), __runInitializers(_init2, 11, this);
961
+ __privateAdd(this, _options, __runInitializers(_init2, 12, this)), __runInitializers(_init2, 15, this);
962
+ __privateAdd(this, _position, __runInitializers(_init2, 16, this)), __runInitializers(_init2, 19, this);
963
+ __privateAdd(this, _placeholder, __runInitializers(_init2, 20, this)), __runInitializers(_init2, 23, this);
964
+ __privateAdd(this, _multiple, __runInitializers(_init2, 24, this, false)), __runInitializers(_init2, 27, this);
965
+ __privateAdd(this, _expandable, __runInitializers(_init2, 28, this, false)), __runInitializers(_init2, 31, this);
966
+ __publicField(this, "value", __runInitializers(_init2, 32, this)), __runInitializers(_init2, 35, this);
967
+ __publicField(this, "defaultValue", __runInitializers(_init2, 36, this)), __runInitializers(_init2, 39, this);
968
+ __publicField(this, "_handleOutsideClick", (e) => {
969
+ if (!e.composedPath().includes(this)) {
970
+ this._closeDropdown();
971
+ }
972
+ });
973
+ __publicField(this, "_handleOptionSelect", (e) => {
974
+ const { value, label } = e.detail;
975
+ if (!this._slotOptionData.find((o) => o.value === value)) {
976
+ this._slotOptionData = [
977
+ ...this._slotOptionData.filter((o) => o.value !== value),
978
+ { value, label }
979
+ ];
980
+ }
981
+ if (this.multiple) {
982
+ const current = this._getMultiValues();
983
+ const idx = current.findIndex((v) => String(v) === value);
984
+ const next = idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, value];
985
+ this.setValue(next, { silent: false, action: "change" });
986
+ } else {
987
+ this.setValue(value, { silent: false, action: "change" });
988
+ this._closeDropdown();
989
+ }
990
+ });
991
+ }
992
+ writeValue(_value2) {
993
+ }
994
+ getValue() {
995
+ if (this.multiple) return this._getMultiValues();
996
+ return this.value || "";
997
+ }
998
+ _getMultiValues() {
999
+ if (Array.isArray(this.value)) return this.value;
1000
+ if (this.value != null && this.value !== "") return [this.value];
1001
+ return [];
1002
+ }
1003
+ onDisabledChanged(_newValue) {
1004
+ }
1005
+ onUpdated(changedProps) {
1006
+ super.onUpdated(changedProps);
1007
+ if (!this.multiple || this.expandable) {
1008
+ if (this._expanded) this._expanded = false;
1009
+ return;
1010
+ }
1011
+ const list = this._selectedListEl;
1012
+ if (!list) return;
1013
+ const overflowing = list.scrollWidth > list.clientWidth + 1;
1014
+ if (overflowing !== this._expanded) this._expanded = overflowing;
1015
+ }
1016
+ _findLabel(value) {
1017
+ const strVal = String(value);
1018
+ if (Array.isArray(this.options)) {
1019
+ for (const opt of this.options) {
1020
+ if (this._isSelectOption(opt)) {
1021
+ if (String(opt.value) === strVal) return opt.label;
1022
+ } else {
1023
+ if (String(opt) === strVal) return strVal;
1024
+ }
1025
+ }
1026
+ }
1027
+ for (const opt of this._slotOptionData) {
1028
+ if (opt.value === strVal) return opt.label;
1029
+ }
1030
+ return strVal;
1031
+ }
1032
+ _onSlotChange() {
1033
+ if (!this._slotEl) return;
1034
+ const data = [];
1035
+ for (const el of this._slotEl.assignedElements({ flatten: true })) {
1036
+ if (el.tagName.toLowerCase() !== "ae-select-option") continue;
1037
+ const optEl = el;
1038
+ data.push({
1039
+ value: optEl.value ?? el.getAttribute("value") ?? "",
1040
+ label: optEl.label || el.textContent?.trim() || ""
1041
+ });
1042
+ }
1043
+ this._slotOptionData = data;
1044
+ this.update();
1045
+ }
1046
+ _toggleDropdown() {
1047
+ if (this._isOpen) {
1048
+ this._closeDropdown();
1049
+ } else {
1050
+ this._openDropdown();
1051
+ }
1052
+ }
1053
+ _openDropdown() {
1054
+ this._isOpen = true;
1055
+ this._syncOpenState();
1056
+ }
1057
+ _closeDropdown() {
1058
+ this._isOpen = false;
1059
+ this._syncOpenState();
1060
+ }
1061
+ _syncOpenState() {
1062
+ this._triggerEl?.classList.toggle("open", this._isOpen);
1063
+ this._dropdownEl?.classList.toggle("open", this._isOpen);
1064
+ }
1065
+ connectedCallback() {
1066
+ super.connectedCallback();
1067
+ document.addEventListener("click", this._handleOutsideClick);
1068
+ this.addEventListener("selectoption", this._handleOptionSelect);
1069
+ }
1070
+ disconnectedCallback() {
1071
+ super.disconnectedCallback();
1072
+ document.removeEventListener("click", this._handleOutsideClick);
1073
+ this.removeEventListener("selectoption", this._handleOptionSelect);
1074
+ }
1075
+ _syncSlotOptionsSelected() {
1076
+ if (!this._slotEl) return;
1077
+ const multiValues = this._getMultiValues();
1078
+ for (const el of this._slotEl.assignedElements({ flatten: true })) {
1079
+ if (el.tagName.toLowerCase() !== "ae-select-option") continue;
1080
+ const optEl = el;
1081
+ const optVal = optEl.value ?? el.getAttribute("value") ?? "";
1082
+ const isSelected = this.multiple ? multiValues.some((v) => String(v) === optVal) : this.value != null && this.value !== "" && String(this.value) === optVal;
1083
+ optEl.selected = isSelected ? true : void 0;
1084
+ }
1085
+ }
1086
+ render() {
1087
+ const position = this.position || "bottom";
1088
+ const multiValues = this.multiple ? this._getMultiValues() : [];
1089
+ const hasMultiSelection = this.multiple && multiValues.length > 0;
1090
+ const selectedLabel = !this.multiple && this.value != null && this.value !== "" ? this._findLabel(this.value) : "";
1091
+ const isDisabled = Boolean(this.disabled);
1092
+ this._selectedListEl = null;
1093
+ this._syncSlotOptionsSelected();
1094
+ return (0, import_aeico5.html)(({ div, span, slot }) => {
1095
+ const id = this.getFieldId();
1096
+ this.renderLabel(id);
1097
+ div(
1098
+ {
1099
+ id,
1100
+ "aria-labelledby": this.label ? `${id}-label` : void 0,
1101
+ className: "container field-body"
1102
+ },
1103
+ () => {
1104
+ this._triggerEl = div(
1105
+ {
1106
+ className: `trigger${this._isOpen ? " open" : ""}${isDisabled ? " disabled" : ""}`,
1107
+ "@click": () => {
1108
+ if (isDisabled) return;
1109
+ this._toggleDropdown();
1110
+ }
1111
+ },
1112
+ () => {
1113
+ if (this.multiple) {
1114
+ if (hasMultiSelection) {
1115
+ this._selectedListEl = div(
1116
+ {
1117
+ className: `selected-list${!this.expandable ? " selected-list--clipped" : ""}`
1118
+ },
1119
+ () => {
1120
+ for (const v of multiValues) {
1121
+ const lbl = this._findLabel(v);
1122
+ import_aeico5.tags.aeTag({
1123
+ key: `sel-${v}`,
1124
+ color: "default",
1125
+ variant: "faint",
1126
+ dismissible: true,
1127
+ disabled: isDisabled,
1128
+ textContent: lbl,
1129
+ "@dismiss": (e) => {
1130
+ e.stopPropagation();
1131
+ if (isDisabled) return;
1132
+ const next = multiValues.filter((item) => String(item) !== String(v));
1133
+ this.setValue(next, { silent: false, action: "change" });
1134
+ }
1135
+ });
1136
+ }
1137
+ }
1138
+ );
1139
+ if (!this.expandable && this._expanded) {
1140
+ span({ className: "overflow-indicator", textContent: "\u2026" });
1141
+ }
1142
+ } else {
1143
+ span({ className: "value placeholder", textContent: this.placeholder || "" });
1144
+ }
1145
+ } else {
1146
+ if (selectedLabel) {
1147
+ span({ className: "value", textContent: selectedLabel });
1148
+ } else {
1149
+ span({ className: "value placeholder", textContent: this.placeholder || "" });
1150
+ }
1151
+ }
1152
+ span({ className: "arrow", textContent: "\u25BE" });
1153
+ }
1154
+ );
1155
+ this._dropdownEl = div(
1156
+ {
1157
+ className: `dropdown position-${position}${this._isOpen ? " open" : ""}`
1158
+ },
1159
+ () => {
1160
+ this._renderProgrammaticOptions();
1161
+ this._slotEl = slot({
1162
+ "@slotchange": () => this._onSlotChange()
1163
+ });
1164
+ }
1165
+ );
1166
+ this.renderActionButtons();
1167
+ }
1168
+ );
1169
+ this.renderHelperText();
1170
+ this.renderError();
1171
+ const currentValue = this.value != null && this.value !== "" && !(Array.isArray(this.value) && this.value.length === 0) ? String(this.value) : "";
1172
+ this.fieldElement = import_aeico5.tags.input({
1173
+ key: "validation-input",
1174
+ type: "text",
1175
+ "aria-hidden": "true",
1176
+ tabIndex: -1,
1177
+ required: Boolean(this.required),
1178
+ value: currentValue,
1179
+ style: {
1180
+ position: "absolute",
1181
+ width: "0",
1182
+ height: "0",
1183
+ opacity: "0",
1184
+ margin: "0",
1185
+ padding: "0",
1186
+ border: "0",
1187
+ pointerEvents: "none",
1188
+ overflow: "hidden"
1189
+ }
1190
+ });
1191
+ });
1192
+ }
1193
+ _renderProgrammaticOptions() {
1194
+ if (!Array.isArray(this.options)) return;
1195
+ const { aeSelectOption } = import_aeico5.tags;
1196
+ const multiValues = this.multiple ? this._getMultiValues() : [];
1197
+ for (const opt of this.options) {
1198
+ if (this._isSelectOption(opt)) {
1199
+ const isSelected = this.multiple ? multiValues.some((v) => String(v) === String(opt.value)) : this.value != null && String(opt.value) === String(this.value);
1200
+ aeSelectOption({
1201
+ key: `opt-${opt.value}`,
1202
+ value: String(opt.value),
1203
+ label: opt.label,
1204
+ textContent: opt.label,
1205
+ selected: isSelected ? true : void 0
1206
+ });
1207
+ } else {
1208
+ const isSelected = this.multiple ? multiValues.some((v) => String(v) === String(opt)) : this.value != null && String(opt) === String(this.value);
1209
+ aeSelectOption({
1210
+ key: `opt-${opt}`,
1211
+ value: String(opt),
1212
+ textContent: String(opt),
1213
+ selected: isSelected ? true : void 0
1214
+ });
1215
+ }
1216
+ }
1217
+ }
1218
+ _isSelectOption(option) {
1219
+ return option !== null && typeof option === "object" && typeof option.label === "string" && (typeof option.value === "string" || typeof option.value === "number");
1220
+ }
1221
+ };
1222
+ _init2 = __decoratorStart(_a2);
1223
+ __expanded = new WeakMap();
1224
+ _options = new WeakMap();
1225
+ _position = new WeakMap();
1226
+ _placeholder = new WeakMap();
1227
+ _multiple = new WeakMap();
1228
+ _expandable = new WeakMap();
1229
+ __decorateElement(_init2, 4, "_expanded", __expanded_dec, Select, __expanded);
1230
+ __decorateElement(_init2, 4, "options", _options_dec, Select, _options);
1231
+ __decorateElement(_init2, 4, "position", _position_dec, Select, _position);
1232
+ __decorateElement(_init2, 4, "placeholder", _placeholder_dec, Select, _placeholder);
1233
+ __decorateElement(_init2, 4, "multiple", _multiple_dec, Select, _multiple);
1234
+ __decorateElement(_init2, 4, "expandable", _expandable_dec, Select, _expandable);
1235
+ __decorateElement(_init2, 5, "value", _value_dec, Select);
1236
+ __decorateElement(_init2, 5, "defaultValue", _defaultValue_dec, Select);
1237
+ __decoratorMetadata(_init2, Select);
1238
+ __publicField(Select, "tagName", "select");
1239
+ __publicField(Select, "styles", [import_variables2.default, import_size2.default, import_field_label.default, import_action_button.default, import_select.default]);
1240
+ Select.register();
1241
+ var select_default = Select;
1242
+
1243
+ // src/select/select-option.ts
1244
+ var import_aeico7 = require("aeico");
1245
+ var import_select_option = __toESM(require_select_option(), 1);
1246
+ var import_variables3 = __toESM(require_variables(), 1);
1247
+ var import_aeico8 = require("aeico");
1248
+ var _selected_dec, _disabled_dec2, _label_dec, _value_dec2, _a3, _init3, _value, _label, _disabled2, _selected;
1249
+ var SelectOption = class extends (_a3 = aeico_component_default, _value_dec2 = [(0, import_aeico8.prop)({ type: String })], _label_dec = [(0, import_aeico8.prop)({ type: String })], _disabled_dec2 = [(0, import_aeico8.prop)({ type: Boolean })], _selected_dec = [(0, import_aeico8.prop)({ type: Boolean })], _a3) {
1250
+ constructor() {
1251
+ super(...arguments);
1252
+ __privateAdd(this, _value, __runInitializers(_init3, 8, this)), __runInitializers(_init3, 11, this);
1253
+ __privateAdd(this, _label, __runInitializers(_init3, 12, this)), __runInitializers(_init3, 15, this);
1254
+ __privateAdd(this, _disabled2, __runInitializers(_init3, 16, this, false)), __runInitializers(_init3, 19, this);
1255
+ __privateAdd(this, _selected, __runInitializers(_init3, 20, this, false)), __runInitializers(_init3, 23, this);
61
1256
  __publicField(this, "_handleClick", (e) => {
62
- var _a2;
63
1257
  if (this.disabled) {
64
1258
  e.stopPropagation();
65
1259
  return;
66
1260
  }
67
- const displayLabel = this.label || ((_a2 = this.textContent) == null ? void 0 : _a2.trim()) || "";
1261
+ const displayLabel = this.label || this.textContent?.trim() || "";
68
1262
  this.emit("selectoption", { detail: { value: this.value ?? "", label: displayLabel } });
69
1263
  });
70
1264
  }
@@ -73,27 +1267,30 @@ class SelectOption extends (_a = aeicoComponent.AeicoComponent, _value_dec = [ae
73
1267
  this.listen("click", this._handleClick);
74
1268
  }
75
1269
  render() {
76
- return aeico.html(({ div, slot }) => {
1270
+ return (0, import_aeico7.html)(({ div, slot }) => {
77
1271
  div({ className: "option-item" }, () => {
78
1272
  slot();
79
1273
  });
80
1274
  });
81
1275
  }
82
- }
83
- _init = __decoratorStart(_a);
84
- _value = /* @__PURE__ */ new WeakMap();
85
- _label = /* @__PURE__ */ new WeakMap();
86
- _disabled = /* @__PURE__ */ new WeakMap();
87
- _selected = /* @__PURE__ */ new WeakMap();
88
- __decorateElement(_init, 4, "value", _value_dec, SelectOption, _value);
89
- __decorateElement(_init, 4, "label", _label_dec, SelectOption, _label);
90
- __decorateElement(_init, 4, "disabled", _disabled_dec, SelectOption, _disabled);
91
- __decorateElement(_init, 4, "selected", _selected_dec, SelectOption, _selected);
92
- __decoratorMetadata(_init, SelectOption);
1276
+ };
1277
+ _init3 = __decoratorStart(_a3);
1278
+ _value = new WeakMap();
1279
+ _label = new WeakMap();
1280
+ _disabled2 = new WeakMap();
1281
+ _selected = new WeakMap();
1282
+ __decorateElement(_init3, 4, "value", _value_dec2, SelectOption, _value);
1283
+ __decorateElement(_init3, 4, "label", _label_dec, SelectOption, _label);
1284
+ __decorateElement(_init3, 4, "disabled", _disabled_dec2, SelectOption, _disabled2);
1285
+ __decorateElement(_init3, 4, "selected", _selected_dec, SelectOption, _selected);
1286
+ __decoratorMetadata(_init3, SelectOption);
93
1287
  __publicField(SelectOption, "tagName", "select-option");
94
- __publicField(SelectOption, "styles", [variables.variables, style]);
1288
+ __publicField(SelectOption, "styles", [import_variables3.default, import_select_option.default]);
95
1289
  SelectOption.register();
96
- exports.Select = select.Select;
97
- exports.default = select.Select;
98
- exports.SelectOption = SelectOption;
1290
+ var select_option_default = SelectOption;
1291
+ // Annotate the CommonJS export names for ESM import in node:
1292
+ 0 && (module.exports = {
1293
+ Select,
1294
+ SelectOption
1295
+ });
99
1296
  //# sourceMappingURL=select.cjs.map