aeico-components 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +0 -0
  2. package/dist/alert.cjs +637 -4
  3. package/dist/alert.cjs.map +7 -1
  4. package/dist/alert.js +575 -3
  5. package/dist/alert.js.map +7 -1
  6. package/dist/badge.cjs +573 -4
  7. package/dist/badge.cjs.map +7 -1
  8. package/dist/badge.js +510 -3
  9. package/dist/badge.js.map +7 -1
  10. package/dist/breadcrumb.cjs +709 -5
  11. package/dist/breadcrumb.cjs.map +7 -1
  12. package/dist/breadcrumb.js +644 -4
  13. package/dist/breadcrumb.js.map +7 -1
  14. package/dist/button-group.cjs +546 -4
  15. package/dist/button-group.cjs.map +7 -1
  16. package/dist/button-group.js +489 -3
  17. package/dist/button-group.js.map +7 -1
  18. package/dist/button.cjs +834 -4
  19. package/dist/button.cjs.map +7 -1
  20. package/dist/button.js +771 -3
  21. package/dist/button.js.map +7 -1
  22. package/dist/card.cjs +574 -4
  23. package/dist/card.cjs.map +7 -1
  24. package/dist/card.js +516 -3
  25. package/dist/card.js.map +7 -1
  26. package/dist/checkbox.cjs +867 -4
  27. package/dist/checkbox.cjs.map +7 -1
  28. package/dist/checkbox.js +794 -3
  29. package/dist/checkbox.js.map +7 -1
  30. package/dist/copy-button.cjs +1046 -4
  31. package/dist/copy-button.cjs.map +7 -1
  32. package/dist/copy-button.js +969 -3
  33. package/dist/copy-button.js.map +7 -1
  34. package/dist/detail-group.cjs +533 -0
  35. package/dist/detail-group.cjs.map +7 -0
  36. package/dist/detail-group.js +477 -0
  37. package/dist/detail-group.js.map +7 -0
  38. package/dist/detail.cjs +627 -4
  39. package/dist/detail.cjs.map +7 -1
  40. package/dist/detail.js +569 -3
  41. package/dist/detail.js.map +7 -1
  42. package/dist/dialog.cjs +738 -4
  43. package/dist/dialog.cjs.map +7 -1
  44. package/dist/dialog.js +665 -3
  45. package/dist/dialog.js.map +7 -1
  46. package/dist/divider.cjs +558 -4
  47. package/dist/divider.cjs.map +7 -1
  48. package/dist/divider.js +502 -3
  49. package/dist/divider.js.map +7 -1
  50. package/dist/drawer.cjs +818 -4
  51. package/dist/drawer.cjs.map +7 -1
  52. package/dist/drawer.js +749 -3
  53. package/dist/drawer.js.map +7 -1
  54. package/dist/dropdown.cjs +1396 -5
  55. package/dist/dropdown.cjs.map +7 -1
  56. package/dist/dropdown.js +1316 -4
  57. package/dist/dropdown.js.map +7 -1
  58. package/dist/icon-button.cjs +999 -4
  59. package/dist/icon-button.cjs.map +7 -1
  60. package/dist/icon-button.js +930 -3
  61. package/dist/icon-button.js.map +7 -1
  62. package/dist/icon.cjs +613 -4
  63. package/dist/icon.cjs.map +7 -1
  64. package/dist/icon.js +547 -3
  65. package/dist/icon.js.map +7 -1
  66. package/dist/index.cjs +6484 -188
  67. package/dist/index.cjs.map +7 -1
  68. package/dist/index.js +6095 -147
  69. package/dist/index.js.map +7 -1
  70. package/dist/menu.cjs +841 -4
  71. package/dist/menu.cjs.map +7 -1
  72. package/dist/menu.js +785 -3
  73. package/dist/menu.js.map +7 -1
  74. package/dist/navbar.cjs +622 -4
  75. package/dist/navbar.cjs.map +7 -1
  76. package/dist/navbar.js +564 -3
  77. package/dist/navbar.js.map +7 -1
  78. package/dist/number-input.cjs +887 -0
  79. package/dist/number-input.cjs.map +7 -0
  80. package/dist/number-input.js +820 -0
  81. package/dist/number-input.js.map +7 -0
  82. package/dist/pagination.cjs +1099 -4
  83. package/dist/pagination.cjs.map +7 -1
  84. package/dist/pagination.js +1029 -3
  85. package/dist/pagination.js.map +7 -1
  86. package/dist/progress-bar.cjs +581 -4
  87. package/dist/progress-bar.cjs.map +7 -1
  88. package/dist/progress-bar.js +525 -3
  89. package/dist/progress-bar.js.map +7 -1
  90. package/dist/radio-group.cjs +973 -5
  91. package/dist/radio-group.cjs.map +7 -1
  92. package/dist/radio-group.js +899 -4
  93. package/dist/radio-group.js.map +7 -1
  94. package/dist/select.cjs +1242 -45
  95. package/dist/select.cjs.map +7 -1
  96. package/dist/select.js +1159 -44
  97. package/dist/select.js.map +7 -1
  98. package/dist/slider.cjs +1420 -4
  99. package/dist/slider.cjs.map +7 -1
  100. package/dist/slider.js +1351 -3
  101. package/dist/slider.js.map +7 -1
  102. package/dist/spinner.cjs +587 -4
  103. package/dist/spinner.cjs.map +7 -1
  104. package/dist/spinner.js +528 -3
  105. package/dist/spinner.js.map +7 -1
  106. package/dist/styles/layout.cjs +1 -0
  107. package/dist/styles/layout.js +1 -0
  108. package/dist/styles/radius.cjs +1 -0
  109. package/dist/styles/radius.js +1 -0
  110. package/dist/styles/variables.cjs +1 -0
  111. package/dist/styles/variables.js +1 -0
  112. package/dist/switch.cjs +1092 -4
  113. package/dist/switch.cjs.map +7 -1
  114. package/dist/switch.js +1013 -3
  115. package/dist/switch.js.map +7 -1
  116. package/dist/tabs.cjs +660 -6
  117. package/dist/tabs.cjs.map +7 -1
  118. package/dist/tabs.js +591 -5
  119. package/dist/tabs.js.map +7 -1
  120. package/dist/tag.cjs +591 -3
  121. package/dist/tag.cjs.map +7 -1
  122. package/dist/tag.js +532 -2
  123. package/dist/tag.js.map +7 -1
  124. package/dist/text-input.cjs +829 -4
  125. package/dist/text-input.cjs.map +7 -1
  126. package/dist/text-input.js +761 -3
  127. package/dist/text-input.js.map +7 -1
  128. package/dist/textarea.cjs +914 -3
  129. package/dist/textarea.cjs.map +7 -1
  130. package/dist/textarea.js +854 -2
  131. package/dist/textarea.js.map +7 -1
  132. package/dist/tooltip.cjs +764 -4
  133. package/dist/tooltip.cjs.map +7 -1
  134. package/dist/tooltip.js +711 -3
  135. package/dist/tooltip.js.map +7 -1
  136. package/dist/tree.cjs +1059 -4
  137. package/dist/tree.cjs.map +7 -1
  138. package/dist/tree.js +985 -3
  139. package/dist/tree.js.map +7 -1
  140. package/dist/types/card/defines.d.ts +1 -1
  141. package/dist/types/detail/defines.d.ts +1 -1
  142. package/dist/types/dialog/dialog.d.ts +1 -0
  143. package/dist/types/drawer/drawer.d.ts +2 -0
  144. package/dist/types/icon/defines.d.ts +7 -1
  145. package/dist/types/icon/index.d.ts +1 -1
  146. package/dist/types/menu/defines.d.ts +1 -0
  147. package/dist/types/menu/menu-item.d.ts +1 -0
  148. package/dist/types/menu/menu.d.ts +1 -0
  149. package/dist/types/styles/layout.d.ts +2 -0
  150. package/dist/types/styles/radius.d.ts +2 -0
  151. package/dist/types/styles/variables.d.ts +2 -0
  152. package/dist/types/tabs/defines.d.ts +1 -0
  153. package/dist/types/tabs/tabs.d.ts +3 -0
  154. package/package.json +31 -7
  155. package/src/alert/alert.ts +3 -3
  156. package/src/badge/badge.ts +4 -4
  157. package/src/breadcrumb/breadcrumb-item.ts +2 -2
  158. package/src/breadcrumb/breadcrumb.ts +3 -3
  159. package/src/button/button.ts +4 -4
  160. package/src/button-group/button-group.ts +8 -9
  161. package/src/card/card.ts +3 -3
  162. package/src/card/defines.ts +1 -1
  163. package/src/checkbox/checkbox.ts +6 -6
  164. package/src/copy-button/copy-button.ts +13 -9
  165. package/src/detail/defines.ts +1 -1
  166. package/src/detail/detail.ts +3 -3
  167. package/src/detail-group/detail-group.ts +2 -2
  168. package/src/dialog/dialog.ts +15 -14
  169. package/src/divider/divider.ts +3 -3
  170. package/src/drawer/drawer.ts +28 -11
  171. package/src/dropdown/dropdown-item.ts +2 -2
  172. package/src/dropdown/dropdown.ts +2 -2
  173. package/src/icon/defines.ts +8 -1
  174. package/src/icon/icon.ts +32 -14
  175. package/src/icon/index.ts +1 -1
  176. package/src/icon/registry.ts +2 -2
  177. package/src/menu/defines.ts +1 -0
  178. package/src/menu/menu-item.ts +14 -4
  179. package/src/menu/menu.ts +5 -2
  180. package/src/navbar/navbar.ts +3 -3
  181. package/src/number-input/number-input.ts +5 -5
  182. package/src/pagination/pagination.ts +3 -3
  183. package/src/progress-bar/progress-bar.ts +3 -3
  184. package/src/radio-group/radio-group.ts +12 -8
  185. package/src/select/select-option.ts +2 -2
  186. package/src/select/select.ts +5 -5
  187. package/src/slider/slider.ts +6 -6
  188. package/src/spinner/spinner.ts +4 -4
  189. package/src/styles/color.css +91 -91
  190. package/src/styles/components/action-button.css +12 -12
  191. package/src/styles/components/alert.css +22 -28
  192. package/src/styles/components/badge.css +13 -20
  193. package/src/styles/components/breadcrumb-item.css +7 -7
  194. package/src/styles/components/button-group.css +2 -0
  195. package/src/styles/components/button.css +39 -50
  196. package/src/styles/components/card.css +69 -30
  197. package/src/styles/components/checkbox.css +22 -16
  198. package/src/styles/components/copy-button.css +22 -33
  199. package/src/styles/components/detail.css +51 -39
  200. package/src/styles/components/dialog.css +11 -11
  201. package/src/styles/components/divider.css +3 -3
  202. package/src/styles/components/drawer.css +59 -27
  203. package/src/styles/components/dropdown-item.css +7 -8
  204. package/src/styles/components/dropdown.css +3 -4
  205. package/src/styles/components/field-label.css +13 -13
  206. package/src/styles/components/icon-button.css +25 -36
  207. package/src/styles/components/icon.css +1 -1
  208. package/src/styles/components/menu-item.css +13 -8
  209. package/src/styles/components/navbar.css +23 -44
  210. package/src/styles/components/number-input.css +27 -36
  211. package/src/styles/components/pagination.css +31 -31
  212. package/src/styles/components/progress-bar.css +2 -3
  213. package/src/styles/components/radio-group.css +88 -83
  214. package/src/styles/components/select-option.css +5 -5
  215. package/src/styles/components/select.css +21 -33
  216. package/src/styles/components/slider.css +56 -34
  217. package/src/styles/components/spinner.css +7 -9
  218. package/src/styles/components/switch.css +21 -19
  219. package/src/styles/components/tab.css +4 -5
  220. package/src/styles/components/tabs.css +48 -1
  221. package/src/styles/components/tag.css +14 -21
  222. package/src/styles/components/text-input.css +13 -22
  223. package/src/styles/components/textarea.css +12 -21
  224. package/src/styles/components/tooltip.css +4 -5
  225. package/src/styles/components/tree-item.css +12 -12
  226. package/src/styles/layout.css +5 -2
  227. package/src/styles/radius.css +25 -0
  228. package/src/styles/size.css +7 -7
  229. package/src/styles/variables.css +271 -247
  230. package/src/switch/switch.ts +6 -6
  231. package/src/tabs/defines.ts +1 -0
  232. package/src/tabs/tab-panel.ts +1 -1
  233. package/src/tabs/tab.ts +1 -1
  234. package/src/tabs/tabs.ts +14 -2
  235. package/src/tag/tag.ts +4 -4
  236. package/src/text-input/text-input.ts +5 -5
  237. package/src/textarea/textarea.ts +5 -5
  238. package/src/tooltip/tooltip.ts +2 -2
  239. package/src/tree/tree-item.ts +2 -2
  240. package/src/tree/tree.ts +2 -2
  241. package/dist/chunks/action-button.cjs +0 -296
  242. package/dist/chunks/action-button.cjs.map +0 -1
  243. package/dist/chunks/action-button.js +0 -297
  244. package/dist/chunks/action-button.js.map +0 -1
  245. package/dist/chunks/aeico-component.cjs +0 -17
  246. package/dist/chunks/aeico-component.cjs.map +0 -1
  247. package/dist/chunks/aeico-component.js +0 -18
  248. package/dist/chunks/aeico-component.js.map +0 -1
  249. package/dist/chunks/alert.cjs +0 -170
  250. package/dist/chunks/alert.cjs.map +0 -1
  251. package/dist/chunks/alert.js +0 -171
  252. package/dist/chunks/alert.js.map +0 -1
  253. package/dist/chunks/badge.cjs +0 -85
  254. package/dist/chunks/badge.cjs.map +0 -1
  255. package/dist/chunks/badge.js +0 -86
  256. package/dist/chunks/badge.js.map +0 -1
  257. package/dist/chunks/breadcrumb-item.cjs +0 -261
  258. package/dist/chunks/breadcrumb-item.cjs.map +0 -1
  259. package/dist/chunks/breadcrumb-item.js +0 -262
  260. package/dist/chunks/breadcrumb-item.js.map +0 -1
  261. package/dist/chunks/button-group.cjs +0 -79
  262. package/dist/chunks/button-group.cjs.map +0 -1
  263. package/dist/chunks/button-group.js +0 -80
  264. package/dist/chunks/button-group.js.map +0 -1
  265. package/dist/chunks/button.cjs +0 -348
  266. package/dist/chunks/button.cjs.map +0 -1
  267. package/dist/chunks/button.js +0 -349
  268. package/dist/chunks/button.js.map +0 -1
  269. package/dist/chunks/card.cjs +0 -93
  270. package/dist/chunks/card.cjs.map +0 -1
  271. package/dist/chunks/card.js +0 -94
  272. package/dist/chunks/card.js.map +0 -1
  273. package/dist/chunks/checkbox.cjs +0 -86
  274. package/dist/chunks/checkbox.cjs.map +0 -1
  275. package/dist/chunks/checkbox.js +0 -87
  276. package/dist/chunks/checkbox.js.map +0 -1
  277. package/dist/chunks/color.cjs +0 -4
  278. package/dist/chunks/color.cjs.map +0 -1
  279. package/dist/chunks/color.js +0 -5
  280. package/dist/chunks/color.js.map +0 -1
  281. package/dist/chunks/copy-button.cjs +0 -168
  282. package/dist/chunks/copy-button.cjs.map +0 -1
  283. package/dist/chunks/copy-button.js +0 -169
  284. package/dist/chunks/copy-button.js.map +0 -1
  285. package/dist/chunks/detail.cjs +0 -146
  286. package/dist/chunks/detail.cjs.map +0 -1
  287. package/dist/chunks/detail.js +0 -147
  288. package/dist/chunks/detail.js.map +0 -1
  289. package/dist/chunks/dialog.cjs +0 -117
  290. package/dist/chunks/dialog.cjs.map +0 -1
  291. package/dist/chunks/dialog.js +0 -118
  292. package/dist/chunks/dialog.js.map +0 -1
  293. package/dist/chunks/divider.cjs +0 -80
  294. package/dist/chunks/divider.cjs.map +0 -1
  295. package/dist/chunks/divider.js +0 -81
  296. package/dist/chunks/divider.js.map +0 -1
  297. package/dist/chunks/drawer.cjs +0 -180
  298. package/dist/chunks/drawer.cjs.map +0 -1
  299. package/dist/chunks/drawer.js +0 -181
  300. package/dist/chunks/drawer.js.map +0 -1
  301. package/dist/chunks/dropdown-button.cjs +0 -534
  302. package/dist/chunks/dropdown-button.cjs.map +0 -1
  303. package/dist/chunks/dropdown-button.js +0 -535
  304. package/dist/chunks/dropdown-button.js.map +0 -1
  305. package/dist/chunks/icon-button.cjs +0 -35
  306. package/dist/chunks/icon-button.cjs.map +0 -1
  307. package/dist/chunks/icon-button.js +0 -36
  308. package/dist/chunks/icon-button.js.map +0 -1
  309. package/dist/chunks/icon.cjs +0 -108
  310. package/dist/chunks/icon.cjs.map +0 -1
  311. package/dist/chunks/icon.js +0 -109
  312. package/dist/chunks/icon.js.map +0 -1
  313. package/dist/chunks/menu.cjs +0 -396
  314. package/dist/chunks/menu.cjs.map +0 -1
  315. package/dist/chunks/menu.js +0 -397
  316. package/dist/chunks/menu.js.map +0 -1
  317. package/dist/chunks/navbar.cjs +0 -142
  318. package/dist/chunks/navbar.cjs.map +0 -1
  319. package/dist/chunks/navbar.js +0 -143
  320. package/dist/chunks/navbar.js.map +0 -1
  321. package/dist/chunks/pagination.cjs +0 -475
  322. package/dist/chunks/pagination.cjs.map +0 -1
  323. package/dist/chunks/pagination.js +0 -476
  324. package/dist/chunks/pagination.js.map +0 -1
  325. package/dist/chunks/progress-bar.cjs +0 -101
  326. package/dist/chunks/progress-bar.cjs.map +0 -1
  327. package/dist/chunks/progress-bar.js +0 -102
  328. package/dist/chunks/progress-bar.js.map +0 -1
  329. package/dist/chunks/radio.cjs +0 -185
  330. package/dist/chunks/radio.cjs.map +0 -1
  331. package/dist/chunks/radio.js +0 -186
  332. package/dist/chunks/radio.js.map +0 -1
  333. package/dist/chunks/select.cjs +0 -381
  334. package/dist/chunks/select.cjs.map +0 -1
  335. package/dist/chunks/select.js +0 -382
  336. package/dist/chunks/select.js.map +0 -1
  337. package/dist/chunks/size.cjs +0 -4
  338. package/dist/chunks/size.cjs.map +0 -1
  339. package/dist/chunks/size.js +0 -5
  340. package/dist/chunks/size.js.map +0 -1
  341. package/dist/chunks/slider.cjs +0 -611
  342. package/dist/chunks/slider.cjs.map +0 -1
  343. package/dist/chunks/slider.js +0 -612
  344. package/dist/chunks/slider.js.map +0 -1
  345. package/dist/chunks/spinner.cjs +0 -102
  346. package/dist/chunks/spinner.cjs.map +0 -1
  347. package/dist/chunks/spinner.js +0 -103
  348. package/dist/chunks/spinner.js.map +0 -1
  349. package/dist/chunks/switch.cjs +0 -167
  350. package/dist/chunks/switch.cjs.map +0 -1
  351. package/dist/chunks/switch.js +0 -168
  352. package/dist/chunks/switch.js.map +0 -1
  353. package/dist/chunks/tab-panel.cjs +0 -165
  354. package/dist/chunks/tab-panel.cjs.map +0 -1
  355. package/dist/chunks/tab-panel.js +0 -166
  356. package/dist/chunks/tab-panel.js.map +0 -1
  357. package/dist/chunks/tag.cjs +0 -108
  358. package/dist/chunks/tag.cjs.map +0 -1
  359. package/dist/chunks/tag.js +0 -109
  360. package/dist/chunks/tag.js.map +0 -1
  361. package/dist/chunks/text-input.cjs +0 -54
  362. package/dist/chunks/text-input.cjs.map +0 -1
  363. package/dist/chunks/text-input.js +0 -55
  364. package/dist/chunks/text-input.js.map +0 -1
  365. package/dist/chunks/textarea.cjs +0 -137
  366. package/dist/chunks/textarea.cjs.map +0 -1
  367. package/dist/chunks/textarea.js +0 -138
  368. package/dist/chunks/textarea.js.map +0 -1
  369. package/dist/chunks/tooltip.cjs +0 -293
  370. package/dist/chunks/tooltip.cjs.map +0 -1
  371. package/dist/chunks/tooltip.js +0 -294
  372. package/dist/chunks/tooltip.js.map +0 -1
  373. package/dist/chunks/tree.cjs +0 -468
  374. package/dist/chunks/tree.cjs.map +0 -1
  375. package/dist/chunks/tree.js +0 -469
  376. package/dist/chunks/tree.js.map +0 -1
  377. package/dist/chunks/variables.cjs +0 -372
  378. package/dist/chunks/variables.cjs.map +0 -1
  379. package/dist/chunks/variables.js +0 -373
  380. package/dist/chunks/variables.js.map +0 -1
package/dist/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(--surface-raised);\n --option-bg-selected: color-mix(in srgb, var(--color-primary) 12%, transparent);\n --option-color: var(--color-text-main);\n --option-color-disabled: var(--color-text-disabled);\n --option-color-selected: var(--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