aeico-components 0.1.8 → 0.1.10

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 (233) hide show
  1. package/README.md +0 -0
  2. package/dist/alert.cjs +20 -29
  3. package/dist/alert.cjs.map +3 -3
  4. package/dist/alert.js +20 -29
  5. package/dist/alert.js.map +3 -3
  6. package/dist/badge.cjs +19 -28
  7. package/dist/badge.cjs.map +3 -3
  8. package/dist/badge.js +19 -28
  9. package/dist/badge.js.map +3 -3
  10. package/dist/breadcrumb.cjs +22 -33
  11. package/dist/breadcrumb.cjs.map +3 -3
  12. package/dist/breadcrumb.js +22 -33
  13. package/dist/breadcrumb.js.map +3 -3
  14. package/dist/button-group.cjs +19 -28
  15. package/dist/button-group.cjs.map +3 -3
  16. package/dist/button-group.js +19 -28
  17. package/dist/button-group.js.map +3 -3
  18. package/dist/button.cjs +19 -29
  19. package/dist/button.cjs.map +3 -3
  20. package/dist/button.js +19 -29
  21. package/dist/button.js.map +3 -3
  22. package/dist/card.cjs +19 -29
  23. package/dist/card.cjs.map +3 -3
  24. package/dist/card.js +19 -29
  25. package/dist/card.js.map +3 -3
  26. package/dist/checkbox.cjs +21 -31
  27. package/dist/checkbox.cjs.map +3 -3
  28. package/dist/checkbox.js +21 -31
  29. package/dist/checkbox.js.map +3 -3
  30. package/dist/copy-button.cjs +25 -33
  31. package/dist/copy-button.cjs.map +2 -2
  32. package/dist/copy-button.js +25 -33
  33. package/dist/copy-button.js.map +3 -3
  34. package/dist/detail-group.cjs +19 -29
  35. package/dist/detail-group.cjs.map +3 -3
  36. package/dist/detail-group.js +19 -29
  37. package/dist/detail-group.js.map +3 -3
  38. package/dist/detail.cjs +19 -29
  39. package/dist/detail.cjs.map +3 -3
  40. package/dist/detail.js +19 -29
  41. package/dist/detail.js.map +3 -3
  42. package/dist/dialog.cjs +24 -32
  43. package/dist/dialog.cjs.map +2 -2
  44. package/dist/dialog.js +24 -32
  45. package/dist/dialog.js.map +3 -3
  46. package/dist/divider.cjs +20 -30
  47. package/dist/divider.cjs.map +3 -3
  48. package/dist/divider.js +20 -30
  49. package/dist/divider.js.map +3 -3
  50. package/dist/drawer.cjs +24 -32
  51. package/dist/drawer.cjs.map +2 -2
  52. package/dist/drawer.js +24 -32
  53. package/dist/drawer.js.map +3 -3
  54. package/dist/dropdown.cjs +31 -43
  55. package/dist/dropdown.cjs.map +3 -3
  56. package/dist/dropdown.js +31 -43
  57. package/dist/dropdown.js.map +3 -3
  58. package/dist/icon-button.cjs +25 -35
  59. package/dist/icon-button.cjs.map +3 -3
  60. package/dist/icon-button.js +25 -35
  61. package/dist/icon-button.js.map +3 -3
  62. package/dist/icon.cjs +20 -26
  63. package/dist/icon.cjs.map +2 -2
  64. package/dist/icon.js +20 -26
  65. package/dist/icon.js.map +2 -2
  66. package/dist/index.cjs +75 -113
  67. package/dist/index.cjs.map +3 -3
  68. package/dist/index.js +75 -113
  69. package/dist/index.js.map +3 -3
  70. package/dist/menu.cjs +20 -31
  71. package/dist/menu.cjs.map +3 -3
  72. package/dist/menu.js +20 -31
  73. package/dist/menu.js.map +3 -3
  74. package/dist/navbar.cjs +19 -29
  75. package/dist/navbar.cjs.map +3 -3
  76. package/dist/navbar.js +19 -29
  77. package/dist/navbar.js.map +3 -3
  78. package/dist/number-input.cjs +21 -31
  79. package/dist/number-input.cjs.map +3 -3
  80. package/dist/number-input.js +21 -31
  81. package/dist/number-input.js.map +3 -3
  82. package/dist/pagination.cjs +24 -33
  83. package/dist/pagination.cjs.map +2 -2
  84. package/dist/pagination.js +24 -33
  85. package/dist/pagination.js.map +3 -3
  86. package/dist/progress-bar.cjs +19 -29
  87. package/dist/progress-bar.cjs.map +3 -3
  88. package/dist/progress-bar.js +19 -29
  89. package/dist/progress-bar.js.map +3 -3
  90. package/dist/radio-group.cjs +24 -35
  91. package/dist/radio-group.cjs.map +3 -3
  92. package/dist/radio-group.js +24 -35
  93. package/dist/radio-group.js.map +3 -3
  94. package/dist/select.cjs +23 -34
  95. package/dist/select.cjs.map +3 -3
  96. package/dist/select.js +23 -34
  97. package/dist/select.js.map +3 -3
  98. package/dist/slider.cjs +21 -32
  99. package/dist/slider.cjs.map +3 -3
  100. package/dist/slider.js +21 -32
  101. package/dist/slider.js.map +3 -3
  102. package/dist/spinner.cjs +19 -29
  103. package/dist/spinner.cjs.map +3 -3
  104. package/dist/spinner.js +19 -29
  105. package/dist/spinner.js.map +3 -3
  106. package/dist/styles/layout.cjs +1 -1
  107. package/dist/styles/layout.js +1 -1
  108. package/dist/styles/radius.cjs +1 -1
  109. package/dist/styles/radius.js +1 -1
  110. package/dist/styles/variables.cjs +1 -1
  111. package/dist/styles/variables.js +1 -1
  112. package/dist/switch.cjs +26 -35
  113. package/dist/switch.cjs.map +3 -3
  114. package/dist/switch.js +26 -35
  115. package/dist/switch.js.map +3 -3
  116. package/dist/tabs.cjs +21 -30
  117. package/dist/tabs.cjs.map +3 -3
  118. package/dist/tabs.js +21 -30
  119. package/dist/tabs.js.map +3 -3
  120. package/dist/tag.cjs +19 -28
  121. package/dist/tag.cjs.map +3 -3
  122. package/dist/tag.js +19 -28
  123. package/dist/tag.js.map +3 -3
  124. package/dist/text-input.cjs +21 -31
  125. package/dist/text-input.cjs.map +3 -3
  126. package/dist/text-input.js +21 -31
  127. package/dist/text-input.js.map +3 -3
  128. package/dist/textarea.cjs +21 -31
  129. package/dist/textarea.cjs.map +3 -3
  130. package/dist/textarea.js +21 -31
  131. package/dist/textarea.js.map +3 -3
  132. package/dist/tooltip.cjs +19 -28
  133. package/dist/tooltip.cjs.map +3 -3
  134. package/dist/tooltip.js +19 -28
  135. package/dist/tooltip.js.map +3 -3
  136. package/dist/tree.cjs +25 -35
  137. package/dist/tree.cjs.map +3 -3
  138. package/dist/tree.js +25 -35
  139. package/dist/tree.js.map +3 -3
  140. package/dist/types/aeico-component.d.ts +1 -1
  141. package/dist/types/aeico-field.d.ts +1 -1
  142. package/dist/types/breadcrumb/breadcrumb-item.d.ts +0 -1
  143. package/dist/types/breadcrumb/breadcrumb.d.ts +2 -3
  144. package/dist/types/button-group/button-group.d.ts +1 -1
  145. package/dist/types/card/card.d.ts +0 -1
  146. package/dist/types/checkbox/checkbox.d.ts +0 -1
  147. package/dist/types/detail/detail.d.ts +0 -1
  148. package/dist/types/detail-group/detail-group.d.ts +1 -2
  149. package/dist/types/divider/divider.d.ts +0 -1
  150. package/dist/types/dropdown/dropdown-button.d.ts +4 -5
  151. package/dist/types/dropdown/dropdown-item.d.ts +3 -4
  152. package/dist/types/dropdown/dropdown.d.ts +4 -5
  153. package/dist/types/icon/icon.d.ts +0 -1
  154. package/dist/types/icon/registry.d.ts +1 -1
  155. package/dist/types/icon-button/icon-button.d.ts +0 -1
  156. package/dist/types/index.d.ts +4 -4
  157. package/dist/types/menu/menu-item.d.ts +3 -4
  158. package/dist/types/menu/menu.d.ts +3 -4
  159. package/dist/types/navbar/navbar.d.ts +5 -6
  160. package/dist/types/number-input/number-input.d.ts +0 -1
  161. package/dist/types/pagination/pagination.d.ts +0 -1
  162. package/dist/types/progress-bar/progress-bar.d.ts +0 -1
  163. package/dist/types/radio-group/radio-group.d.ts +0 -1
  164. package/dist/types/radio-group/radio.d.ts +6 -7
  165. package/dist/types/select/select-option.d.ts +0 -1
  166. package/dist/types/select/select.d.ts +0 -1
  167. package/dist/types/slider/defines.d.ts +5 -5
  168. package/dist/types/slider/slider.d.ts +0 -1
  169. package/dist/types/spinner/spinner.d.ts +1 -2
  170. package/dist/types/switch/switch.d.ts +0 -1
  171. package/dist/types/text-input/text-input.d.ts +0 -1
  172. package/dist/types/textarea/textarea.d.ts +0 -1
  173. package/dist/types/tree/tree-item.d.ts +1 -2
  174. package/dist/types/tree/tree.d.ts +0 -1
  175. package/package.json +5 -3
  176. package/src/aeico-component.ts +6 -5
  177. package/src/aeico-field.ts +2 -2
  178. package/src/alert/alert.ts +2 -2
  179. package/src/badge/badge.ts +2 -2
  180. package/src/breadcrumb/breadcrumb-item.ts +2 -4
  181. package/src/breadcrumb/breadcrumb.ts +4 -6
  182. package/src/button/button.ts +2 -2
  183. package/src/button-group/button-group.ts +3 -3
  184. package/src/card/card.ts +2 -4
  185. package/src/card/defines.ts +1 -1
  186. package/src/card/index.ts +1 -1
  187. package/src/checkbox/checkbox.ts +2 -4
  188. package/src/copy-button/copy-button.ts +1 -1
  189. package/src/detail/detail.ts +2 -4
  190. package/src/detail-group/detail-group.ts +2 -4
  191. package/src/dialog/dialog.ts +2 -2
  192. package/src/divider/divider.ts +2 -4
  193. package/src/drawer/drawer.ts +2 -2
  194. package/src/dropdown/dropdown-button.ts +6 -8
  195. package/src/dropdown/dropdown-item.ts +5 -7
  196. package/src/dropdown/dropdown.ts +7 -9
  197. package/src/icon/icon.ts +2 -4
  198. package/src/icon/registry.ts +1 -1
  199. package/src/icon-button/icon-button.ts +2 -4
  200. package/src/index.ts +4 -4
  201. package/src/menu/menu-item.ts +5 -7
  202. package/src/menu/menu.ts +4 -6
  203. package/src/navbar/navbar.ts +7 -9
  204. package/src/number-input/number-input.ts +1 -3
  205. package/src/pagination/pagination.ts +1 -3
  206. package/src/progress-bar/progress-bar.ts +1 -2
  207. package/src/radio-group/radio-group.ts +5 -7
  208. package/src/radio-group/radio.ts +8 -10
  209. package/src/select/select-option.ts +2 -4
  210. package/src/select/select.ts +4 -6
  211. package/src/slider/defines.ts +5 -5
  212. package/src/slider/slider.ts +5 -8
  213. package/src/spinner/spinner.ts +2 -4
  214. package/src/styles/components/action-button.css +1 -1
  215. package/src/styles/components/alert.css +1 -1
  216. package/src/styles/components/breadcrumb-item.css +2 -2
  217. package/src/styles/components/button.css +0 -1
  218. package/src/styles/components/divider.css +1 -1
  219. package/src/styles/components/dropdown-item.css +2 -2
  220. package/src/styles/components/dropdown.css +1 -1
  221. package/src/styles/layout.css +14 -14
  222. package/src/styles/radius.css +1 -1
  223. package/src/styles/variables.css +14 -16
  224. package/src/switch/switch.ts +2 -4
  225. package/src/tabs/tab-panel.ts +2 -2
  226. package/src/tabs/tab.ts +2 -2
  227. package/src/tabs/tabs.ts +2 -2
  228. package/src/tag/tag.ts +2 -2
  229. package/src/text-input/text-input.ts +2 -4
  230. package/src/textarea/textarea.ts +1 -3
  231. package/src/tooltip/tooltip.ts +1 -1
  232. package/src/tree/tree-item.ts +3 -5
  233. package/src/tree/tree.ts +2 -4
package/dist/menu.cjs CHANGED
@@ -166,7 +166,7 @@ var require_variables = __commonJS({
166
166
  --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);
167
167
  --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);
168
168
 
169
- /* Gray (neutral \u2014 base #6e6e6e) */
169
+ /* Gray (neutral - base #6e6e6e) */
170
170
  --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);
171
171
  --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);
172
172
  --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);
@@ -177,7 +177,7 @@ var require_variables = __commonJS({
177
177
  --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);
178
178
  --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);
179
179
 
180
- /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */
180
+ /* Slate (blue-gray - base #64748b, used for 'secondary') */
181
181
  --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);
182
182
  --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);
183
183
  --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);
@@ -213,7 +213,7 @@ var require_variables = __commonJS({
213
213
 
214
214
  :root,
215
215
  :host {
216
- /* Hover / active mix (light default \u2014 overridden in \xA7 6 dark) */
216
+ /* Hover / active mix (light default - overridden in \xA7 6 dark) */
217
217
  --ae-color-mix-hover: black 10%;
218
218
  --ae-color-mix-active: black 20%;
219
219
 
@@ -247,7 +247,7 @@ var require_variables = __commonJS({
247
247
  --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));
248
248
  --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));
249
249
 
250
- /* Secondary (Slate) \u2014 base differs per theme, overridden in \xA7 6 dark */
250
+ /* Secondary (Slate) - base differs per theme, overridden in \xA7 6 dark */
251
251
  --ae-color-secondary: var(--ae-slate-500);
252
252
  --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));
253
253
  --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));
@@ -263,7 +263,7 @@ var require_variables = __commonJS({
263
263
  :host {
264
264
  color-scheme: light;
265
265
 
266
- /* Gray UI aliases \u2014 lighter palette steps for elements on white background */
266
+ /* Gray UI aliases - lighter palette steps for elements on white background */
267
267
  --ae-color-gray-dark: var(--ae-gray-400);
268
268
  --ae-color-gray: var(--ae-gray-300);
269
269
  --ae-color-gray-light: var(--ae-gray-200);
@@ -295,7 +295,7 @@ var require_variables = __commonJS({
295
295
  --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);
296
296
  --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);
297
297
 
298
- /* Subtle intent tokens \u2014 light context */
298
+ /* Subtle intent tokens - light context */
299
299
  --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);
300
300
  --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);
301
301
  --ae-color-primary-text-emphasis: var(--ae-blue-700);
@@ -326,7 +326,7 @@ var require_variables = __commonJS({
326
326
  --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */
327
327
  --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */
328
328
 
329
- /* Component tokens \u2014 light defaults */
329
+ /* Component tokens - light defaults */
330
330
  --ae-action-btn-bg: var(--ae-gray-200);
331
331
  --ae-action-btn-bg-hover: var(--ae-color-primary);
332
332
  --ae-action-btn-color: var(--ae-gray-600);
@@ -361,14 +361,12 @@ var require_variables = __commonJS({
361
361
  --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */
362
362
  }
363
363
 
364
- /* Border-radius tokens \u2014 shared across all components */
364
+ /* Border-radius tokens - shared across all components */
365
365
  :root,
366
366
  :host {
367
367
  /**
368
368
  * Unified border-radius hook for all components.
369
369
  *
370
- * Not set by default \u2014 each component falls back to its own --ae-radius-*
371
- * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).
372
370
  *
373
371
  * Usage:
374
372
  * :root { --ae-border-radius: 0; } // global: all components square
@@ -390,7 +388,7 @@ var require_variables = __commonJS({
390
388
  --ae-radius-circle: 50%;
391
389
  }
392
390
 
393
- /* Layout tokens \u2014 defined on :root so all light DOM elements can use them */
391
+ /* Layout tokens - defined on :root so all light DOM elements can use them */
394
392
  :root,
395
393
  :host {
396
394
  --container-max-width: 1280px;
@@ -403,18 +401,18 @@ var require_variables = __commonJS({
403
401
  :host-context([theme="dark"]) {
404
402
  color-scheme: dark;
405
403
 
406
- /* Hover / active \u2014 slightly gentler on dark backgrounds */
404
+ /* Hover / active - slightly gentler on dark backgrounds */
407
405
  --ae-color-mix-hover: black 8%;
408
406
  --ae-color-mix-active: black 16%;
409
407
 
410
- /* Gray UI aliases \u2014 darker palette steps for elements on dark background */
408
+ /* Gray UI aliases - darker palette steps for elements on dark background */
411
409
  --ae-color-gray-dark: var(--ae-gray-800);
412
410
  --ae-color-gray: var(--ae-gray-700);
413
411
  --ae-color-gray-light: var(--ae-gray-600);
414
412
  --ae-color-gray-lighter: var(--ae-gray-500);
415
413
  --ae-color-gray-lightest: var(--ae-gray-400);
416
414
 
417
- /* Secondary \u2014 deeper base on dark background */
415
+ /* Secondary - deeper base on dark background */
418
416
  --ae-color-secondary: var(--ae-slate-700);
419
417
  --ae-color-secondary-text: var(--ae-slate-300);
420
418
 
@@ -443,7 +441,7 @@ var require_variables = __commonJS({
443
441
  --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);
444
442
  --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);
445
443
 
446
- /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */
444
+ /* Subtle intent tokens - dark context (more alpha, lighter text-emphasis) */
447
445
  --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);
448
446
  --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);
449
447
  --ae-color-primary-text-emphasis: var(--ae-blue-300);
@@ -474,7 +472,7 @@ var require_variables = __commonJS({
474
472
  --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);
475
473
  --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);
476
474
 
477
- /* Component tokens \u2014 dark overrides */
475
+ /* Component tokens - dark overrides */
478
476
  --ae-action-btn-bg: var(--ae-color-gray);
479
477
  --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));
480
478
  --ae-action-btn-color: var(--ae-gray-400);
@@ -503,19 +501,12 @@ module.exports = __toCommonJS(menu_exports);
503
501
 
504
502
  // src/aeico-component.ts
505
503
  var import_aeico = require("aeico");
506
-
507
- // src/utils.ts
508
- function toKebab(str) {
509
- const cleaned = str.replace(/^[_\d]+/, "");
510
- return cleaned.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
511
- }
512
-
513
- // src/aeico-component.ts
514
504
  var TAG_NAME_PREFIX = "ae";
515
505
  var AeicoComponent = class extends import_aeico.AeicoElement {
516
- static register(name) {
517
- const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;
518
- super.register(tagName);
506
+ static define(name) {
507
+ const prefix = `${TAG_NAME_PREFIX}-`;
508
+ const tagName = name.startsWith(prefix) ? name : `${prefix}${name}`;
509
+ super.define(tagName);
519
510
  }
520
511
  };
521
512
  var aeico_component_default = AeicoComponent;
@@ -774,9 +765,8 @@ __decorateElement(_init, 4, "selected", _selected_dec, MenuItem, _selected);
774
765
  __decorateElement(_init, 4, "open", _open_dec, MenuItem, _open);
775
766
  __decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, MenuItem, _iconPlacement);
776
767
  __decoratorMetadata(_init, MenuItem);
777
- __publicField(MenuItem, "tagName", "menu-item");
778
768
  __publicField(MenuItem, "styles", [import_variables.default, import_menu_item.default]);
779
- MenuItem.register();
769
+ MenuItem.define("menu-item");
780
770
  var menu_item_default = MenuItem;
781
771
 
782
772
  // src/menu/menu.ts
@@ -831,9 +821,8 @@ __decorateElement(_init2, 4, "trigger", _trigger_dec, Menu, _trigger);
831
821
  __decorateElement(_init2, 4, "selectedKey", _selectedKey_dec, Menu, _selectedKey);
832
822
  __decorateElement(_init2, 4, "wrapText", _wrapText_dec, Menu, _wrapText);
833
823
  __decoratorMetadata(_init2, Menu);
834
- __publicField(Menu, "tagName", "menu");
835
824
  __publicField(Menu, "styles", [import_variables2.default, import_menu.default]);
836
- Menu.register();
825
+ Menu.define("menu");
837
826
  var menu_default = Menu;
838
827
  // Annotate the CommonJS export names for ESM import in node:
839
828
  0 && (module.exports = {
package/dist/menu.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/menu.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/menu-item.css", "../src/menu/index.ts", "../src/aeico-component.ts", "../src/utils.ts", "../src/menu/menu.ts", "../src/menu/menu-item.ts"],
4
- "sourcesContent": ["module.exports = \":host {\\n display: block;\\n}\\n\\n.menu-list {\\n display: flex;\\n flex-direction: column;\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n gap: 0;\\n}\\n\\n.menu-list--horizontal {\\n flex-direction: row;\\n align-items: stretch;\\n}\\n\"", "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 \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\"", "module.exports = \":host {\\n display: block;\\n position: relative;\\n\\n --menu-item-height: 2.5rem;\\n --menu-item-padding-x: 0.875rem;\\n --menu-item-font-size: 0.9375rem;\\n --menu-item-color: inherit;\\n --menu-item-color-disabled: var(--ae-color-text-disabled);\\n --menu-item-bg: transparent;\\n --menu-item-bg-hover: var(--ae-surface-raised, rgba(0, 0, 0, 0.05));\\n --menu-item-active-color: var(--ae-color-primary, var(--ae-blue-500));\\n --menu-item-active-border-color: var(--ae-color-primary, var(--ae-blue-500));\\n\\n --submenu-z-index: 1001;\\n --submenu-bg: var(--ae-surface-overlay, #fff);\\n --submenu-border: 1px solid var(--ae-border-default);\\n --submenu-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\\n --submenu-min-width: 10rem;\\n --submenu-padding: 0.25rem 0;\\n}\\n\\n.item {\\n display: inline-flex;\\n align-items: center;\\n gap: 0.4rem;\\n width: 100%;\\n height: var(--menu-item-height);\\n padding: 0 var(--menu-item-padding-x);\\n font-size: var(--menu-item-font-size);\\n font-family: inherit;\\n color: var(--menu-item-color);\\n background: var(--menu-item-bg);\\n border: none;\\n border-bottom: 2px solid transparent;\\n text-align: left;\\n text-decoration: none;\\n cursor: pointer;\\n user-select: none;\\n white-space: nowrap;\\n box-sizing: border-box;\\n outline: none;\\n transition: background 0.1s, color 0.1s, border-color 0.1s;\\n -webkit-appearance: none;\\n appearance: none;\\n}\\n\\n.item--leaf-in-panel {\\n height: auto;\\n padding: 0.5rem var(--menu-item-padding-x);\\n border-bottom: none;\\n}\\n\\n.item--wrap {\\n white-space: normal;\\n height: auto;\\n min-height: var(--menu-item-height);\\n}\\n\\n.item:hover:not(:disabled) {\\n background: var(--menu-item-bg-hover);\\n}\\n\\n.item:focus-visible {\\n background: var(--menu-item-bg-hover);\\n outline: 2px solid var(--menu-item-active-color);\\n outline-offset: -2px;\\n}\\n\\n:host([disabled]) .item,\\n.item:disabled {\\n color: var(--menu-item-color-disabled);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n:host([selected]) .item {\\n color: var(--menu-item-active-color);\\n border-bottom-color: var(--menu-item-active-border-color);\\n}\\n\\n.item-arrow {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n flex-shrink: 0;\\n}\\n\\n.item-arrow--right {\\n border-top: 0.3em solid transparent;\\n border-bottom: 0.3em solid transparent;\\n border-left: 0.3em solid;\\n}\\n\\n.item-arrow--bottom {\\n border-left: 0.3em solid transparent;\\n border-right: 0.3em solid transparent;\\n border-top: 0.3em solid;\\n}\\n\\n.item--open .item-arrow--right {\\n transform: rotate(90deg);\\n}\\n\\nslot[name=\\\"expand\\\"],\\nslot[name=\\\"collapse\\\"] {\\n display: inline-flex;\\n align-items: center;\\n margin-inline-start: auto;\\n flex-shrink: 0;\\n}\\n\\nslot[name=\\\"collapse\\\"] {\\n display: none;\\n}\\n\\n.item--open slot[name=\\\"expand\\\"] {\\n display: none;\\n}\\n\\n.item--open slot[name=\\\"collapse\\\"] {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\nslot[name=\\\"collapse\\\"] .item-arrow--right {\\n transform: rotate(90deg);\\n}\\n\\n:host([icon-placement=\\\"start\\\"]) slot[name=\\\"expand\\\"],\\n:host([icon-placement=\\\"start\\\"]) slot[name=\\\"collapse\\\"] {\\n order: -1;\\n margin-inline-start: 0;\\n}\\n\\n.submenu-panel {\\n display: none;\\n position: absolute;\\n z-index: var(--submenu-z-index);\\n background: var(--submenu-bg);\\n border: var(--submenu-border);\\n border-radius: var(--ae-border-radius, var(--ae-radius-md));\\n box-shadow: var(--submenu-shadow);\\n min-width: var(--submenu-min-width);\\n padding: var(--submenu-padding);\\n box-sizing: border-box;\\n max-width: calc(100vw - 16px);\\n}\\n\\n.submenu-panel.open {\\n display: block;\\n}\\n\\n.submenu-panel.placement-bottom {\\n top: 100%;\\n left: 0;\\n margin-top: 2px;\\n}\\n\\n.submenu-panel.placement-right {\\n top: 0;\\n left: 100%;\\n margin-left: 2px;\\n}\\n\\n.submenu-inline {\\n display: none;\\n padding-left: 1rem;\\n}\\n\\n.submenu-inline.open {\\n display: block;\\n}\\n\"", "export { default as Menu } from './menu';\nexport { default as MenuItem } from './menu-item';\nexport type { MenuProps } from './menu';\nexport type { MenuItemProps } from './menu-item';\nexport type { MenuMode, MenuOrientation, MenuTrigger, MenuSelectDetail } from './defines';\n", "\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 style from '../styles/components/menu.css';\nimport variables from '../styles/variables.css';\nimport type { MenuMode, MenuOrientation, MenuSelectDetail, MenuTrigger } from './defines';\n// Ensure ae-menu-item is registered when this module is used\nimport './menu-item';\n\n/**\n * Menu navigation component. Renders a horizontal or vertical menu with\n * optional two-level flyout or inline (accordion) submenus.\n *\n * Two modes:\n * - `flyout` (default) \u2014 submenus open as floating panels (like a nav bar or\n * context menu).\n * - `inline` \u2014 submenus expand in-place (accordion-style sidebar).\n *\n * Emits:\n * - `select` \u2014 `{ detail: { key, label, keyPath } }` when a leaf item is clicked.\n */\nclass Menu extends AeicoComponent {\n static tagName = 'menu';\n\n protected static styles = [variables, style];\n\n @prop({ type: String })\n accessor mode: MenuMode = 'flyout';\n\n @prop({ type: String })\n accessor orientation: MenuOrientation = 'horizontal';\n\n @prop({ type: String })\n accessor trigger: MenuTrigger = 'click';\n\n @prop({ type: String })\n accessor selectedKey: string | undefined;\n\n @prop({ type: Boolean })\n accessor wrapText: boolean = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('_menu-item-select', this._handleItemSelect as EventListener);\n }\n\n private _handleItemSelect = (e: CustomEvent<MenuSelectDetail>): void => {\n const { key, label, keyPath } = e.detail;\n // Update visual selection on all leaf items\n this.querySelectorAll('ae-menu-item').forEach((el) => {\n const item = el;\n item.selected = item.key === key && !item.label; // only leaf items\n });\n this.selectedKey = key;\n this.emit('select', { detail: { key, label, keyPath } });\n };\n\n protected render() {\n const isHorizontal = this.orientation === 'horizontal';\n return html(({ div, slot }) => {\n div(\n {\n className: { 'menu-list': true, 'menu-list--horizontal': isHorizontal },\n role: isHorizontal ? 'menubar' : 'menu',\n 'aria-orientation': this.orientation,\n },\n () => {\n slot();\n },\n );\n });\n }\n}\n\nMenu.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-menu': Menu;\n }\n}\n\nexport default Menu;\nexport type MenuProps = InferProps<typeof Menu>;\n", "import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport style from '../styles/components/menu-item.css';\nimport variables from '../styles/variables.css';\nimport type {\n MenuMode,\n MenuOrientation,\n MenuTrigger,\n ParentMenuLike,\n MenuIconPlacement,\n} from './defines';\n\n/**\n * Menu item \u2014 used as a direct child of `<ae-menu>` or nested inside another\n * `<ae-menu-item>` to create a two-level submenu.\n *\n * - **Leaf item**: omit `label`; slot contains the item text.\n * - **Parent item**: set `label` to the trigger text; slot children are\n * `<ae-menu-item>` elements that appear in the submenu panel/section.\n *\n * **Slots (parent items only)**\n * - `expand` \u2014 icon shown when the submenu is closed (default: CSS triangle).\n * - `collapse` \u2014 icon shown when the submenu is open (default: rotated CSS triangle).\n *\n * @example\n * ```html\n * <ae-menu-item label=\"Settings\" icon-placement=\"start\">\n * <ae-icon name=\"chevron-right\" slot=\"expand\"></ae-icon>\n * <ae-icon name=\"chevron-down\" slot=\"collapse\"></ae-icon>\n * <ae-menu-item key=\"profile\">Profile</ae-menu-item>\n * </ae-menu-item>\n * ```\n */\nclass MenuItem extends AeicoComponent {\n static tagName = 'menu-item';\n\n protected static styles = [variables, style];\n\n @prop({ type: String })\n accessor key: string | undefined;\n\n @prop({ type: String })\n accessor label: string | undefined;\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor href: string | undefined;\n\n @prop({ type: Boolean })\n accessor selected: boolean = false;\n\n @prop({ type: Boolean })\n accessor open: boolean = false;\n\n @prop({ type: String })\n accessor iconPlacement: MenuIconPlacement = 'end';\n\n private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n private _closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n\n // data-depth lets CSS apply depth-specific styles without JS\n const depth = this.parentElement?.closest('ae-menu-item') ? 1 : 0;\n this.dataset.depth = String(depth);\n\n // Hover listeners \u2014 check mode/trigger at runtime\n this.listen('mouseenter', this._handleMouseEnter);\n this.listen('mouseleave', this._handleMouseLeave);\n\n // Outside-click to close flyout panel (not applicable in inline mode)\n this._outsideClickHandler = (e: MouseEvent) => {\n if (!this.open) return;\n if (this._mode === 'inline') return;\n if (!e.composedPath().includes(this)) this.open = false;\n };\n\n document.addEventListener('click', this._outsideClickHandler);\n\n // Close own submenu when a leaf inside it is selected (flyout)\n this.listen('_menu-item-select', this._handleChildSelect as EventListener);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._outsideClickHandler) {\n document.removeEventListener('click', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n if (this._closeTimer !== null) {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n }\n }\n\n private get _parentMenu(): ParentMenuLike | null {\n return this.closest<ParentMenuLike>('ae-menu');\n }\n\n private get _mode(): MenuMode {\n return this._parentMenu?.mode ?? 'flyout';\n }\n\n private get _orientation(): MenuOrientation {\n return this._parentMenu?.orientation ?? 'horizontal';\n }\n\n private get _trigger(): MenuTrigger {\n return this._parentMenu?.trigger ?? 'click';\n }\n\n private get _wrapText(): boolean {\n return this._parentMenu?.wrapText ?? false;\n }\n\n private get _isParent(): boolean {\n return this.label != null && this.label !== '';\n }\n\n /** Compute flyout panel placement based on depth and parent orientation. */\n private get _panelPlacement(): 'bottom' | 'right' {\n const isNested = !!this.parentElement?.closest('ae-menu-item');\n if (!isNested && this._orientation === 'horizontal') return 'bottom';\n return 'right';\n }\n\n private _isHoverTrigger(): boolean {\n return this._isParent && this._mode === 'flyout' && this._trigger === 'hover';\n }\n\n private _handleMouseEnter = (): void => {\n if (!this._isHoverTrigger()) return;\n if (this._closeTimer !== null) {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n }\n this.open = true;\n };\n\n private _handleMouseLeave = (): void => {\n if (!this._isHoverTrigger()) return;\n this._closeTimer = setTimeout(() => {\n this.open = false;\n this._closeTimer = null;\n }, 150);\n };\n\n private _handleParentClick = (): void => {\n if (this.disabled) return;\n const mode = this._mode;\n const trigger = this._trigger;\n // In hover mode, click should still toggle (accessibility)\n if (mode === 'flyout' && trigger === 'hover') {\n this.open = !this.open;\n return;\n }\n this.open = !this.open;\n };\n\n private _handleLeafClick = (e: Event): void => {\n if (this.disabled) {\n e.preventDefault();\n return;\n }\n const path = this._buildKeyPath();\n const label = this.textContent?.trim() ?? '';\n this.dispatchEvent(\n new CustomEvent('_menu-item-select', {\n bubbles: true,\n composed: true,\n detail: { key: this.key ?? '', label, keyPath: path },\n }),\n );\n };\n\n private _handleChildSelect = (): void => {\n // Close flyout panel after a child leaf is selected\n if (this._mode === 'flyout') {\n this.open = false;\n }\n };\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape' && this.open) {\n e.stopPropagation();\n this.open = false;\n }\n };\n\n private _buildKeyPath(): string[] {\n const path: string[] = [];\n if (this.key) path.unshift(this.key);\n let el: Element | null = this.parentElement;\n while (el) {\n const tag = el.tagName.toLowerCase();\n if (tag === 'ae-menu-item') {\n const k = (el as MenuItem).key;\n if (k) path.unshift(k);\n } else if (tag === 'ae-menu') {\n break;\n }\n el = el.parentElement;\n }\n return path;\n }\n\n protected render() {\n const mode = this._mode;\n const panelPlacement = this._panelPlacement;\n const isParent = this._isParent;\n const isInline = mode === 'inline';\n // Arrow direction: inline always shows \u25BA (rotates to \u25BC on open)\n // flyout-bottom shows \u25BC; flyout-right shows \u25BA\n const arrowDir = !isInline && panelPlacement === 'bottom' ? 'bottom' : 'right';\n const wrapText = this._wrapText;\n // Leaf items inside a submenu panel (depth > 0) need different padding\n const isNested = !!this.parentElement?.closest('ae-menu-item');\n\n return html(({ div, button, a, span, slot }) => {\n if (isParent) {\n div({ className: 'item-wrapper' }, () => {\n button(\n {\n type: 'button',\n className: {\n item: true,\n 'item--parent': true,\n 'item--open': this.open,\n 'item--wrap': wrapText,\n },\n disabled: this.disabled,\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(this.open),\n '@click': this._handleParentClick,\n '@keydown': this._handleKeydown,\n },\n () => {\n span({ text: this.label });\n slot({ name: 'expand' }, () => {\n span({ className: `item-arrow item-arrow--${arrowDir}`, 'aria-hidden': 'true' });\n });\n slot({ name: 'collapse' }, () => {\n span({ className: `item-arrow item-arrow--${arrowDir}`, 'aria-hidden': 'true' });\n });\n },\n );\n\n if (isInline) {\n div(\n {\n className: { 'submenu-inline': true, open: this.open },\n role: 'menu',\n },\n () => {\n slot();\n },\n );\n } else {\n div(\n {\n className: {\n 'submenu-panel': true,\n [`placement-${panelPlacement}`]: true,\n open: this.open,\n },\n role: 'menu',\n },\n () => {\n slot();\n },\n );\n }\n });\n } else {\n // Leaf item\n const sharedProps = {\n className: { item: true, 'item--leaf-in-panel': isNested, 'item--wrap': wrapText },\n role: 'menuitem',\n '@click': this._handleLeafClick,\n '@keydown': this._handleKeydown,\n };\n\n if (this.href) {\n a(\n {\n ...sharedProps,\n href: this.disabled ? undefined : this.href,\n 'aria-disabled': this.disabled ? 'true' : undefined,\n },\n () => {\n slot();\n },\n );\n } else {\n button(\n {\n ...sharedProps,\n type: 'button',\n disabled: this.disabled,\n },\n () => {\n slot();\n },\n );\n }\n }\n });\n }\n}\n\nMenuItem.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-menu-item': MenuItem;\n }\n}\n\nexport default MenuItem;\nexport type MenuItemProps = InferProps<typeof MenuItem>;\nexport type { MenuIconPlacement };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,kGAAAA,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA,4FAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
3
+ "sources": ["css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/menu.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/menu-item.css", "../src/menu/index.ts", "../src/aeico-component.ts", "../src/menu/menu.ts", "../src/menu/menu-item.ts"],
4
+ "sourcesContent": ["module.exports = \":host {\\n display: block;\\n}\\n\\n.menu-list {\\n display: flex;\\n flex-direction: column;\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n gap: 0;\\n}\\n\\n.menu-list--horizontal {\\n flex-direction: row;\\n align-items: stretch;\\n}\\n\"", "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 \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) - 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 - 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 *\\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\"", "module.exports = \":host {\\n display: block;\\n position: relative;\\n\\n --menu-item-height: 2.5rem;\\n --menu-item-padding-x: 0.875rem;\\n --menu-item-font-size: 0.9375rem;\\n --menu-item-color: inherit;\\n --menu-item-color-disabled: var(--ae-color-text-disabled);\\n --menu-item-bg: transparent;\\n --menu-item-bg-hover: var(--ae-surface-raised, rgba(0, 0, 0, 0.05));\\n --menu-item-active-color: var(--ae-color-primary, var(--ae-blue-500));\\n --menu-item-active-border-color: var(--ae-color-primary, var(--ae-blue-500));\\n\\n --submenu-z-index: 1001;\\n --submenu-bg: var(--ae-surface-overlay, #fff);\\n --submenu-border: 1px solid var(--ae-border-default);\\n --submenu-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\\n --submenu-min-width: 10rem;\\n --submenu-padding: 0.25rem 0;\\n}\\n\\n.item {\\n display: inline-flex;\\n align-items: center;\\n gap: 0.4rem;\\n width: 100%;\\n height: var(--menu-item-height);\\n padding: 0 var(--menu-item-padding-x);\\n font-size: var(--menu-item-font-size);\\n font-family: inherit;\\n color: var(--menu-item-color);\\n background: var(--menu-item-bg);\\n border: none;\\n border-bottom: 2px solid transparent;\\n text-align: left;\\n text-decoration: none;\\n cursor: pointer;\\n user-select: none;\\n white-space: nowrap;\\n box-sizing: border-box;\\n outline: none;\\n transition: background 0.1s, color 0.1s, border-color 0.1s;\\n -webkit-appearance: none;\\n appearance: none;\\n}\\n\\n.item--leaf-in-panel {\\n height: auto;\\n padding: 0.5rem var(--menu-item-padding-x);\\n border-bottom: none;\\n}\\n\\n.item--wrap {\\n white-space: normal;\\n height: auto;\\n min-height: var(--menu-item-height);\\n}\\n\\n.item:hover:not(:disabled) {\\n background: var(--menu-item-bg-hover);\\n}\\n\\n.item:focus-visible {\\n background: var(--menu-item-bg-hover);\\n outline: 2px solid var(--menu-item-active-color);\\n outline-offset: -2px;\\n}\\n\\n:host([disabled]) .item,\\n.item:disabled {\\n color: var(--menu-item-color-disabled);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n:host([selected]) .item {\\n color: var(--menu-item-active-color);\\n border-bottom-color: var(--menu-item-active-border-color);\\n}\\n\\n.item-arrow {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n flex-shrink: 0;\\n}\\n\\n.item-arrow--right {\\n border-top: 0.3em solid transparent;\\n border-bottom: 0.3em solid transparent;\\n border-left: 0.3em solid;\\n}\\n\\n.item-arrow--bottom {\\n border-left: 0.3em solid transparent;\\n border-right: 0.3em solid transparent;\\n border-top: 0.3em solid;\\n}\\n\\n.item--open .item-arrow--right {\\n transform: rotate(90deg);\\n}\\n\\nslot[name=\\\"expand\\\"],\\nslot[name=\\\"collapse\\\"] {\\n display: inline-flex;\\n align-items: center;\\n margin-inline-start: auto;\\n flex-shrink: 0;\\n}\\n\\nslot[name=\\\"collapse\\\"] {\\n display: none;\\n}\\n\\n.item--open slot[name=\\\"expand\\\"] {\\n display: none;\\n}\\n\\n.item--open slot[name=\\\"collapse\\\"] {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\nslot[name=\\\"collapse\\\"] .item-arrow--right {\\n transform: rotate(90deg);\\n}\\n\\n:host([icon-placement=\\\"start\\\"]) slot[name=\\\"expand\\\"],\\n:host([icon-placement=\\\"start\\\"]) slot[name=\\\"collapse\\\"] {\\n order: -1;\\n margin-inline-start: 0;\\n}\\n\\n.submenu-panel {\\n display: none;\\n position: absolute;\\n z-index: var(--submenu-z-index);\\n background: var(--submenu-bg);\\n border: var(--submenu-border);\\n border-radius: var(--ae-border-radius, var(--ae-radius-md));\\n box-shadow: var(--submenu-shadow);\\n min-width: var(--submenu-min-width);\\n padding: var(--submenu-padding);\\n box-sizing: border-box;\\n max-width: calc(100vw - 16px);\\n}\\n\\n.submenu-panel.open {\\n display: block;\\n}\\n\\n.submenu-panel.placement-bottom {\\n top: 100%;\\n left: 0;\\n margin-top: 2px;\\n}\\n\\n.submenu-panel.placement-right {\\n top: 0;\\n left: 100%;\\n margin-left: 2px;\\n}\\n\\n.submenu-inline {\\n display: none;\\n padding-left: 1rem;\\n}\\n\\n.submenu-inline.open {\\n display: block;\\n}\\n\"", "export { default as Menu } from './menu';\nexport { default as MenuItem } from './menu-item';\nexport type { MenuProps } from './menu';\nexport type { MenuItemProps } from './menu-item';\nexport type { MenuMode, MenuOrientation, MenuTrigger, MenuSelectDetail } from './defines';\n", "import { AeicoElement } from 'aeico';\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 define(name: string) {\n const prefix = `${TAG_NAME_PREFIX}-`;\n\n const tagName = name.startsWith(prefix) ? name : `${prefix}${name}`;\n\n super.define(tagName);\n }\n}\n\nexport default AeicoComponent;\n", "import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport style from '../styles/components/menu.css';\nimport variables from '../styles/variables.css';\nimport type { MenuMode, MenuOrientation, MenuSelectDetail, MenuTrigger } from './defines';\n// Ensure ae-menu-item is registered when this module is used\nimport './menu-item';\n\n/**\n * Menu navigation component. Renders a horizontal or vertical menu with\n * optional two-level flyout or inline (accordion) submenus.\n *\n * Two modes:\n * - `flyout` (default) - submenus open as floating panels (like a nav bar or\n * context menu).\n * - `inline` - submenus expand in-place (accordion-style sidebar).\n *\n * Emits:\n * - `select` - `{ detail: { key, label, keyPath } }` when a leaf item is clicked.\n */\nclass Menu extends AeicoComponent {\n protected static styles = [variables, style];\n\n @prop({ type: String })\n accessor mode: MenuMode = 'flyout';\n\n @prop({ type: String })\n accessor orientation: MenuOrientation = 'horizontal';\n\n @prop({ type: String })\n accessor trigger: MenuTrigger = 'click';\n\n @prop({ type: String })\n accessor selectedKey: string | undefined;\n\n @prop({ type: Boolean })\n accessor wrapText: boolean = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('_menu-item-select', this._handleItemSelect as EventListener);\n }\n\n private _handleItemSelect = (e: CustomEvent<MenuSelectDetail>): void => {\n const { key, label, keyPath } = e.detail;\n // Update visual selection on all leaf items\n this.querySelectorAll('ae-menu-item').forEach((el) => {\n const item = el;\n item.selected = item.key === key && !item.label; // only leaf items\n });\n this.selectedKey = key;\n this.emit('select', { detail: { key, label, keyPath } });\n };\n\n protected render() {\n const isHorizontal = this.orientation === 'horizontal';\n return html(({ div, slot }) => {\n div(\n {\n className: { 'menu-list': true, 'menu-list--horizontal': isHorizontal },\n role: isHorizontal ? 'menubar' : 'menu',\n 'aria-orientation': this.orientation,\n },\n () => {\n slot();\n },\n );\n });\n }\n}\n\nMenu.define('menu');\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-menu': Menu;\n }\n}\n\nexport default Menu;\nexport type MenuProps = InferProps<typeof Menu>;\n", "import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport style from '../styles/components/menu-item.css';\nimport variables from '../styles/variables.css';\nimport type {\n MenuMode,\n MenuOrientation,\n MenuTrigger,\n ParentMenuLike,\n MenuIconPlacement,\n} from './defines';\n\n/**\n * Menu item - used as a direct child of `<ae-menu>` or nested inside another\n * `<ae-menu-item>` to create a two-level submenu.\n *\n * - **Leaf item**: omit `label`; slot contains the item text.\n * - **Parent item**: set `label` to the trigger text; slot children are\n * `<ae-menu-item>` elements that appear in the submenu panel/section.\n *\n * **Slots (parent items only)**\n * - `expand` - icon shown when the submenu is closed (default: CSS triangle).\n * - `collapse` - icon shown when the submenu is open (default: rotated CSS triangle).\n *\n * @example\n * ```html\n * <ae-menu-item label=\"Settings\" icon-placement=\"start\">\n * <ae-icon name=\"chevron-right\" slot=\"expand\"></ae-icon>\n * <ae-icon name=\"chevron-down\" slot=\"collapse\"></ae-icon>\n * <ae-menu-item key=\"profile\">Profile</ae-menu-item>\n * </ae-menu-item>\n * ```\n */\nclass MenuItem extends AeicoComponent {\n protected static styles = [variables, style];\n\n @prop({ type: String })\n accessor key: string | undefined;\n\n @prop({ type: String })\n accessor label: string | undefined;\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor href: string | undefined;\n\n @prop({ type: Boolean })\n accessor selected: boolean = false;\n\n @prop({ type: Boolean })\n accessor open: boolean = false;\n\n @prop({ type: String })\n accessor iconPlacement: MenuIconPlacement = 'end';\n\n private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n private _closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n\n // data-depth lets CSS apply depth-specific styles without JS\n const depth = this.parentElement?.closest('ae-menu-item') ? 1 : 0;\n this.dataset.depth = String(depth);\n\n // Hover listeners - check mode/trigger at runtime\n this.listen('mouseenter', this._handleMouseEnter);\n this.listen('mouseleave', this._handleMouseLeave);\n\n // Outside-click to close flyout panel (not applicable in inline mode)\n this._outsideClickHandler = (e: MouseEvent) => {\n if (!this.open) return;\n if (this._mode === 'inline') return;\n if (!e.composedPath().includes(this)) this.open = false;\n };\n\n document.addEventListener('click', this._outsideClickHandler);\n\n // Close own submenu when a leaf inside it is selected (flyout)\n this.listen('_menu-item-select', this._handleChildSelect as EventListener);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._outsideClickHandler) {\n document.removeEventListener('click', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n if (this._closeTimer !== null) {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n }\n }\n\n private get _parentMenu(): ParentMenuLike | null {\n return this.closest<ParentMenuLike>('ae-menu');\n }\n\n private get _mode(): MenuMode {\n return this._parentMenu?.mode ?? 'flyout';\n }\n\n private get _orientation(): MenuOrientation {\n return this._parentMenu?.orientation ?? 'horizontal';\n }\n\n private get _trigger(): MenuTrigger {\n return this._parentMenu?.trigger ?? 'click';\n }\n\n private get _wrapText(): boolean {\n return this._parentMenu?.wrapText ?? false;\n }\n\n private get _isParent(): boolean {\n return this.label != null && this.label !== '';\n }\n\n /** Compute flyout panel placement based on depth and parent orientation. */\n private get _panelPlacement(): 'bottom' | 'right' {\n const isNested = !!this.parentElement?.closest('ae-menu-item');\n if (!isNested && this._orientation === 'horizontal') return 'bottom';\n return 'right';\n }\n\n private _isHoverTrigger(): boolean {\n return this._isParent && this._mode === 'flyout' && this._trigger === 'hover';\n }\n\n private _handleMouseEnter = (): void => {\n if (!this._isHoverTrigger()) return;\n if (this._closeTimer !== null) {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n }\n this.open = true;\n };\n\n private _handleMouseLeave = (): void => {\n if (!this._isHoverTrigger()) return;\n this._closeTimer = setTimeout(() => {\n this.open = false;\n this._closeTimer = null;\n }, 150);\n };\n\n private _handleParentClick = (): void => {\n if (this.disabled) return;\n const mode = this._mode;\n const trigger = this._trigger;\n // In hover mode, click should still toggle (accessibility)\n if (mode === 'flyout' && trigger === 'hover') {\n this.open = !this.open;\n return;\n }\n this.open = !this.open;\n };\n\n private _handleLeafClick = (e: Event): void => {\n if (this.disabled) {\n e.preventDefault();\n return;\n }\n const path = this._buildKeyPath();\n const label = this.textContent?.trim() ?? '';\n this.dispatchEvent(\n new CustomEvent('_menu-item-select', {\n bubbles: true,\n composed: true,\n detail: { key: this.key ?? '', label, keyPath: path },\n }),\n );\n };\n\n private _handleChildSelect = (): void => {\n // Close flyout panel after a child leaf is selected\n if (this._mode === 'flyout') {\n this.open = false;\n }\n };\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape' && this.open) {\n e.stopPropagation();\n this.open = false;\n }\n };\n\n private _buildKeyPath(): string[] {\n const path: string[] = [];\n if (this.key) path.unshift(this.key);\n let el: Element | null = this.parentElement;\n while (el) {\n const tag = el.tagName.toLowerCase();\n if (tag === 'ae-menu-item') {\n const k = (el as MenuItem).key;\n if (k) path.unshift(k);\n } else if (tag === 'ae-menu') {\n break;\n }\n el = el.parentElement;\n }\n return path;\n }\n\n protected render() {\n const mode = this._mode;\n const panelPlacement = this._panelPlacement;\n const isParent = this._isParent;\n const isInline = mode === 'inline';\n // Arrow direction: inline always shows \u25BA (rotates to \u25BC on open)\n // flyout-bottom shows \u25BC; flyout-right shows \u25BA\n const arrowDir = !isInline && panelPlacement === 'bottom' ? 'bottom' : 'right';\n const wrapText = this._wrapText;\n // Leaf items inside a submenu panel (depth > 0) need different padding\n const isNested = !!this.parentElement?.closest('ae-menu-item');\n\n return html(({ div, button, a, span, slot }) => {\n if (isParent) {\n div({ className: 'item-wrapper' }, () => {\n button(\n {\n type: 'button',\n className: {\n item: true,\n 'item--parent': true,\n 'item--open': this.open,\n 'item--wrap': wrapText,\n },\n disabled: this.disabled,\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(this.open),\n '@click': this._handleParentClick,\n '@keydown': this._handleKeydown,\n },\n () => {\n span({ text: this.label });\n slot({ name: 'expand' }, () => {\n span({ className: `item-arrow item-arrow--${arrowDir}`, 'aria-hidden': 'true' });\n });\n slot({ name: 'collapse' }, () => {\n span({ className: `item-arrow item-arrow--${arrowDir}`, 'aria-hidden': 'true' });\n });\n },\n );\n\n if (isInline) {\n div(\n {\n className: { 'submenu-inline': true, open: this.open },\n role: 'menu',\n },\n () => {\n slot();\n },\n );\n } else {\n div(\n {\n className: {\n 'submenu-panel': true,\n [`placement-${panelPlacement}`]: true,\n open: this.open,\n },\n role: 'menu',\n },\n () => {\n slot();\n },\n );\n }\n });\n } else {\n // Leaf item\n const sharedProps = {\n className: { item: true, 'item--leaf-in-panel': isNested, 'item--wrap': wrapText },\n role: 'menuitem',\n '@click': this._handleLeafClick,\n '@keydown': this._handleKeydown,\n };\n\n if (this.href) {\n a(\n {\n ...sharedProps,\n href: this.disabled ? undefined : this.href,\n 'aria-disabled': this.disabled ? 'true' : undefined,\n },\n () => {\n slot();\n },\n );\n } else {\n button(\n {\n ...sharedProps,\n type: 'button',\n disabled: this.disabled,\n },\n () => {\n slot();\n },\n );\n }\n }\n });\n }\n}\n\nMenuItem.define('menu-item');\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-menu-item': MenuItem;\n }\n}\n\nexport default MenuItem;\nexport type MenuItemProps = InferProps<typeof MenuItem>;\nexport type { MenuIconPlacement };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,kGAAAA,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA,4FAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
6
6
  "names": ["exports", "module", "exports", "module", "exports", "module", "import_aeico", "import_variables", "import_aeico", "variables", "style", "_a", "_init", "variables", "style"]
7
7
  }
package/dist/menu.js CHANGED
@@ -50,19 +50,12 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
50
50
 
51
51
  // src/aeico-component.ts
52
52
  import { AeicoElement } from "aeico";
53
-
54
- // src/utils.ts
55
- function toKebab(str) {
56
- const cleaned = str.replace(/^[_\d]+/, "");
57
- return cleaned.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
58
- }
59
-
60
- // src/aeico-component.ts
61
53
  var TAG_NAME_PREFIX = "ae";
62
54
  var AeicoComponent = class extends AeicoElement {
63
- static register(name) {
64
- const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;
65
- super.register(tagName);
55
+ static define(name) {
56
+ const prefix = `${TAG_NAME_PREFIX}-`;
57
+ const tagName = name.startsWith(prefix) ? name : `${prefix}${name}`;
58
+ super.define(tagName);
66
59
  }
67
60
  };
68
61
  var aeico_component_default = AeicoComponent;
@@ -150,7 +143,7 @@ var variables_default = `:root,
150
143
  --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);
151
144
  --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);
152
145
 
153
- /* Gray (neutral \u2014 base #6e6e6e) */
146
+ /* Gray (neutral - base #6e6e6e) */
154
147
  --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);
155
148
  --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);
156
149
  --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);
@@ -161,7 +154,7 @@ var variables_default = `:root,
161
154
  --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);
162
155
  --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);
163
156
 
164
- /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */
157
+ /* Slate (blue-gray - base #64748b, used for 'secondary') */
165
158
  --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);
166
159
  --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);
167
160
  --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);
@@ -197,7 +190,7 @@ var variables_default = `:root,
197
190
 
198
191
  :root,
199
192
  :host {
200
- /* Hover / active mix (light default \u2014 overridden in \xA7 6 dark) */
193
+ /* Hover / active mix (light default - overridden in \xA7 6 dark) */
201
194
  --ae-color-mix-hover: black 10%;
202
195
  --ae-color-mix-active: black 20%;
203
196
 
@@ -231,7 +224,7 @@ var variables_default = `:root,
231
224
  --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));
232
225
  --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));
233
226
 
234
- /* Secondary (Slate) \u2014 base differs per theme, overridden in \xA7 6 dark */
227
+ /* Secondary (Slate) - base differs per theme, overridden in \xA7 6 dark */
235
228
  --ae-color-secondary: var(--ae-slate-500);
236
229
  --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));
237
230
  --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));
@@ -247,7 +240,7 @@ var variables_default = `:root,
247
240
  :host {
248
241
  color-scheme: light;
249
242
 
250
- /* Gray UI aliases \u2014 lighter palette steps for elements on white background */
243
+ /* Gray UI aliases - lighter palette steps for elements on white background */
251
244
  --ae-color-gray-dark: var(--ae-gray-400);
252
245
  --ae-color-gray: var(--ae-gray-300);
253
246
  --ae-color-gray-light: var(--ae-gray-200);
@@ -279,7 +272,7 @@ var variables_default = `:root,
279
272
  --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);
280
273
  --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);
281
274
 
282
- /* Subtle intent tokens \u2014 light context */
275
+ /* Subtle intent tokens - light context */
283
276
  --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);
284
277
  --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);
285
278
  --ae-color-primary-text-emphasis: var(--ae-blue-700);
@@ -310,7 +303,7 @@ var variables_default = `:root,
310
303
  --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */
311
304
  --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */
312
305
 
313
- /* Component tokens \u2014 light defaults */
306
+ /* Component tokens - light defaults */
314
307
  --ae-action-btn-bg: var(--ae-gray-200);
315
308
  --ae-action-btn-bg-hover: var(--ae-color-primary);
316
309
  --ae-action-btn-color: var(--ae-gray-600);
@@ -345,14 +338,12 @@ var variables_default = `:root,
345
338
  --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */
346
339
  }
347
340
 
348
- /* Border-radius tokens \u2014 shared across all components */
341
+ /* Border-radius tokens - shared across all components */
349
342
  :root,
350
343
  :host {
351
344
  /**
352
345
  * Unified border-radius hook for all components.
353
346
  *
354
- * Not set by default \u2014 each component falls back to its own --ae-radius-*
355
- * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).
356
347
  *
357
348
  * Usage:
358
349
  * :root { --ae-border-radius: 0; } // global: all components square
@@ -374,7 +365,7 @@ var variables_default = `:root,
374
365
  --ae-radius-circle: 50%;
375
366
  }
376
367
 
377
- /* Layout tokens \u2014 defined on :root so all light DOM elements can use them */
368
+ /* Layout tokens - defined on :root so all light DOM elements can use them */
378
369
  :root,
379
370
  :host {
380
371
  --container-max-width: 1280px;
@@ -387,18 +378,18 @@ var variables_default = `:root,
387
378
  :host-context([theme="dark"]) {
388
379
  color-scheme: dark;
389
380
 
390
- /* Hover / active \u2014 slightly gentler on dark backgrounds */
381
+ /* Hover / active - slightly gentler on dark backgrounds */
391
382
  --ae-color-mix-hover: black 8%;
392
383
  --ae-color-mix-active: black 16%;
393
384
 
394
- /* Gray UI aliases \u2014 darker palette steps for elements on dark background */
385
+ /* Gray UI aliases - darker palette steps for elements on dark background */
395
386
  --ae-color-gray-dark: var(--ae-gray-800);
396
387
  --ae-color-gray: var(--ae-gray-700);
397
388
  --ae-color-gray-light: var(--ae-gray-600);
398
389
  --ae-color-gray-lighter: var(--ae-gray-500);
399
390
  --ae-color-gray-lightest: var(--ae-gray-400);
400
391
 
401
- /* Secondary \u2014 deeper base on dark background */
392
+ /* Secondary - deeper base on dark background */
402
393
  --ae-color-secondary: var(--ae-slate-700);
403
394
  --ae-color-secondary-text: var(--ae-slate-300);
404
395
 
@@ -427,7 +418,7 @@ var variables_default = `:root,
427
418
  --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);
428
419
  --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);
429
420
 
430
- /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */
421
+ /* Subtle intent tokens - dark context (more alpha, lighter text-emphasis) */
431
422
  --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);
432
423
  --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);
433
424
  --ae-color-primary-text-emphasis: var(--ae-blue-300);
@@ -458,7 +449,7 @@ var variables_default = `:root,
458
449
  --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);
459
450
  --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);
460
451
 
461
- /* Component tokens \u2014 dark overrides */
452
+ /* Component tokens - dark overrides */
462
453
  --ae-action-btn-bg: var(--ae-color-gray);
463
454
  --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));
464
455
  --ae-action-btn-color: var(--ae-gray-400);
@@ -720,9 +711,8 @@ __decorateElement(_init, 4, "selected", _selected_dec, MenuItem, _selected);
720
711
  __decorateElement(_init, 4, "open", _open_dec, MenuItem, _open);
721
712
  __decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, MenuItem, _iconPlacement);
722
713
  __decoratorMetadata(_init, MenuItem);
723
- __publicField(MenuItem, "tagName", "menu-item");
724
714
  __publicField(MenuItem, "styles", [variables_default, menu_item_default]);
725
- MenuItem.register();
715
+ MenuItem.define("menu-item");
726
716
  var menu_item_default2 = MenuItem;
727
717
 
728
718
  // src/menu/menu.ts
@@ -777,9 +767,8 @@ __decorateElement(_init2, 4, "trigger", _trigger_dec, Menu, _trigger);
777
767
  __decorateElement(_init2, 4, "selectedKey", _selectedKey_dec, Menu, _selectedKey);
778
768
  __decorateElement(_init2, 4, "wrapText", _wrapText_dec, Menu, _wrapText);
779
769
  __decoratorMetadata(_init2, Menu);
780
- __publicField(Menu, "tagName", "menu");
781
770
  __publicField(Menu, "styles", [variables_default, menu_default]);
782
- Menu.register();
771
+ Menu.define("menu");
783
772
  var menu_default2 = Menu;
784
773
  export {
785
774
  menu_default2 as Menu,