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
@@ -1 +1,7 @@
1
- {"version":3,"file":"spinner.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/aeico-component.ts", "../src/utils.ts", "../src/spinner/spinner.ts", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/size.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/color.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/spinner.css"],
4
+ "sourcesContent": ["\uFEFFimport { AeicoElement } from 'aeico';\nimport { toKebab } from './utils';\n\nconst TAG_NAME_PREFIX = 'ae';\n\n/**\n * AeicoComponent is the base class for all built-in Aeico components.\n */\nclass AeicoComponent extends AeicoElement {\n static register(name?: string) {\n const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;\n\n super.register(tagName);\n }\n}\n\nexport default AeicoComponent;\n", "export const SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function toKebab(str: string): string {\n const cleaned = str.replace(/^[_\\d]+/, '');\n\n return cleaned.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n", "import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport styleVariables from '../styles/variables.css';\nimport sizeCSS from '../styles/size.css';\nimport colorCSS from '../styles/color.css';\nimport style from '../styles/components/spinner.css';\nimport type { SpinnerColor, SpinnerSize, SpinnerVariant } from './defines';\n\n/**\n * Spinner \u2014 animated loading indicator.\n *\n * Supports two visual variants: a rotating ring (`border`, default) and\n * three bouncing dots (`dots`). Size and colour are driven by the shared\n * design-token system.\n *\n * @example\n * ```html\n * <ae-spinner></ae-spinner>\n * <ae-spinner variant=\"dots\" color=\"primary\" size=\"lg\"></ae-spinner>\n * <ae-spinner color=\"success\" speed=\"0.5s\" label=\"Saving\u2026\"></ae-spinner>\n * ```\n */\nclass Spinner extends AeicoComponent {\n static tagName = 'spinner';\n\n @prop({ type: String })\n accessor variant: SpinnerVariant = 'border';\n\n @prop({ type: String })\n accessor size: SpinnerSize = 'md';\n\n @prop({ type: String })\n accessor color: SpinnerColor = 'default';\n\n @prop({ type: String })\n accessor label: string = 'Loading\u2026';\n\n @prop({ type: String })\n accessor speed: string | undefined;\n\n protected static styles = [styleVariables, sizeCSS, colorCSS, style];\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'status');\n }\n\n protected render() {\n this.setAttribute('aria-label', this.label);\n\n if (this.speed) {\n this.style.setProperty('--spinner-speed', this.speed);\n } else {\n this.style.removeProperty('--spinner-speed');\n }\n\n const isDots = this.variant === 'dots';\n\n return html(({ span }) => {\n span({ part: 'track', className: 'track', 'aria-hidden': 'true' }, () => {\n if (isDots) {\n span({ className: 'dot' });\n span({ className: 'dot' });\n span({ className: 'dot' });\n }\n });\n });\n }\n}\n\nSpinner.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-spinner': Spinner;\n }\n}\n\nexport default Spinner;\nexport type SpinnerProps = InferProps<typeof Spinner>;\n", "export default \":root,\\n:host {\\n --ae-font-sans-serif: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\",\\n \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif,\\n \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\";\\n --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\\n \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace;\\n font-family: var(--ae-font-sans-serif);\\n --ae-blue: #0e639c;\\n --ae-green: #28a745;\\n --ae-red: #dc3545;\\n --ae-yellow: #ffc107;\\n --ae-cyan: #17a2b8;\\n --ae-gray: #6e6e6e;\\n --ae-slate: #64748b;\\n --ae-dark: #343a40;\\n --ae-light: #f8f9fa;\\n}\\n\\n:root,\\n:host {\\n /* Blue */\\n --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);\\n --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);\\n --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);\\n --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);\\n --ae-blue-500: var(--ae-blue);\\n --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);\\n --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);\\n --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);\\n --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);\\n\\n /* Green */\\n --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);\\n --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);\\n --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);\\n --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);\\n --ae-green-500: var(--ae-green);\\n --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);\\n --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);\\n --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);\\n --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);\\n\\n /* Red */\\n --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);\\n --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);\\n --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);\\n --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);\\n --ae-red-500: var(--ae-red);\\n --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);\\n --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);\\n --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);\\n --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);\\n\\n /* Yellow */\\n --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);\\n --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);\\n --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);\\n --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);\\n --ae-yellow-500: var(--ae-yellow);\\n --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);\\n --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);\\n --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);\\n --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);\\n\\n /* Cyan */\\n --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);\\n --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);\\n --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);\\n --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);\\n --ae-cyan-500: var(--ae-cyan);\\n --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);\\n --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);\\n --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);\\n --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);\\n\\n /* Gray (neutral \u2014 base #6e6e6e) */\\n --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);\\n --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);\\n --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);\\n --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);\\n --ae-gray-500: var(--ae-gray);\\n --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);\\n --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);\\n --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);\\n --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);\\n\\n /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */\\n --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);\\n --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);\\n --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);\\n --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);\\n --ae-slate-500: var(--ae-slate);\\n --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);\\n --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);\\n --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);\\n --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);\\n\\n /* Dark (base #343a40) */\\n --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);\\n --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);\\n --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);\\n --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);\\n --ae-dark-500: var(--ae-dark);\\n --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);\\n --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);\\n --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);\\n --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);\\n\\n /* Light (base #f8f9fa) */\\n --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);\\n --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);\\n --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);\\n --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);\\n --ae-light-500: var(--ae-light);\\n --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);\\n --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);\\n --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);\\n --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);\\n}\\n\\n:root,\\n:host {\\n /* Hover / active mix (light default \u2014 overridden in \u00A7 6 dark) */\\n --ae-color-mix-hover: black 10%;\\n --ae-color-mix-active: black 20%;\\n\\n /* Primary (Blue) */\\n --ae-color-primary: var(--ae-blue-500);\\n --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));\\n --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));\\n --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));\\n\\n /* Success (Green) */\\n --ae-color-success: var(--ae-green-500);\\n --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));\\n --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));\\n --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));\\n\\n /* Danger (Red) */\\n --ae-color-danger: var(--ae-red-500);\\n --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));\\n --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));\\n --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));\\n\\n /* Warning (Yellow) */\\n --ae-color-warning: var(--ae-yellow-500);\\n --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));\\n --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));\\n --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));\\n\\n /* Info (Cyan) */\\n --ae-color-info: var(--ae-cyan-500);\\n --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));\\n --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));\\n --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));\\n\\n /* Secondary (Slate) \u2014 base differs per theme, overridden in \u00A7 6 dark */\\n --ae-color-secondary: var(--ae-slate-500);\\n --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));\\n --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));\\n --ae-color-secondary-text: var(--ae-slate-700);\\n}\\n\\n\\n.theme-light,\\n:root[theme=\\\"light\\\"],\\n:host([theme=\\\"light\\\"]),\\n:host-context([theme=\\\"light\\\"]),\\n:where(:root),\\n:host {\\n color-scheme: light;\\n\\n /* Gray UI aliases \u2014 lighter palette steps for elements on white background */\\n --ae-color-gray-dark: var(--ae-gray-400);\\n --ae-color-gray: var(--ae-gray-300);\\n --ae-color-gray-light: var(--ae-gray-200);\\n --ae-color-gray-lighter: var(--ae-gray-100);\\n --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);\\n\\n /* Text */\\n --ae-color-text-main: var(--ae-dark-700);\\n --ae-color-text-muted: var(--ae-gray-600);\\n --ae-color-text-disabled: var(--ae-gray-300);\\n --ae-color-text-link: var(--ae-blue-500);\\n --ae-color-text-link-hover: var(--ae-blue-700);\\n\\n /* Surfaces */\\n --ae-surface-sunken: var(--ae-light-500);\\n --ae-surface-base: white;\\n --ae-surface-raised: var(--ae-light-500);\\n --ae-surface-overlay: white;\\n --ae-color-overlay: rgba(0, 0, 0, 0.4);\\n\\n /* Borders */\\n --ae-border-subtle: rgba(0, 0, 0, 0.08);\\n --ae-border-default: rgba(0, 0, 0, 0.15);\\n --ae-border-hover: rgba(0, 0, 0, 0.25);\\n --ae-border-focus: var(--ae-color-primary);\\n --ae-border-disabled: rgba(0, 0, 0, 0.06);\\n\\n /* Focus ring */\\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);\\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);\\n\\n /* Subtle intent tokens \u2014 light context */\\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);\\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);\\n --ae-color-primary-text-emphasis: var(--ae-blue-700);\\n\\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);\\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);\\n --ae-color-success-text-emphasis: var(--ae-green-700);\\n\\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);\\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);\\n --ae-color-danger-text-emphasis: var(--ae-red-700);\\n\\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);\\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);\\n --ae-color-warning-text-emphasis: var(--ae-yellow-700);\\n\\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);\\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);\\n --ae-color-info-text-emphasis: var(--ae-cyan-700);\\n\\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);\\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);\\n --ae-color-secondary-text-emphasis: var(--ae-slate-700);\\n\\n --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */\\n --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */\\n\\n --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */\\n --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */\\n\\n /* Component tokens \u2014 light defaults */\\n --ae-action-btn-bg: var(--ae-gray-200);\\n --ae-action-btn-bg-hover: var(--ae-color-primary);\\n --ae-action-btn-color: var(--ae-gray-600);\\n --ae-action-btn-color-hover: white;\\n\\n --ae-clear-btn-bg-hover: var(--ae-color-danger);\\n --ae-clear-btn-color-hover: white;\\n\\n --ae-reset-btn-border-radius: var(--ae-radius-xs);\\n --ae-reset-btn-bg: var(--ae-action-btn-bg);\\n --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);\\n --ae-reset-btn-color: var(--ae-action-btn-color);\\n --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);\\n --ae-reset-btn-transition: all 0.12s;\\n\\n --ae-clear-btn-border-radius: var(--ae-radius-xs);\\n --ae-clear-btn-bg: var(--ae-action-btn-bg);\\n --ae-clear-btn-color: var(--ae-action-btn-color);\\n --ae-clear-btn-transition: all 0.12s;\\n}\\n\\n:root,\\n:host {\\n --ae-size-scale: 1;\\n --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */\\n --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */\\n --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */\\n --ae-size-m: var(--ae-size-base); /* 16px */\\n --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */\\n --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */\\n --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */\\n --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */\\n}\\n\\n/* Border-radius tokens \u2014 shared across all components */\\n:root,\\n:host {\\n /**\\n * Unified border-radius hook for all components.\\n *\\n * Not set by default \u2014 each component falls back to its own --ae-radius-*\\n * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).\\n *\\n * Usage:\\n * :root { --ae-border-radius: 0; } // global: all components square\\n * :root { --ae-border-radius: 999px; } // global: all components pill\\n * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular\\n * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar\\n *\\n * To restore a component to its own default:\\n * ae-card { --ae-border-radius: initial; }\\n */\\n\\n --ae-radius-square: 0;\\n --ae-radius-xs: 2px;\\n --ae-radius-sm: 4px;\\n --ae-radius-md: 6px;\\n --ae-radius-lg: 8px;\\n --ae-radius-xl: 12px;\\n --ae-radius-pill: 999px;\\n --ae-radius-circle: 50%;\\n}\\n\\n/* Layout tokens \u2014 defined on :root so all light DOM elements can use them */\\n:root,\\n:host {\\n --container-max-width: 1280px;\\n --container-padding-x: 1.5rem;\\n}\\n\\n.theme-dark,\\n:root[theme=\\\"dark\\\"],\\n:host([theme=\\\"dark\\\"]),\\n:host-context([theme=\\\"dark\\\"]) {\\n color-scheme: dark;\\n\\n /* Hover / active \u2014 slightly gentler on dark backgrounds */\\n --ae-color-mix-hover: black 8%;\\n --ae-color-mix-active: black 16%;\\n\\n /* Gray UI aliases \u2014 darker palette steps for elements on dark background */\\n --ae-color-gray-dark: var(--ae-gray-800);\\n --ae-color-gray: var(--ae-gray-700);\\n --ae-color-gray-light: var(--ae-gray-600);\\n --ae-color-gray-lighter: var(--ae-gray-500);\\n --ae-color-gray-lightest: var(--ae-gray-400);\\n\\n /* Secondary \u2014 deeper base on dark background */\\n --ae-color-secondary: var(--ae-slate-700);\\n --ae-color-secondary-text: var(--ae-slate-300);\\n\\n /* Text */\\n --ae-color-text-main: white;\\n --ae-color-text-muted: var(--ae-gray-200);\\n --ae-color-text-disabled: var(--ae-gray-500);\\n --ae-color-text-link: var(--ae-blue-300);\\n --ae-color-text-link-hover: var(--ae-blue-200);\\n\\n /* Surfaces */\\n --ae-surface-sunken: var(--ae-gray-900);\\n --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);\\n --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);\\n --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);\\n --ae-color-overlay: rgba(0, 0, 0, 0.6);\\n\\n /* Borders */\\n --ae-border-subtle: rgba(255, 255, 255, 0.08);\\n --ae-border-default: rgba(255, 255, 255, 0.12);\\n --ae-border-hover: rgba(255, 255, 255, 0.20);\\n --ae-border-focus: var(--ae-color-primary);\\n --ae-border-disabled: rgba(255, 255, 255, 0.06);\\n\\n /* Focus ring */\\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);\\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);\\n\\n /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */\\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);\\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);\\n --ae-color-primary-text-emphasis: var(--ae-blue-300);\\n\\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);\\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);\\n --ae-color-success-text-emphasis: var(--ae-green-300);\\n\\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);\\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);\\n --ae-color-danger-text-emphasis: var(--ae-red-300);\\n\\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);\\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);\\n --ae-color-warning-text-emphasis: var(--ae-yellow-300);\\n\\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);\\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);\\n --ae-color-info-text-emphasis: var(--ae-cyan-300);\\n\\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);\\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);\\n --ae-color-secondary-text-emphasis: var(--ae-slate-300);\\n\\n --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);\\n --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);\\n\\n --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);\\n --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);\\n\\n /* Component tokens \u2014 dark overrides */\\n --ae-action-btn-bg: var(--ae-color-gray);\\n --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));\\n --ae-action-btn-color: var(--ae-gray-400);\\n --ae-action-btn-color-hover: var(--ae-cyan-300);\\n --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));\\n --ae-clear-btn-color-hover: var(--ae-red-300);\\n}\\n\"", "export default \":host([size=\\\"xs\\\"]) { font-size: var(--ae-size-xs); }\\n:host([size=\\\"sm\\\"]) { font-size: var(--ae-size-s); }\\n:host([size=\\\"md\\\"]) { font-size: var(--ae-size-m); }\\n:host([size=\\\"lg\\\"]) { font-size: var(--ae-size-l); }\\n:host([size=\\\"xl\\\"]) { font-size: var(--ae-size-xl); }\\n:host([size=\\\"3xs\\\"]) { font-size: var(--ae-size-3xs); }\\n:host([size=\\\"2xs\\\"]) { font-size: var(--ae-size-2xs); }\\n\"", "export default \":host {\\n --ae-color-solid: var(--ae-color-gray);\\n --ae-color-solid-hover: color-mix(in srgb, var(--ae-color-solid), var(--ae-color-mix-hover));\\n --ae-color-solid-active: color-mix(in srgb, var(--ae-color-solid), var(--ae-color-mix-active));\\n --ae-color-on-solid: var(--ae-color-text-main);\\n --ae-color-border: var(--ae-color-gray);\\n --ae-color-border-hover: color-mix(in srgb, var(--ae-color-border), var(--ae-color-mix-hover));\\n --ae-color-accent: var(--ae-color-text-muted);\\n --ae-color-accent-hover: var(--ae-color-text-main);\\n --ae-color-subtle: var(--ae-border-subtle);\\n --ae-color-subtle-hover: var(--ae-border-default);\\n --ae-color-bg-subtle: var(--ae-border-subtle);\\n --ae-color-text-subtle: var(--ae-color-text-muted);\\n --ae-color-border-subtle: var(--ae-border-default);\\n}\\n\\n:host([color=\\\"primary\\\"]) {\\n --ae-color-solid: var(--ae-color-primary);\\n --ae-color-on-solid: white;\\n --ae-color-border: var(--ae-color-primary);\\n --ae-color-accent: var(--ae-color-text-link);\\n --ae-color-accent-hover: var(--ae-color-text-link-hover);\\n --ae-color-subtle: var(--ae-color-primary-bg-subtle);\\n --ae-color-subtle-hover: rgb(from var(--ae-blue) r g b / 0.15);\\n --ae-color-bg-subtle: var(--ae-color-primary-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-primary-text-emphasis);\\n --ae-color-border-subtle: var(--ae-color-primary-border-subtle);\\n}\\n\\n:host([color=\\\"secondary\\\"]) {\\n --ae-color-solid: var(--ae-color-secondary);\\n --ae-color-on-solid: white;\\n --ae-color-border: var(--ae-color-secondary-hover);\\n --ae-color-accent: var(--ae-color-secondary-text-emphasis);\\n --ae-color-accent-hover: var(--ae-color-text-main);\\n --ae-color-subtle: rgb(from var(--ae-slate) r g b / 0.06);\\n --ae-color-subtle-hover: rgb(from var(--ae-slate) r g b / 0.12);\\n --ae-color-bg-subtle: var(--ae-color-secondary-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-secondary-text-emphasis);\\n --ae-color-border-subtle: var(--ae-color-secondary-border-subtle);\\n}\\n\\n:host([color=\\\"success\\\"]) {\\n --ae-color-solid: var(--ae-color-success);\\n --ae-color-on-solid: white;\\n --ae-color-border: var(--ae-color-success);\\n --ae-color-accent: var(--ae-color-success-text-emphasis);\\n --ae-color-accent-hover: var(--ae-color-success-hover);\\n --ae-color-subtle: var(--ae-color-success-bg-subtle);\\n --ae-color-subtle-hover: rgb(from var(--ae-green) r g b / 0.15);\\n --ae-color-bg-subtle: var(--ae-color-success-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-success-text-emphasis);\\n --ae-color-border-subtle: var(--ae-color-success-border-subtle);\\n}\\n\\n:host([color=\\\"danger\\\"]) {\\n --ae-color-solid: var(--ae-color-danger);\\n --ae-color-on-solid: white;\\n --ae-color-border: var(--ae-color-danger);\\n --ae-color-accent: var(--ae-color-danger-text-emphasis);\\n --ae-color-accent-hover: var(--ae-color-danger-hover);\\n --ae-color-subtle: var(--ae-color-danger-bg-subtle);\\n --ae-color-subtle-hover: rgb(from var(--ae-red) r g b / 0.15);\\n --ae-color-bg-subtle: var(--ae-color-danger-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-danger-text-emphasis);\\n --ae-color-border-subtle: var(--ae-color-danger-border-subtle);\\n}\\n\\n:host([color=\\\"warning\\\"]) {\\n --ae-color-solid: var(--ae-color-warning);\\n --ae-color-on-solid: var(--ae-gray-900);\\n --ae-color-border: var(--ae-color-warning);\\n --ae-color-accent: var(--ae-color-warning-text-emphasis);\\n --ae-color-accent-hover: var(--ae-color-warning-hover);\\n --ae-color-subtle: var(--ae-color-warning-bg-subtle);\\n --ae-color-subtle-hover: rgb(from var(--ae-yellow) r g b / 0.15);\\n --ae-color-bg-subtle: var(--ae-color-warning-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-warning-text-emphasis);\\n --ae-color-border-subtle: var(--ae-color-warning-border-subtle);\\n}\\n\\n:host([color=\\\"info\\\"]) {\\n --ae-color-solid: var(--ae-color-info);\\n --ae-color-on-solid: white;\\n --ae-color-border: var(--ae-color-info);\\n --ae-color-accent: var(--ae-color-info-text-emphasis);\\n --ae-color-accent-hover: var(--ae-color-info-hover);\\n --ae-color-subtle: var(--ae-color-info-bg-subtle);\\n --ae-color-subtle-hover: rgb(from var(--ae-cyan) r g b / 0.15);\\n --ae-color-bg-subtle: var(--ae-color-info-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-info-text-emphasis);\\n --ae-color-border-subtle: var(--ae-color-info-border-subtle);\\n}\\n\\n:host([color=\\\"light\\\"]) {\\n --ae-color-solid: var(--ae-light);\\n --ae-color-on-solid: var(--ae-gray-900);\\n --ae-color-border: var(--ae-border-hover);\\n --ae-color-subtle: var(--ae-color-light-bg-subtle);\\n --ae-color-subtle-hover: var(--ae-color-light-border-subtle);\\n --ae-color-bg-subtle: var(--ae-color-light-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-text-muted);\\n --ae-color-border-subtle: var(--ae-color-light-border-subtle);\\n}\\n\\n:host([color=\\\"dark\\\"]) {\\n --ae-color-solid: var(--ae-dark-500);\\n --ae-color-on-solid: white;\\n --ae-color-border: var(--ae-dark-500);\\n --ae-color-accent: var(--ae-color-text-main);\\n --ae-color-accent-hover: var(--ae-color-text-main);\\n --ae-color-subtle: var(--ae-color-dark-bg-subtle);\\n --ae-color-subtle-hover: var(--ae-color-dark-border-subtle);\\n --ae-color-bg-subtle: var(--ae-color-dark-bg-subtle);\\n --ae-color-text-subtle: var(--ae-color-text-main);\\n --ae-color-border-subtle: var(--ae-color-dark-border-subtle);\\n}\\n\"", "export default \":host {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n vertical-align: middle;\\n --spinner-size: 1.75em;\\n --spinner-thickness: 0.15em;\\n --spinner-speed: 0.75s;\\n}\\n\\n:host([size=\\\"xs\\\"]) { font-size: 0.75rem; }\\n:host([size=\\\"sm\\\"]) { font-size: 0.875rem; }\\n:host([size=\\\"md\\\"]) { font-size: 1rem; }\\n:host([size=\\\"lg\\\"]) { font-size: 1.5rem; }\\n\\n.track {\\n display: inline-block;\\n width: var(--spinner-size);\\n height: var(--spinner-size);\\n border-radius: var(--ae-radius-circle);\\n border: var(--spinner-thickness) solid var(--ae-color-bg-subtle, rgba(0, 0, 0, 0.08));\\n border-top-color: var(--ae-color-solid);\\n animation: ae-spin var(--spinner-speed) linear infinite;\\n box-sizing: border-box;\\n}\\n\\n:host([variant=\\\"dots\\\"]) .track {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n gap: calc(var(--spinner-size) * 0.2);\\n width: auto;\\n height: var(--spinner-size);\\n border: none;\\n border-radius: var(--ae-radius-square);\\n animation: none;\\n background: transparent;\\n}\\n\\n:host([variant=\\\"dots\\\"]) .dot {\\n display: inline-block;\\n width: calc(var(--spinner-size) * 0.28);\\n height: calc(var(--spinner-size) * 0.28);\\n border-radius: var(--ae-radius-circle);\\n background: var(--ae-color-solid);\\n animation: ae-bounce var(--spinner-speed) ease-in-out infinite;\\n}\\n\\n:host([variant=\\\"dots\\\"]) .dot:nth-child(2) {\\n animation-delay: calc(var(--spinner-speed) / 6);\\n}\\n\\n:host([variant=\\\"dots\\\"]) .dot:nth-child(3) {\\n animation-delay: calc(var(--spinner-speed) / 3);\\n}\\n\\n@keyframes ae-spin {\\n to { transform: rotate(360deg); }\\n}\\n\\n@keyframes ae-bounce {\\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.5; }\\n 40% { transform: scale(1); opacity: 1; }\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .track {\\n animation: none;\\n border-top-color: var(--ae-color-solid);\\n opacity: 0.6;\\n }\\n\\n :host([variant=\\\"dots\\\"]) .dot {\\n animation: none;\\n opacity: 0.6;\\n }\\n}\\n\""],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAC,SAAS,oBAAoB;;;ACEvB,SAAS,QAAQ,KAAqB;AAC3C,QAAM,UAAU,IAAI,QAAQ,WAAW,EAAE;AAEzC,SAAO,QAAQ,QAAQ,mBAAmB,OAAO,EAAE,YAAY;AACjE;;;ADHA,IAAM,kBAAkB;AAKxB,IAAM,iBAAN,cAA6B,aAAa;AAAA,EACxC,OAAO,SAAS,MAAe;AAC7B,UAAM,UAAU,QAAQ,GAAG,eAAe,IAAI,KAAK,WAAW,QAAQ,KAAK,IAAI,CAAC;AAEhF,UAAM,SAAS,OAAO;AAAA,EACxB;AACF;AAEA,IAAO,0BAAQ;;;AEdf,SAAS,MAAM,YAAY;;;ACF3B,IAAO,oBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAO,eAAQ;;;ACAf,IAAO,gBAAQ;;;ACAf,IAAO,kBAAQ;;;AJAf;AAuBA,IAAM,UAAN,eAAsB,8BAGpB,gBAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAGtB,aAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAGtB,cAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAGtB,cAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAGtB,cAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAfF,IAAe;AAAA,EAArC;AAAA;AAIE,uBAAS,UAA0B,kBAAnC,gBAAmC,YAAnC;AAGA,uBAAS,OAAoB,kBAA7B,iBAA6B,QAA7B;AAGA,uBAAS,QAAsB,kBAA/B,iBAA+B,aAA/B;AAGA,uBAAS,QAAgB,kBAAzB,iBAAyB,mBAAzB;AAGA,uBAAS,QAAT;AAAA;AAAA,EAIA,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,SAAK,aAAa,QAAQ,QAAQ;AAAA,EACpC;AAAA,EAEU,SAAS;AACjB,SAAK,aAAa,cAAc,KAAK,KAAK;AAE1C,QAAI,KAAK,OAAO;AACd,WAAK,MAAM,YAAY,mBAAmB,KAAK,KAAK;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,iBAAiB;AAAA,IAC7C;AAEA,UAAM,SAAS,KAAK,YAAY;AAEhC,WAAO,KAAK,CAAC,EAAE,KAAK,MAAM;AACxB,WAAK,EAAE,MAAM,SAAS,WAAW,SAAS,eAAe,OAAO,GAAG,MAAM;AACvE,YAAI,QAAQ;AACV,eAAK,EAAE,WAAW,MAAM,CAAC;AACzB,eAAK,EAAE,WAAW,MAAM,CAAC;AACzB,eAAK,EAAE,WAAW,MAAM,CAAC;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AA9CA;AAIW;AAGA;AAGA;AAGA;AAGA;AAZT,4BAAS,WADT,cAHI,SAIK;AAGT,4BAAS,QADT,WANI,SAOK;AAGT,4BAAS,SADT,YATI,SAUK;AAGT,4BAAS,SADT,YAZI,SAaK;AAGT,4BAAS,SADT,YAfI,SAgBK;AAhBX,2BAAM;AACJ,cADI,SACG,WAAU;AAiBjB,cAlBI,SAkBa,UAAS,CAAC,mBAAgB,cAAS,eAAU,eAAK;AA8BrE,QAAQ,SAAS;AAQjB,IAAOA,mBAAQ;",
6
+ "names": ["spinner_default"]
7
+ }
@@ -0,0 +1 @@
1
+ module.exports = "/*\n layout.css — Light DOM utility classes\n This file is for use in the user's light DOM (regular HTML),\n NOT imported by any Web Component internally.\n\n Import it once in your page:\n import 'aeico-components/styles/layout.css'\n or:\n <link rel=\"stylesheet\" href=\"node_modules/aeico-components/src/styles/layout.css\">\n\n Requires variables.css for the --space-* and --container-* tokens:\n import 'aeico-components/styles/variables.css'\n\n All utility rules live inside @layer aeico-layout so that your own\n un-layered (or later-layered) styles always override them without !important.\n\n The layout tokens defined here on :root are intentionally mirrored\n in variables.css (:root, :host) so that ae-navbar's shadow DOM\n inner content also aligns automatically.\n*/\n\n/**\n * Tokens — defined on :root outside @layer so they are always resolvable,\n * even when the cascade layer order is re-arranged by the consuming app.\n */\n:root {\n --container-max-width: 1280px;\n --container-padding-x: 1.5rem;\n --container-sm-max-width: 720px;\n --container-md-max-width: 960px;\n --container-xl-max-width: 1440px;\n\n /* Spacing scale — numeric steps based on a 4px unit.\n * Usage: gap: var(--space-4); padding: var(--space-2) var(--space-6);\n */\n --space-1: 0.25rem; /* 4px */\n --space-2: 0.5rem; /* 8px */\n --space-3: 0.75rem; /* 12px */\n --space-4: 1rem; /* 16px */\n --space-6: 1.5rem; /* 24px */\n --space-8: 2rem; /* 32px */\n --space-10: 2.5rem; /* 40px */\n --space-12: 3rem; /* 48px */\n --space-16: 4rem; /* 64px */\n}\n\n/**\n * @layer aeico-layout — all utility rules live here.\n * Unlayered user styles win automatically. To override from a named layer,\n * declare the order before importing this file:\n * @layer aeico-layout, your-layer;\n */\n@layer aeico-layout {\n\n /* #region Container */\n\n /*\n * .container\n * Fixed max-width, centred, with horizontal padding.\n * Same padding-x as ae-navbar's inner content area.\n */\n .container {\n width: 100%;\n max-width: var(--container-max-width, 1280px);\n margin-inline: auto;\n padding-inline: var(--container-padding-x, 1.5rem);\n box-sizing: border-box;\n }\n\n /*\n * .container-fluid\n * Full-width, only applies horizontal padding.\n */\n .container-fluid {\n width: 100%;\n padding-inline: var(--container-padding-x, 1.5rem);\n box-sizing: border-box;\n }\n\n /**\n * Container size variants\n *\n * Narrower and wider alternatives to .container, sharing the same box model.\n * Override the width tokens globally to affect all instances at once:\n * --container-sm-max-width (default 720px)\n * --container-md-max-width (default 960px)\n * --container-xl-max-width (default 1440px)\n */\n .container-sm,\n .container-md,\n .container-xl {\n width: 100%;\n margin-inline: auto;\n padding-inline: var(--container-padding-x, 1.5rem);\n box-sizing: border-box;\n }\n\n .container-sm { max-width: var(--container-sm-max-width, 720px); }\n .container-md { max-width: var(--container-md-max-width, 960px); }\n .container-xl { max-width: var(--container-xl-max-width, 1440px); }\n\n /* #endregion */\n\n /* #region Stack */\n\n /**\n * Stack\n *\n * Vertical flex container. Children are laid out top-to-bottom with a\n * consistent gap driven by --stack-gap (defaults to --space-4 / 16px).\n *\n * Override per-component: .my-section { --stack-gap: var(--space-6) }\n * Or use a gap modifier: <div class=\"stack stack-6\">\n *\n * Gap modifier scale (maps to spacing tokens):\n * .stack-1 4px .stack-2 8px .stack-3 12px .stack-4 16px\n * .stack-6 24px .stack-8 32px .stack-10 40px .stack-12 48px .stack-16 64px\n */\n .stack {\n display: flex;\n flex-direction: column;\n gap: var(--stack-gap, var(--space-4, 1rem));\n }\n\n /* Reset block margins on direct children — prevents h1/p/ul from adding\n unintended spacing on top of the flex gap. */\n .stack > * { margin-block: 0; margin-inline: 0; }\n\n /* Default alignment — zero specificity so a single class rule overrides it. */\n :where(.stack) { align-items: stretch; }\n\n .stack-1 { --stack-gap: var(--space-1, 0.25rem); }\n .stack-2 { --stack-gap: var(--space-2, 0.5rem); }\n .stack-3 { --stack-gap: var(--space-3, 0.75rem); }\n .stack-4 { --stack-gap: var(--space-4, 1rem); }\n .stack-6 { --stack-gap: var(--space-6, 1.5rem); }\n .stack-8 { --stack-gap: var(--space-8, 2rem); }\n .stack-10 { --stack-gap: var(--space-10, 2.5rem); }\n .stack-12 { --stack-gap: var(--space-12, 3rem); }\n .stack-16 { --stack-gap: var(--space-16, 4rem); }\n\n /* Alignment modifiers */\n .stack-center { align-items: center; }\n .stack-stretch { align-items: stretch; }\n .stack-start { align-items: flex-start; }\n .stack-end { align-items: flex-end; }\n\n /* #endregion */\n\n /* #region Cluster */\n\n /**\n * Cluster\n *\n * Horizontal flex container with wrapping. Items flow left-to-right and wrap\n * to the next line when the container is too narrow.\n *\n * Override per-component: .my-toolbar { --cluster-gap: var(--space-2) }\n * Or use a gap modifier: <div class=\"cluster cluster-2\">\n *\n * Inline token overrides (no extra class needed):\n * style=\"--cluster-align: flex-start; --cluster-justify: center\"\n *\n * Justify modifiers: .cluster-between .cluster-center .cluster-end\n */\n .cluster {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cluster-gap, var(--space-4, 1rem));\n }\n\n /* Defaults — override via CSS custom properties or modifier classes.\n :where() keeps specificity at zero so a plain class rule always wins. */\n :where(.cluster) {\n align-items: var(--cluster-align, center);\n justify-content: var(--cluster-justify, flex-start);\n }\n\n .cluster-1 { --cluster-gap: var(--space-1, 0.25rem); }\n .cluster-2 { --cluster-gap: var(--space-2, 0.5rem); }\n .cluster-3 { --cluster-gap: var(--space-3, 0.75rem); }\n .cluster-4 { --cluster-gap: var(--space-4, 1rem); }\n .cluster-6 { --cluster-gap: var(--space-6, 1.5rem); }\n .cluster-8 { --cluster-gap: var(--space-8, 2rem); }\n .cluster-10 { --cluster-gap: var(--space-10, 2.5rem); }\n .cluster-12 { --cluster-gap: var(--space-12, 3rem); }\n .cluster-16 { --cluster-gap: var(--space-16, 4rem); }\n\n /* Justify modifiers */\n .cluster-between { --cluster-justify: space-between; }\n .cluster-center { --cluster-justify: center; }\n .cluster-end { --cluster-justify: flex-end; }\n\n /* #endregion */\n\n /* #region Grid */\n\n /**\n * Grid\n *\n * CSS Grid container driven by two custom properties:\n * --grid-cols number of equal columns (default 1)\n * --grid-gap gap between cells (default --space-4 / 16px)\n *\n * Fixed-column presets:\n * <div class=\"grid grid-cols-3\">\n * Override inline: style=\"--grid-cols: 5; --grid-gap: var(--space-6)\"\n *\n * Auto-responsive variant (.grid-auto):\n * Fills as many columns as fit; minimum column width set by --grid-min-col.\n * <div class=\"grid-auto\" style=\"--grid-min-col: 200px\">\n *\n * Responsive column modifiers (breakpoints: sm≥576 md≥768 lg≥992 xl≥1200):\n * <div class=\"grid grid-cols-1 grid-cols-md-2 grid-cols-lg-3\">\n *\n * Full-width span:\n * <div class=\"grid-span\"> inside any .grid or .grid-auto\n */\n .grid {\n display: grid;\n grid-template-columns: repeat(var(--grid-cols, 1), 1fr);\n gap: var(--grid-gap, var(--space-4, 1rem));\n }\n\n /* Reset block margins on direct children — same rationale as .stack. */\n .grid > * { margin-block: 0; margin-inline: 0; }\n\n /* Fixed-column presets */\n .grid-cols-2 { --grid-cols: 2; }\n .grid-cols-3 { --grid-cols: 3; }\n .grid-cols-4 { --grid-cols: 4; }\n .grid-cols-6 { --grid-cols: 6; }\n .grid-cols-12 { --grid-cols: 12; }\n\n /**\n * Auto-responsive grid\n *\n * min() guard prevents columns exceeding 100% of the container width,\n * avoiding horizontal overflow when --grid-min-col > container width.\n */\n .grid-auto {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(var(--grid-min-col, 240px), 100%), 1fr));\n gap: var(--grid-gap, var(--space-4, 1rem));\n }\n\n /* .grid-span — child spans all columns */\n .grid-span { grid-column: 1 / -1; }\n\n /* Responsive column modifiers — sm ≥ 576px */\n @media (min-width: 576px) {\n .grid-cols-sm-1 { --grid-cols: 1; }\n .grid-cols-sm-2 { --grid-cols: 2; }\n .grid-cols-sm-3 { --grid-cols: 3; }\n .grid-cols-sm-4 { --grid-cols: 4; }\n }\n\n /* Responsive column modifiers — md ≥ 768px */\n @media (min-width: 768px) {\n .grid-cols-md-1 { --grid-cols: 1; }\n .grid-cols-md-2 { --grid-cols: 2; }\n .grid-cols-md-3 { --grid-cols: 3; }\n .grid-cols-md-4 { --grid-cols: 4; }\n .grid-cols-md-6 { --grid-cols: 6; }\n }\n\n /* Responsive column modifiers — lg ≥ 992px */\n @media (min-width: 992px) {\n .grid-cols-lg-1 { --grid-cols: 1; }\n .grid-cols-lg-2 { --grid-cols: 2; }\n .grid-cols-lg-3 { --grid-cols: 3; }\n .grid-cols-lg-4 { --grid-cols: 4; }\n .grid-cols-lg-6 { --grid-cols: 6; }\n .grid-cols-lg-12 { --grid-cols: 12; }\n }\n\n /* Responsive column modifiers — xl ≥ 1200px */\n @media (min-width: 1200px) {\n .grid-cols-xl-1 { --grid-cols: 1; }\n .grid-cols-xl-2 { --grid-cols: 2; }\n .grid-cols-xl-3 { --grid-cols: 3; }\n .grid-cols-xl-4 { --grid-cols: 4; }\n .grid-cols-xl-6 { --grid-cols: 6; }\n .grid-cols-xl-12 { --grid-cols: 12; }\n }\n\n /* #endregion */\n\n /* #region Flank */\n\n /**\n * Flank\n *\n * A two-column layout where one side (\"the flank\") has a fixed or intrinsic\n * width and the other side (\"the content\") fills the remaining space.\n * Wraps to a single column when the content area would be narrower than\n * --flank-content-min (default 50%).\n *\n * --flank-size width of the flanking element (default: auto / intrinsic)\n * --flank-content-min min inline size of content before wrapping (default: 50%)\n * --flank-gap gap between children (default: --space-4)\n *\n * Default (.flank): first child = flank, last child = content\n * Reversed (.flank-end): first child = content, last child = flank\n *\n * Example:\n * <div class=\"flank\" style=\"--flank-size: 12rem\">\n * <img src=\"avatar.png\" />\n * <div>…content…</div>\n * </div>\n */\n .flank {\n display: flex;\n flex-wrap: wrap;\n gap: var(--flank-gap, var(--space-4, 1rem));\n }\n\n :where(.flank) { align-items: flex-start; }\n\n /* First child = flank sidebar */\n .flank > :first-child {\n flex-basis: var(--flank-size, auto);\n flex-grow: 1;\n }\n\n /* Last child = content area */\n .flank > :last-child {\n flex-basis: 0;\n flex-grow: 999;\n min-inline-size: var(--flank-content-min, 50%);\n }\n\n /* .flank-end — last child becomes the flank, first child is the content */\n .flank-end > :last-child {\n flex-basis: var(--flank-size, auto);\n flex-grow: 1;\n min-inline-size: unset;\n }\n\n .flank-end > :first-child {\n flex-basis: 0;\n flex-grow: 999;\n min-inline-size: var(--flank-content-min, 50%);\n }\n\n /* #endregion */\n\n /* #region Frame */\n\n /**\n * Frame\n *\n * Aspect-ratio container that crops its content (images, videos, embeds)\n * to a fixed ratio without distortion.\n *\n * --frame-ratio aspect ratio (default: 16 / 9)\n *\n * Ratio presets:\n * .frame-square 1 / 1\n * .frame-landscape 16 / 9 (default)\n * .frame-portrait 9 / 16\n *\n * Example:\n * <div class=\"frame frame-landscape\">\n * <img src=\"hero.jpg\" alt=\"…\" />\n * </div>\n */\n .frame {\n display: flex;\n overflow: hidden;\n aspect-ratio: var(--frame-ratio, 16 / 9);\n }\n\n :where(.frame) {\n align-items: center;\n justify-content: center;\n }\n\n .frame > img,\n .frame > video {\n inline-size: 100%;\n block-size: 100%;\n object-fit: cover;\n }\n\n .frame-square { --frame-ratio: 1 / 1; }\n .frame-landscape { --frame-ratio: 16 / 9; }\n .frame-portrait { --frame-ratio: 9 / 16; }\n\n /* #endregion */\n\n /* #region Split */\n\n /**\n * Split\n *\n * A space-between layout for toolbars, card headers, and navigation bars.\n * Unlike .cluster.cluster-between, Split does not wrap by default and\n * supports a column direction (.split-col) for vertical splits.\n *\n * --split-gap gap between children (default: --space-4)\n *\n * Modifiers:\n * .split-col vertical split (flex-direction: column)\n *\n * Example:\n * <header class=\"split\">\n * <span>Title</span>\n * <nav>…actions…</nav>\n * </header>\n */\n .split {\n display: flex;\n gap: var(--split-gap, var(--space-4, 1rem));\n }\n\n :where(.split) {\n align-items: center;\n justify-content: space-between;\n flex-wrap: nowrap;\n }\n\n .split-col {\n flex-direction: column;\n align-items: stretch;\n justify-content: space-between;\n }\n\n /* #endregion */\n\n /* #region Gap utilities */\n\n /**\n * Gap utilities\n *\n * Apply to any flex or grid container to set gap via spacing tokens.\n * .gap-{n} both row and column gap\n * .gap-x-{n} column gap only\n * .gap-y-{n} row gap only\n *\n * Available steps: 0 1 2 3 4 6 8 10 12 16\n */\n .gap-0 { gap: 0; }\n .gap-1 { gap: var(--space-1, 0.25rem); }\n .gap-2 { gap: var(--space-2, 0.5rem); }\n .gap-3 { gap: var(--space-3, 0.75rem); }\n .gap-4 { gap: var(--space-4, 1rem); }\n .gap-6 { gap: var(--space-6, 1.5rem); }\n .gap-8 { gap: var(--space-8, 2rem); }\n .gap-10 { gap: var(--space-10, 2.5rem); }\n .gap-12 { gap: var(--space-12, 3rem); }\n .gap-16 { gap: var(--space-16, 4rem); }\n\n .gap-x-0 { column-gap: 0; }\n .gap-x-1 { column-gap: var(--space-1, 0.25rem); }\n .gap-x-2 { column-gap: var(--space-2, 0.5rem); }\n .gap-x-3 { column-gap: var(--space-3, 0.75rem); }\n .gap-x-4 { column-gap: var(--space-4, 1rem); }\n .gap-x-6 { column-gap: var(--space-6, 1.5rem); }\n .gap-x-8 { column-gap: var(--space-8, 2rem); }\n .gap-x-10 { column-gap: var(--space-10, 2.5rem); }\n .gap-x-12 { column-gap: var(--space-12, 3rem); }\n .gap-x-16 { column-gap: var(--space-16, 4rem); }\n\n .gap-y-0 { row-gap: 0; }\n .gap-y-1 { row-gap: var(--space-1, 0.25rem); }\n .gap-y-2 { row-gap: var(--space-2, 0.5rem); }\n .gap-y-3 { row-gap: var(--space-3, 0.75rem); }\n .gap-y-4 { row-gap: var(--space-4, 1rem); }\n .gap-y-6 { row-gap: var(--space-6, 1.5rem); }\n .gap-y-8 { row-gap: var(--space-8, 2rem); }\n .gap-y-10 { row-gap: var(--space-10, 2.5rem); }\n .gap-y-12 { row-gap: var(--space-12, 3rem); }\n .gap-y-16 { row-gap: var(--space-16, 4rem); }\n\n /* #endregion */\n\n} /* end @layer aeico-layout */\n"
@@ -0,0 +1 @@
1
+ export default "/*\n layout.css — Light DOM utility classes\n This file is for use in the user's light DOM (regular HTML),\n NOT imported by any Web Component internally.\n\n Import it once in your page:\n import 'aeico-components/styles/layout.css'\n or:\n <link rel=\"stylesheet\" href=\"node_modules/aeico-components/src/styles/layout.css\">\n\n Requires variables.css for the --space-* and --container-* tokens:\n import 'aeico-components/styles/variables.css'\n\n All utility rules live inside @layer aeico-layout so that your own\n un-layered (or later-layered) styles always override them without !important.\n\n The layout tokens defined here on :root are intentionally mirrored\n in variables.css (:root, :host) so that ae-navbar's shadow DOM\n inner content also aligns automatically.\n*/\n\n/**\n * Tokens — defined on :root outside @layer so they are always resolvable,\n * even when the cascade layer order is re-arranged by the consuming app.\n */\n:root {\n --container-max-width: 1280px;\n --container-padding-x: 1.5rem;\n --container-sm-max-width: 720px;\n --container-md-max-width: 960px;\n --container-xl-max-width: 1440px;\n\n /* Spacing scale — numeric steps based on a 4px unit.\n * Usage: gap: var(--space-4); padding: var(--space-2) var(--space-6);\n */\n --space-1: 0.25rem; /* 4px */\n --space-2: 0.5rem; /* 8px */\n --space-3: 0.75rem; /* 12px */\n --space-4: 1rem; /* 16px */\n --space-6: 1.5rem; /* 24px */\n --space-8: 2rem; /* 32px */\n --space-10: 2.5rem; /* 40px */\n --space-12: 3rem; /* 48px */\n --space-16: 4rem; /* 64px */\n}\n\n/**\n * @layer aeico-layout — all utility rules live here.\n * Unlayered user styles win automatically. To override from a named layer,\n * declare the order before importing this file:\n * @layer aeico-layout, your-layer;\n */\n@layer aeico-layout {\n\n /* #region Container */\n\n /*\n * .container\n * Fixed max-width, centred, with horizontal padding.\n * Same padding-x as ae-navbar's inner content area.\n */\n .container {\n width: 100%;\n max-width: var(--container-max-width, 1280px);\n margin-inline: auto;\n padding-inline: var(--container-padding-x, 1.5rem);\n box-sizing: border-box;\n }\n\n /*\n * .container-fluid\n * Full-width, only applies horizontal padding.\n */\n .container-fluid {\n width: 100%;\n padding-inline: var(--container-padding-x, 1.5rem);\n box-sizing: border-box;\n }\n\n /**\n * Container size variants\n *\n * Narrower and wider alternatives to .container, sharing the same box model.\n * Override the width tokens globally to affect all instances at once:\n * --container-sm-max-width (default 720px)\n * --container-md-max-width (default 960px)\n * --container-xl-max-width (default 1440px)\n */\n .container-sm,\n .container-md,\n .container-xl {\n width: 100%;\n margin-inline: auto;\n padding-inline: var(--container-padding-x, 1.5rem);\n box-sizing: border-box;\n }\n\n .container-sm { max-width: var(--container-sm-max-width, 720px); }\n .container-md { max-width: var(--container-md-max-width, 960px); }\n .container-xl { max-width: var(--container-xl-max-width, 1440px); }\n\n /* #endregion */\n\n /* #region Stack */\n\n /**\n * Stack\n *\n * Vertical flex container. Children are laid out top-to-bottom with a\n * consistent gap driven by --stack-gap (defaults to --space-4 / 16px).\n *\n * Override per-component: .my-section { --stack-gap: var(--space-6) }\n * Or use a gap modifier: <div class=\"stack stack-6\">\n *\n * Gap modifier scale (maps to spacing tokens):\n * .stack-1 4px .stack-2 8px .stack-3 12px .stack-4 16px\n * .stack-6 24px .stack-8 32px .stack-10 40px .stack-12 48px .stack-16 64px\n */\n .stack {\n display: flex;\n flex-direction: column;\n gap: var(--stack-gap, var(--space-4, 1rem));\n }\n\n /* Reset block margins on direct children — prevents h1/p/ul from adding\n unintended spacing on top of the flex gap. */\n .stack > * { margin-block: 0; margin-inline: 0; }\n\n /* Default alignment — zero specificity so a single class rule overrides it. */\n :where(.stack) { align-items: stretch; }\n\n .stack-1 { --stack-gap: var(--space-1, 0.25rem); }\n .stack-2 { --stack-gap: var(--space-2, 0.5rem); }\n .stack-3 { --stack-gap: var(--space-3, 0.75rem); }\n .stack-4 { --stack-gap: var(--space-4, 1rem); }\n .stack-6 { --stack-gap: var(--space-6, 1.5rem); }\n .stack-8 { --stack-gap: var(--space-8, 2rem); }\n .stack-10 { --stack-gap: var(--space-10, 2.5rem); }\n .stack-12 { --stack-gap: var(--space-12, 3rem); }\n .stack-16 { --stack-gap: var(--space-16, 4rem); }\n\n /* Alignment modifiers */\n .stack-center { align-items: center; }\n .stack-stretch { align-items: stretch; }\n .stack-start { align-items: flex-start; }\n .stack-end { align-items: flex-end; }\n\n /* #endregion */\n\n /* #region Cluster */\n\n /**\n * Cluster\n *\n * Horizontal flex container with wrapping. Items flow left-to-right and wrap\n * to the next line when the container is too narrow.\n *\n * Override per-component: .my-toolbar { --cluster-gap: var(--space-2) }\n * Or use a gap modifier: <div class=\"cluster cluster-2\">\n *\n * Inline token overrides (no extra class needed):\n * style=\"--cluster-align: flex-start; --cluster-justify: center\"\n *\n * Justify modifiers: .cluster-between .cluster-center .cluster-end\n */\n .cluster {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cluster-gap, var(--space-4, 1rem));\n }\n\n /* Defaults — override via CSS custom properties or modifier classes.\n :where() keeps specificity at zero so a plain class rule always wins. */\n :where(.cluster) {\n align-items: var(--cluster-align, center);\n justify-content: var(--cluster-justify, flex-start);\n }\n\n .cluster-1 { --cluster-gap: var(--space-1, 0.25rem); }\n .cluster-2 { --cluster-gap: var(--space-2, 0.5rem); }\n .cluster-3 { --cluster-gap: var(--space-3, 0.75rem); }\n .cluster-4 { --cluster-gap: var(--space-4, 1rem); }\n .cluster-6 { --cluster-gap: var(--space-6, 1.5rem); }\n .cluster-8 { --cluster-gap: var(--space-8, 2rem); }\n .cluster-10 { --cluster-gap: var(--space-10, 2.5rem); }\n .cluster-12 { --cluster-gap: var(--space-12, 3rem); }\n .cluster-16 { --cluster-gap: var(--space-16, 4rem); }\n\n /* Justify modifiers */\n .cluster-between { --cluster-justify: space-between; }\n .cluster-center { --cluster-justify: center; }\n .cluster-end { --cluster-justify: flex-end; }\n\n /* #endregion */\n\n /* #region Grid */\n\n /**\n * Grid\n *\n * CSS Grid container driven by two custom properties:\n * --grid-cols number of equal columns (default 1)\n * --grid-gap gap between cells (default --space-4 / 16px)\n *\n * Fixed-column presets:\n * <div class=\"grid grid-cols-3\">\n * Override inline: style=\"--grid-cols: 5; --grid-gap: var(--space-6)\"\n *\n * Auto-responsive variant (.grid-auto):\n * Fills as many columns as fit; minimum column width set by --grid-min-col.\n * <div class=\"grid-auto\" style=\"--grid-min-col: 200px\">\n *\n * Responsive column modifiers (breakpoints: sm≥576 md≥768 lg≥992 xl≥1200):\n * <div class=\"grid grid-cols-1 grid-cols-md-2 grid-cols-lg-3\">\n *\n * Full-width span:\n * <div class=\"grid-span\"> inside any .grid or .grid-auto\n */\n .grid {\n display: grid;\n grid-template-columns: repeat(var(--grid-cols, 1), 1fr);\n gap: var(--grid-gap, var(--space-4, 1rem));\n }\n\n /* Reset block margins on direct children — same rationale as .stack. */\n .grid > * { margin-block: 0; margin-inline: 0; }\n\n /* Fixed-column presets */\n .grid-cols-2 { --grid-cols: 2; }\n .grid-cols-3 { --grid-cols: 3; }\n .grid-cols-4 { --grid-cols: 4; }\n .grid-cols-6 { --grid-cols: 6; }\n .grid-cols-12 { --grid-cols: 12; }\n\n /**\n * Auto-responsive grid\n *\n * min() guard prevents columns exceeding 100% of the container width,\n * avoiding horizontal overflow when --grid-min-col > container width.\n */\n .grid-auto {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(var(--grid-min-col, 240px), 100%), 1fr));\n gap: var(--grid-gap, var(--space-4, 1rem));\n }\n\n /* .grid-span — child spans all columns */\n .grid-span { grid-column: 1 / -1; }\n\n /* Responsive column modifiers — sm ≥ 576px */\n @media (min-width: 576px) {\n .grid-cols-sm-1 { --grid-cols: 1; }\n .grid-cols-sm-2 { --grid-cols: 2; }\n .grid-cols-sm-3 { --grid-cols: 3; }\n .grid-cols-sm-4 { --grid-cols: 4; }\n }\n\n /* Responsive column modifiers — md ≥ 768px */\n @media (min-width: 768px) {\n .grid-cols-md-1 { --grid-cols: 1; }\n .grid-cols-md-2 { --grid-cols: 2; }\n .grid-cols-md-3 { --grid-cols: 3; }\n .grid-cols-md-4 { --grid-cols: 4; }\n .grid-cols-md-6 { --grid-cols: 6; }\n }\n\n /* Responsive column modifiers — lg ≥ 992px */\n @media (min-width: 992px) {\n .grid-cols-lg-1 { --grid-cols: 1; }\n .grid-cols-lg-2 { --grid-cols: 2; }\n .grid-cols-lg-3 { --grid-cols: 3; }\n .grid-cols-lg-4 { --grid-cols: 4; }\n .grid-cols-lg-6 { --grid-cols: 6; }\n .grid-cols-lg-12 { --grid-cols: 12; }\n }\n\n /* Responsive column modifiers — xl ≥ 1200px */\n @media (min-width: 1200px) {\n .grid-cols-xl-1 { --grid-cols: 1; }\n .grid-cols-xl-2 { --grid-cols: 2; }\n .grid-cols-xl-3 { --grid-cols: 3; }\n .grid-cols-xl-4 { --grid-cols: 4; }\n .grid-cols-xl-6 { --grid-cols: 6; }\n .grid-cols-xl-12 { --grid-cols: 12; }\n }\n\n /* #endregion */\n\n /* #region Flank */\n\n /**\n * Flank\n *\n * A two-column layout where one side (\"the flank\") has a fixed or intrinsic\n * width and the other side (\"the content\") fills the remaining space.\n * Wraps to a single column when the content area would be narrower than\n * --flank-content-min (default 50%).\n *\n * --flank-size width of the flanking element (default: auto / intrinsic)\n * --flank-content-min min inline size of content before wrapping (default: 50%)\n * --flank-gap gap between children (default: --space-4)\n *\n * Default (.flank): first child = flank, last child = content\n * Reversed (.flank-end): first child = content, last child = flank\n *\n * Example:\n * <div class=\"flank\" style=\"--flank-size: 12rem\">\n * <img src=\"avatar.png\" />\n * <div>…content…</div>\n * </div>\n */\n .flank {\n display: flex;\n flex-wrap: wrap;\n gap: var(--flank-gap, var(--space-4, 1rem));\n }\n\n :where(.flank) { align-items: flex-start; }\n\n /* First child = flank sidebar */\n .flank > :first-child {\n flex-basis: var(--flank-size, auto);\n flex-grow: 1;\n }\n\n /* Last child = content area */\n .flank > :last-child {\n flex-basis: 0;\n flex-grow: 999;\n min-inline-size: var(--flank-content-min, 50%);\n }\n\n /* .flank-end — last child becomes the flank, first child is the content */\n .flank-end > :last-child {\n flex-basis: var(--flank-size, auto);\n flex-grow: 1;\n min-inline-size: unset;\n }\n\n .flank-end > :first-child {\n flex-basis: 0;\n flex-grow: 999;\n min-inline-size: var(--flank-content-min, 50%);\n }\n\n /* #endregion */\n\n /* #region Frame */\n\n /**\n * Frame\n *\n * Aspect-ratio container that crops its content (images, videos, embeds)\n * to a fixed ratio without distortion.\n *\n * --frame-ratio aspect ratio (default: 16 / 9)\n *\n * Ratio presets:\n * .frame-square 1 / 1\n * .frame-landscape 16 / 9 (default)\n * .frame-portrait 9 / 16\n *\n * Example:\n * <div class=\"frame frame-landscape\">\n * <img src=\"hero.jpg\" alt=\"…\" />\n * </div>\n */\n .frame {\n display: flex;\n overflow: hidden;\n aspect-ratio: var(--frame-ratio, 16 / 9);\n }\n\n :where(.frame) {\n align-items: center;\n justify-content: center;\n }\n\n .frame > img,\n .frame > video {\n inline-size: 100%;\n block-size: 100%;\n object-fit: cover;\n }\n\n .frame-square { --frame-ratio: 1 / 1; }\n .frame-landscape { --frame-ratio: 16 / 9; }\n .frame-portrait { --frame-ratio: 9 / 16; }\n\n /* #endregion */\n\n /* #region Split */\n\n /**\n * Split\n *\n * A space-between layout for toolbars, card headers, and navigation bars.\n * Unlike .cluster.cluster-between, Split does not wrap by default and\n * supports a column direction (.split-col) for vertical splits.\n *\n * --split-gap gap between children (default: --space-4)\n *\n * Modifiers:\n * .split-col vertical split (flex-direction: column)\n *\n * Example:\n * <header class=\"split\">\n * <span>Title</span>\n * <nav>…actions…</nav>\n * </header>\n */\n .split {\n display: flex;\n gap: var(--split-gap, var(--space-4, 1rem));\n }\n\n :where(.split) {\n align-items: center;\n justify-content: space-between;\n flex-wrap: nowrap;\n }\n\n .split-col {\n flex-direction: column;\n align-items: stretch;\n justify-content: space-between;\n }\n\n /* #endregion */\n\n /* #region Gap utilities */\n\n /**\n * Gap utilities\n *\n * Apply to any flex or grid container to set gap via spacing tokens.\n * .gap-{n} both row and column gap\n * .gap-x-{n} column gap only\n * .gap-y-{n} row gap only\n *\n * Available steps: 0 1 2 3 4 6 8 10 12 16\n */\n .gap-0 { gap: 0; }\n .gap-1 { gap: var(--space-1, 0.25rem); }\n .gap-2 { gap: var(--space-2, 0.5rem); }\n .gap-3 { gap: var(--space-3, 0.75rem); }\n .gap-4 { gap: var(--space-4, 1rem); }\n .gap-6 { gap: var(--space-6, 1.5rem); }\n .gap-8 { gap: var(--space-8, 2rem); }\n .gap-10 { gap: var(--space-10, 2.5rem); }\n .gap-12 { gap: var(--space-12, 3rem); }\n .gap-16 { gap: var(--space-16, 4rem); }\n\n .gap-x-0 { column-gap: 0; }\n .gap-x-1 { column-gap: var(--space-1, 0.25rem); }\n .gap-x-2 { column-gap: var(--space-2, 0.5rem); }\n .gap-x-3 { column-gap: var(--space-3, 0.75rem); }\n .gap-x-4 { column-gap: var(--space-4, 1rem); }\n .gap-x-6 { column-gap: var(--space-6, 1.5rem); }\n .gap-x-8 { column-gap: var(--space-8, 2rem); }\n .gap-x-10 { column-gap: var(--space-10, 2.5rem); }\n .gap-x-12 { column-gap: var(--space-12, 3rem); }\n .gap-x-16 { column-gap: var(--space-16, 4rem); }\n\n .gap-y-0 { row-gap: 0; }\n .gap-y-1 { row-gap: var(--space-1, 0.25rem); }\n .gap-y-2 { row-gap: var(--space-2, 0.5rem); }\n .gap-y-3 { row-gap: var(--space-3, 0.75rem); }\n .gap-y-4 { row-gap: var(--space-4, 1rem); }\n .gap-y-6 { row-gap: var(--space-6, 1.5rem); }\n .gap-y-8 { row-gap: var(--space-8, 2rem); }\n .gap-y-10 { row-gap: var(--space-10, 2.5rem); }\n .gap-y-12 { row-gap: var(--space-12, 3rem); }\n .gap-y-16 { row-gap: var(--space-16, 4rem); }\n\n /* #endregion */\n\n} /* end @layer aeico-layout */\n"
@@ -0,0 +1 @@
1
+ module.exports = "/*\n radius.css — Light DOM border-radius utility classes\n This file is for use in the user's light DOM (regular HTML),\n NOT imported by any Web Component internally.\n\n Import it once in your page:\n import 'aeico-components/styles/radius.css'\n\n Requires variables.css for the --ae-radius-* tokens:\n import 'aeico-components/styles/variables.css'\n\n All utility rules live inside @layer aeico-radius so that your own\n un-layered (or later-layered) styles always override them without !important.\n*/\n\n@layer aeico-radius {\n .ae-radius-square { border-radius: var(--ae-radius-square); }\n .ae-radius-xs { border-radius: var(--ae-radius-xs); }\n .ae-radius-sm { border-radius: var(--ae-radius-sm); }\n .ae-radius-md { border-radius: var(--ae-radius-md); }\n .ae-radius-lg { border-radius: var(--ae-radius-lg); }\n .ae-radius-xl { border-radius: var(--ae-radius-xl); }\n .ae-radius-pill { border-radius: var(--ae-radius-pill); }\n .ae-radius-circle { border-radius: var(--ae-radius-circle); }\n}\n"
@@ -0,0 +1 @@
1
+ export default "/*\n radius.css — Light DOM border-radius utility classes\n This file is for use in the user's light DOM (regular HTML),\n NOT imported by any Web Component internally.\n\n Import it once in your page:\n import 'aeico-components/styles/radius.css'\n\n Requires variables.css for the --ae-radius-* tokens:\n import 'aeico-components/styles/variables.css'\n\n All utility rules live inside @layer aeico-radius so that your own\n un-layered (or later-layered) styles always override them without !important.\n*/\n\n@layer aeico-radius {\n .ae-radius-square { border-radius: var(--ae-radius-square); }\n .ae-radius-xs { border-radius: var(--ae-radius-xs); }\n .ae-radius-sm { border-radius: var(--ae-radius-sm); }\n .ae-radius-md { border-radius: var(--ae-radius-md); }\n .ae-radius-lg { border-radius: var(--ae-radius-lg); }\n .ae-radius-xl { border-radius: var(--ae-radius-xl); }\n .ae-radius-pill { border-radius: var(--ae-radius-pill); }\n .ae-radius-circle { border-radius: var(--ae-radius-circle); }\n}\n"
@@ -0,0 +1 @@
1
+ module.exports = ":root,\n:host {\n --ae-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\",\n \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif,\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace;\n font-family: var(--ae-font-sans-serif);\n --ae-blue: #0e639c;\n --ae-green: #28a745;\n --ae-red: #dc3545;\n --ae-yellow: #ffc107;\n --ae-cyan: #17a2b8;\n --ae-gray: #6e6e6e;\n --ae-slate: #64748b;\n --ae-dark: #343a40;\n --ae-light: #f8f9fa;\n}\n\n:root,\n:host {\n /* Blue */\n --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);\n --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);\n --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);\n --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);\n --ae-blue-500: var(--ae-blue);\n --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);\n --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);\n --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);\n --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);\n\n /* Green */\n --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);\n --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);\n --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);\n --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);\n --ae-green-500: var(--ae-green);\n --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);\n --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);\n --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);\n --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);\n\n /* Red */\n --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);\n --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);\n --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);\n --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);\n --ae-red-500: var(--ae-red);\n --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);\n --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);\n --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);\n --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);\n\n /* Yellow */\n --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);\n --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);\n --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);\n --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);\n --ae-yellow-500: var(--ae-yellow);\n --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);\n --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);\n --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);\n --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);\n\n /* Cyan */\n --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);\n --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);\n --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);\n --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);\n --ae-cyan-500: var(--ae-cyan);\n --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);\n --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);\n --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);\n --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);\n\n /* Gray (neutral — base #6e6e6e) */\n --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);\n --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);\n --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);\n --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);\n --ae-gray-500: var(--ae-gray);\n --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);\n --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);\n --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);\n --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);\n\n /* Slate (blue-gray — base #64748b, used for 'secondary') */\n --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);\n --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);\n --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);\n --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);\n --ae-slate-500: var(--ae-slate);\n --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);\n --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);\n --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);\n --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);\n\n /* Dark (base #343a40) */\n --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);\n --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);\n --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);\n --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);\n --ae-dark-500: var(--ae-dark);\n --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);\n --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);\n --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);\n --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);\n\n /* Light (base #f8f9fa) */\n --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);\n --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);\n --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);\n --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);\n --ae-light-500: var(--ae-light);\n --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);\n --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);\n --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);\n --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);\n}\n\n:root,\n:host {\n /* Hover / active mix (light default — overridden in § 6 dark) */\n --ae-color-mix-hover: black 10%;\n --ae-color-mix-active: black 20%;\n\n /* Primary (Blue) */\n --ae-color-primary: var(--ae-blue-500);\n --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));\n --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));\n --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));\n\n /* Success (Green) */\n --ae-color-success: var(--ae-green-500);\n --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));\n --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));\n --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));\n\n /* Danger (Red) */\n --ae-color-danger: var(--ae-red-500);\n --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));\n --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));\n --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));\n\n /* Warning (Yellow) */\n --ae-color-warning: var(--ae-yellow-500);\n --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));\n --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));\n --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));\n\n /* Info (Cyan) */\n --ae-color-info: var(--ae-cyan-500);\n --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));\n --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));\n --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));\n\n /* Secondary (Slate) — base differs per theme, overridden in § 6 dark */\n --ae-color-secondary: var(--ae-slate-500);\n --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));\n --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));\n --ae-color-secondary-text: var(--ae-slate-700);\n}\n\n\n.theme-light,\n:root[theme=\"light\"],\n:host([theme=\"light\"]),\n:host-context([theme=\"light\"]),\n:where(:root),\n:host {\n color-scheme: light;\n\n /* Gray UI aliases — lighter palette steps for elements on white background */\n --ae-color-gray-dark: var(--ae-gray-400);\n --ae-color-gray: var(--ae-gray-300);\n --ae-color-gray-light: var(--ae-gray-200);\n --ae-color-gray-lighter: var(--ae-gray-100);\n --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);\n\n /* Text */\n --ae-color-text-main: var(--ae-dark-700);\n --ae-color-text-muted: var(--ae-gray-600);\n --ae-color-text-disabled: var(--ae-gray-300);\n --ae-color-text-link: var(--ae-blue-500);\n --ae-color-text-link-hover: var(--ae-blue-700);\n\n /* Surfaces */\n --ae-surface-sunken: var(--ae-light-500);\n --ae-surface-base: white;\n --ae-surface-raised: var(--ae-light-500);\n --ae-surface-overlay: white;\n --ae-color-overlay: rgba(0, 0, 0, 0.4);\n\n /* Borders */\n --ae-border-subtle: rgba(0, 0, 0, 0.08);\n --ae-border-default: rgba(0, 0, 0, 0.15);\n --ae-border-hover: rgba(0, 0, 0, 0.25);\n --ae-border-focus: var(--ae-color-primary);\n --ae-border-disabled: rgba(0, 0, 0, 0.06);\n\n /* Focus ring */\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);\n\n /* Subtle intent tokens — light context */\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);\n --ae-color-primary-text-emphasis: var(--ae-blue-700);\n\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);\n --ae-color-success-text-emphasis: var(--ae-green-700);\n\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);\n --ae-color-danger-text-emphasis: var(--ae-red-700);\n\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);\n --ae-color-warning-text-emphasis: var(--ae-yellow-700);\n\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);\n --ae-color-info-text-emphasis: var(--ae-cyan-700);\n\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);\n --ae-color-secondary-text-emphasis: var(--ae-slate-700);\n\n --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */\n --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */\n\n --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */\n --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */\n\n /* Component tokens — light defaults */\n --ae-action-btn-bg: var(--ae-gray-200);\n --ae-action-btn-bg-hover: var(--ae-color-primary);\n --ae-action-btn-color: var(--ae-gray-600);\n --ae-action-btn-color-hover: white;\n\n --ae-clear-btn-bg-hover: var(--ae-color-danger);\n --ae-clear-btn-color-hover: white;\n\n --ae-reset-btn-border-radius: var(--ae-radius-xs);\n --ae-reset-btn-bg: var(--ae-action-btn-bg);\n --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);\n --ae-reset-btn-color: var(--ae-action-btn-color);\n --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);\n --ae-reset-btn-transition: all 0.12s;\n\n --ae-clear-btn-border-radius: var(--ae-radius-xs);\n --ae-clear-btn-bg: var(--ae-action-btn-bg);\n --ae-clear-btn-color: var(--ae-action-btn-color);\n --ae-clear-btn-transition: all 0.12s;\n}\n\n:root,\n:host {\n --ae-size-scale: 1;\n --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */\n --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */\n --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */\n --ae-size-m: var(--ae-size-base); /* 16px */\n --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */\n --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */\n --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */\n --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */\n}\n\n/* Border-radius tokens — shared across all components */\n:root,\n:host {\n /**\n * Unified border-radius hook for all components.\n *\n * Not set by default — each component falls back to its own --ae-radius-*\n * token (e.g. button → sm, card → lg, input → xs).\n *\n * Usage:\n * :root { --ae-border-radius: 0; } // global: all components square\n * :root { --ae-border-radius: 999px; } // global: all components pill\n * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular\n * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar\n *\n * To restore a component to its own default:\n * ae-card { --ae-border-radius: initial; }\n */\n\n --ae-radius-square: 0;\n --ae-radius-xs: 2px;\n --ae-radius-sm: 4px;\n --ae-radius-md: 6px;\n --ae-radius-lg: 8px;\n --ae-radius-xl: 12px;\n --ae-radius-pill: 999px;\n --ae-radius-circle: 50%;\n}\n\n/* Layout tokens — defined on :root so all light DOM elements can use them */\n:root,\n:host {\n --container-max-width: 1280px;\n --container-padding-x: 1.5rem;\n}\n\n.theme-dark,\n:root[theme=\"dark\"],\n:host([theme=\"dark\"]),\n:host-context([theme=\"dark\"]) {\n color-scheme: dark;\n\n /* Hover / active — slightly gentler on dark backgrounds */\n --ae-color-mix-hover: black 8%;\n --ae-color-mix-active: black 16%;\n\n /* Gray UI aliases — darker palette steps for elements on dark background */\n --ae-color-gray-dark: var(--ae-gray-800);\n --ae-color-gray: var(--ae-gray-700);\n --ae-color-gray-light: var(--ae-gray-600);\n --ae-color-gray-lighter: var(--ae-gray-500);\n --ae-color-gray-lightest: var(--ae-gray-400);\n\n /* Secondary — deeper base on dark background */\n --ae-color-secondary: var(--ae-slate-700);\n --ae-color-secondary-text: var(--ae-slate-300);\n\n /* Text */\n --ae-color-text-main: white;\n --ae-color-text-muted: var(--ae-gray-200);\n --ae-color-text-disabled: var(--ae-gray-500);\n --ae-color-text-link: var(--ae-blue-300);\n --ae-color-text-link-hover: var(--ae-blue-200);\n\n /* Surfaces */\n --ae-surface-sunken: var(--ae-gray-900);\n --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);\n --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);\n --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);\n --ae-color-overlay: rgba(0, 0, 0, 0.6);\n\n /* Borders */\n --ae-border-subtle: rgba(255, 255, 255, 0.08);\n --ae-border-default: rgba(255, 255, 255, 0.12);\n --ae-border-hover: rgba(255, 255, 255, 0.20);\n --ae-border-focus: var(--ae-color-primary);\n --ae-border-disabled: rgba(255, 255, 255, 0.06);\n\n /* Focus ring */\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);\n\n /* Subtle intent tokens — dark context (more alpha, lighter text-emphasis) */\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);\n --ae-color-primary-text-emphasis: var(--ae-blue-300);\n\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);\n --ae-color-success-text-emphasis: var(--ae-green-300);\n\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);\n --ae-color-danger-text-emphasis: var(--ae-red-300);\n\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);\n --ae-color-warning-text-emphasis: var(--ae-yellow-300);\n\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);\n --ae-color-info-text-emphasis: var(--ae-cyan-300);\n\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);\n --ae-color-secondary-text-emphasis: var(--ae-slate-300);\n\n --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);\n --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);\n\n --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);\n --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);\n\n /* Component tokens — dark overrides */\n --ae-action-btn-bg: var(--ae-color-gray);\n --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));\n --ae-action-btn-color: var(--ae-gray-400);\n --ae-action-btn-color-hover: var(--ae-cyan-300);\n --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));\n --ae-clear-btn-color-hover: var(--ae-red-300);\n}\n"
@@ -0,0 +1 @@
1
+ export default ":root,\n:host {\n --ae-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\",\n \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif,\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace;\n font-family: var(--ae-font-sans-serif);\n --ae-blue: #0e639c;\n --ae-green: #28a745;\n --ae-red: #dc3545;\n --ae-yellow: #ffc107;\n --ae-cyan: #17a2b8;\n --ae-gray: #6e6e6e;\n --ae-slate: #64748b;\n --ae-dark: #343a40;\n --ae-light: #f8f9fa;\n}\n\n:root,\n:host {\n /* Blue */\n --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);\n --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);\n --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);\n --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);\n --ae-blue-500: var(--ae-blue);\n --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);\n --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);\n --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);\n --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);\n\n /* Green */\n --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);\n --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);\n --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);\n --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);\n --ae-green-500: var(--ae-green);\n --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);\n --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);\n --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);\n --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);\n\n /* Red */\n --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);\n --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);\n --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);\n --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);\n --ae-red-500: var(--ae-red);\n --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);\n --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);\n --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);\n --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);\n\n /* Yellow */\n --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);\n --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);\n --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);\n --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);\n --ae-yellow-500: var(--ae-yellow);\n --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);\n --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);\n --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);\n --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);\n\n /* Cyan */\n --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);\n --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);\n --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);\n --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);\n --ae-cyan-500: var(--ae-cyan);\n --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);\n --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);\n --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);\n --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);\n\n /* Gray (neutral — base #6e6e6e) */\n --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);\n --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);\n --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);\n --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);\n --ae-gray-500: var(--ae-gray);\n --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);\n --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);\n --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);\n --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);\n\n /* Slate (blue-gray — base #64748b, used for 'secondary') */\n --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);\n --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);\n --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);\n --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);\n --ae-slate-500: var(--ae-slate);\n --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);\n --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);\n --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);\n --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);\n\n /* Dark (base #343a40) */\n --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);\n --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);\n --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);\n --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);\n --ae-dark-500: var(--ae-dark);\n --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);\n --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);\n --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);\n --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);\n\n /* Light (base #f8f9fa) */\n --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);\n --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);\n --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);\n --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);\n --ae-light-500: var(--ae-light);\n --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);\n --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);\n --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);\n --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);\n}\n\n:root,\n:host {\n /* Hover / active mix (light default — overridden in § 6 dark) */\n --ae-color-mix-hover: black 10%;\n --ae-color-mix-active: black 20%;\n\n /* Primary (Blue) */\n --ae-color-primary: var(--ae-blue-500);\n --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));\n --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));\n --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));\n\n /* Success (Green) */\n --ae-color-success: var(--ae-green-500);\n --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));\n --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));\n --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));\n\n /* Danger (Red) */\n --ae-color-danger: var(--ae-red-500);\n --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));\n --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));\n --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));\n\n /* Warning (Yellow) */\n --ae-color-warning: var(--ae-yellow-500);\n --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));\n --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));\n --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));\n\n /* Info (Cyan) */\n --ae-color-info: var(--ae-cyan-500);\n --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));\n --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));\n --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));\n\n /* Secondary (Slate) — base differs per theme, overridden in § 6 dark */\n --ae-color-secondary: var(--ae-slate-500);\n --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));\n --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));\n --ae-color-secondary-text: var(--ae-slate-700);\n}\n\n\n.theme-light,\n:root[theme=\"light\"],\n:host([theme=\"light\"]),\n:host-context([theme=\"light\"]),\n:where(:root),\n:host {\n color-scheme: light;\n\n /* Gray UI aliases — lighter palette steps for elements on white background */\n --ae-color-gray-dark: var(--ae-gray-400);\n --ae-color-gray: var(--ae-gray-300);\n --ae-color-gray-light: var(--ae-gray-200);\n --ae-color-gray-lighter: var(--ae-gray-100);\n --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);\n\n /* Text */\n --ae-color-text-main: var(--ae-dark-700);\n --ae-color-text-muted: var(--ae-gray-600);\n --ae-color-text-disabled: var(--ae-gray-300);\n --ae-color-text-link: var(--ae-blue-500);\n --ae-color-text-link-hover: var(--ae-blue-700);\n\n /* Surfaces */\n --ae-surface-sunken: var(--ae-light-500);\n --ae-surface-base: white;\n --ae-surface-raised: var(--ae-light-500);\n --ae-surface-overlay: white;\n --ae-color-overlay: rgba(0, 0, 0, 0.4);\n\n /* Borders */\n --ae-border-subtle: rgba(0, 0, 0, 0.08);\n --ae-border-default: rgba(0, 0, 0, 0.15);\n --ae-border-hover: rgba(0, 0, 0, 0.25);\n --ae-border-focus: var(--ae-color-primary);\n --ae-border-disabled: rgba(0, 0, 0, 0.06);\n\n /* Focus ring */\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);\n\n /* Subtle intent tokens — light context */\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);\n --ae-color-primary-text-emphasis: var(--ae-blue-700);\n\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);\n --ae-color-success-text-emphasis: var(--ae-green-700);\n\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);\n --ae-color-danger-text-emphasis: var(--ae-red-700);\n\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);\n --ae-color-warning-text-emphasis: var(--ae-yellow-700);\n\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);\n --ae-color-info-text-emphasis: var(--ae-cyan-700);\n\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);\n --ae-color-secondary-text-emphasis: var(--ae-slate-700);\n\n --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */\n --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */\n\n --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */\n --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */\n\n /* Component tokens — light defaults */\n --ae-action-btn-bg: var(--ae-gray-200);\n --ae-action-btn-bg-hover: var(--ae-color-primary);\n --ae-action-btn-color: var(--ae-gray-600);\n --ae-action-btn-color-hover: white;\n\n --ae-clear-btn-bg-hover: var(--ae-color-danger);\n --ae-clear-btn-color-hover: white;\n\n --ae-reset-btn-border-radius: var(--ae-radius-xs);\n --ae-reset-btn-bg: var(--ae-action-btn-bg);\n --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);\n --ae-reset-btn-color: var(--ae-action-btn-color);\n --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);\n --ae-reset-btn-transition: all 0.12s;\n\n --ae-clear-btn-border-radius: var(--ae-radius-xs);\n --ae-clear-btn-bg: var(--ae-action-btn-bg);\n --ae-clear-btn-color: var(--ae-action-btn-color);\n --ae-clear-btn-transition: all 0.12s;\n}\n\n:root,\n:host {\n --ae-size-scale: 1;\n --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */\n --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */\n --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */\n --ae-size-m: var(--ae-size-base); /* 16px */\n --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */\n --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */\n --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */\n --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */\n}\n\n/* Border-radius tokens — shared across all components */\n:root,\n:host {\n /**\n * Unified border-radius hook for all components.\n *\n * Not set by default — each component falls back to its own --ae-radius-*\n * token (e.g. button → sm, card → lg, input → xs).\n *\n * Usage:\n * :root { --ae-border-radius: 0; } // global: all components square\n * :root { --ae-border-radius: 999px; } // global: all components pill\n * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular\n * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar\n *\n * To restore a component to its own default:\n * ae-card { --ae-border-radius: initial; }\n */\n\n --ae-radius-square: 0;\n --ae-radius-xs: 2px;\n --ae-radius-sm: 4px;\n --ae-radius-md: 6px;\n --ae-radius-lg: 8px;\n --ae-radius-xl: 12px;\n --ae-radius-pill: 999px;\n --ae-radius-circle: 50%;\n}\n\n/* Layout tokens — defined on :root so all light DOM elements can use them */\n:root,\n:host {\n --container-max-width: 1280px;\n --container-padding-x: 1.5rem;\n}\n\n.theme-dark,\n:root[theme=\"dark\"],\n:host([theme=\"dark\"]),\n:host-context([theme=\"dark\"]) {\n color-scheme: dark;\n\n /* Hover / active — slightly gentler on dark backgrounds */\n --ae-color-mix-hover: black 8%;\n --ae-color-mix-active: black 16%;\n\n /* Gray UI aliases — darker palette steps for elements on dark background */\n --ae-color-gray-dark: var(--ae-gray-800);\n --ae-color-gray: var(--ae-gray-700);\n --ae-color-gray-light: var(--ae-gray-600);\n --ae-color-gray-lighter: var(--ae-gray-500);\n --ae-color-gray-lightest: var(--ae-gray-400);\n\n /* Secondary — deeper base on dark background */\n --ae-color-secondary: var(--ae-slate-700);\n --ae-color-secondary-text: var(--ae-slate-300);\n\n /* Text */\n --ae-color-text-main: white;\n --ae-color-text-muted: var(--ae-gray-200);\n --ae-color-text-disabled: var(--ae-gray-500);\n --ae-color-text-link: var(--ae-blue-300);\n --ae-color-text-link-hover: var(--ae-blue-200);\n\n /* Surfaces */\n --ae-surface-sunken: var(--ae-gray-900);\n --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);\n --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);\n --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);\n --ae-color-overlay: rgba(0, 0, 0, 0.6);\n\n /* Borders */\n --ae-border-subtle: rgba(255, 255, 255, 0.08);\n --ae-border-default: rgba(255, 255, 255, 0.12);\n --ae-border-hover: rgba(255, 255, 255, 0.20);\n --ae-border-focus: var(--ae-color-primary);\n --ae-border-disabled: rgba(255, 255, 255, 0.06);\n\n /* Focus ring */\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);\n\n /* Subtle intent tokens — dark context (more alpha, lighter text-emphasis) */\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);\n --ae-color-primary-text-emphasis: var(--ae-blue-300);\n\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);\n --ae-color-success-text-emphasis: var(--ae-green-300);\n\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);\n --ae-color-danger-text-emphasis: var(--ae-red-300);\n\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);\n --ae-color-warning-text-emphasis: var(--ae-yellow-300);\n\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);\n --ae-color-info-text-emphasis: var(--ae-cyan-300);\n\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);\n --ae-color-secondary-text-emphasis: var(--ae-slate-300);\n\n --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);\n --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);\n\n --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);\n --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);\n\n /* Component tokens — dark overrides */\n --ae-action-btn-bg: var(--ae-color-gray);\n --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));\n --ae-action-btn-color: var(--ae-gray-400);\n --ae-action-btn-color-hover: var(--ae-cyan-300);\n --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));\n --ae-clear-btn-color-hover: var(--ae-red-300);\n}\n"