aeico-components 0.1.6 → 0.1.7

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 (161) hide show
  1. package/README.md +0 -0
  2. package/dist/chunks/action-button.cjs +2 -2
  3. package/dist/chunks/action-button.js +2 -2
  4. package/dist/chunks/alert.cjs +22 -28
  5. package/dist/chunks/alert.cjs.map +1 -1
  6. package/dist/chunks/alert.js +22 -28
  7. package/dist/chunks/alert.js.map +1 -1
  8. package/dist/chunks/badge.cjs +1 -1
  9. package/dist/chunks/badge.js +1 -1
  10. package/dist/chunks/breadcrumb-item.cjs +7 -7
  11. package/dist/chunks/breadcrumb-item.js +7 -7
  12. package/dist/chunks/button.cjs +39 -50
  13. package/dist/chunks/button.cjs.map +1 -1
  14. package/dist/chunks/button.js +39 -50
  15. package/dist/chunks/button.js.map +1 -1
  16. package/dist/chunks/card.cjs +1 -1
  17. package/dist/chunks/card.js +1 -1
  18. package/dist/chunks/checkbox.cjs +1 -1
  19. package/dist/chunks/checkbox.js +1 -1
  20. package/dist/chunks/color.cjs +1 -1
  21. package/dist/chunks/color.js +1 -1
  22. package/dist/chunks/copy-button.cjs +7 -4
  23. package/dist/chunks/copy-button.cjs.map +1 -1
  24. package/dist/chunks/copy-button.js +7 -4
  25. package/dist/chunks/copy-button.js.map +1 -1
  26. package/dist/chunks/detail-group.cjs +65 -0
  27. package/dist/chunks/detail-group.cjs.map +1 -0
  28. package/dist/chunks/detail-group.js +66 -0
  29. package/dist/chunks/detail-group.js.map +1 -0
  30. package/dist/chunks/detail.cjs +1 -1
  31. package/dist/chunks/detail.js +1 -1
  32. package/dist/chunks/dialog.cjs +1 -1
  33. package/dist/chunks/dialog.js +1 -1
  34. package/dist/chunks/divider.cjs +1 -1
  35. package/dist/chunks/divider.js +1 -1
  36. package/dist/chunks/drawer.cjs +1 -1
  37. package/dist/chunks/drawer.js +1 -1
  38. package/dist/chunks/dropdown-button.cjs +8 -9
  39. package/dist/chunks/dropdown-button.cjs.map +1 -1
  40. package/dist/chunks/dropdown-button.js +11 -12
  41. package/dist/chunks/dropdown-button.js.map +1 -1
  42. package/dist/chunks/icon.cjs +27 -11
  43. package/dist/chunks/icon.cjs.map +1 -1
  44. package/dist/chunks/icon.js +27 -11
  45. package/dist/chunks/icon.js.map +1 -1
  46. package/dist/chunks/menu.cjs +1 -1
  47. package/dist/chunks/menu.js +1 -1
  48. package/dist/chunks/navbar.cjs +1 -1
  49. package/dist/chunks/navbar.js +1 -1
  50. package/dist/chunks/number-input.cjs +110 -0
  51. package/dist/chunks/number-input.cjs.map +1 -0
  52. package/dist/chunks/number-input.js +111 -0
  53. package/dist/chunks/number-input.js.map +1 -0
  54. package/dist/chunks/pagination.cjs +31 -31
  55. package/dist/chunks/pagination.js +31 -31
  56. package/dist/chunks/progress-bar.cjs +1 -1
  57. package/dist/chunks/progress-bar.js +1 -1
  58. package/dist/chunks/radio.cjs +1 -1
  59. package/dist/chunks/radio.js +1 -1
  60. package/dist/chunks/select.cjs +1 -1
  61. package/dist/chunks/select.js +1 -1
  62. package/dist/chunks/size.cjs +1 -1
  63. package/dist/chunks/size.js +1 -1
  64. package/dist/chunks/slider.cjs +26 -29
  65. package/dist/chunks/slider.cjs.map +1 -1
  66. package/dist/chunks/slider.js +26 -29
  67. package/dist/chunks/slider.js.map +1 -1
  68. package/dist/chunks/spinner.cjs +1 -1
  69. package/dist/chunks/spinner.js +1 -1
  70. package/dist/chunks/switch.cjs +1 -1
  71. package/dist/chunks/switch.js +1 -1
  72. package/dist/chunks/tab-panel.cjs +12 -3
  73. package/dist/chunks/tab-panel.cjs.map +1 -1
  74. package/dist/chunks/tab-panel.js +12 -3
  75. package/dist/chunks/tab-panel.js.map +1 -1
  76. package/dist/chunks/tag.cjs +1 -1
  77. package/dist/chunks/tag.js +1 -1
  78. package/dist/chunks/text-input.cjs +1 -1
  79. package/dist/chunks/text-input.js +1 -1
  80. package/dist/chunks/textarea.cjs +1 -1
  81. package/dist/chunks/textarea.js +1 -1
  82. package/dist/chunks/tooltip.cjs +4 -5
  83. package/dist/chunks/tooltip.cjs.map +1 -1
  84. package/dist/chunks/tooltip.js +4 -5
  85. package/dist/chunks/tooltip.js.map +1 -1
  86. package/dist/chunks/tree.cjs +1 -1
  87. package/dist/chunks/tree.js +1 -1
  88. package/dist/chunks/variables.cjs +271 -247
  89. package/dist/chunks/variables.cjs.map +1 -1
  90. package/dist/chunks/variables.js +271 -247
  91. package/dist/chunks/variables.js.map +1 -1
  92. package/dist/detail-group.cjs +6 -0
  93. package/dist/detail-group.cjs.map +1 -0
  94. package/dist/detail-group.js +6 -0
  95. package/dist/detail-group.js.map +1 -0
  96. package/dist/dropdown.js +4 -4
  97. package/dist/index.cjs +4 -166
  98. package/dist/index.cjs.map +1 -1
  99. package/dist/index.js +10 -172
  100. package/dist/index.js.map +1 -1
  101. package/dist/number-input.cjs +6 -0
  102. package/dist/number-input.cjs.map +1 -0
  103. package/dist/number-input.js +6 -0
  104. package/dist/number-input.js.map +1 -0
  105. package/dist/select.cjs +1 -1
  106. package/dist/select.js +1 -1
  107. package/dist/types/card/defines.d.ts +1 -1
  108. package/dist/types/detail/defines.d.ts +1 -1
  109. package/dist/types/icon/defines.d.ts +5 -1
  110. package/dist/types/icon/index.d.ts +1 -1
  111. package/dist/types/tabs/defines.d.ts +1 -0
  112. package/dist/types/tabs/tabs.d.ts +3 -0
  113. package/package.json +1 -1
  114. package/src/card/defines.ts +1 -1
  115. package/src/copy-button/copy-button.ts +9 -5
  116. package/src/detail/defines.ts +1 -1
  117. package/src/icon/defines.ts +6 -1
  118. package/src/icon/icon.ts +28 -10
  119. package/src/icon/index.ts +1 -1
  120. package/src/icon/registry.ts +2 -2
  121. package/src/styles/color.css +91 -91
  122. package/src/styles/components/action-button.css +12 -12
  123. package/src/styles/components/alert.css +22 -28
  124. package/src/styles/components/badge.css +13 -20
  125. package/src/styles/components/breadcrumb-item.css +7 -7
  126. package/src/styles/components/button.css +39 -50
  127. package/src/styles/components/card.css +45 -30
  128. package/src/styles/components/checkbox.css +6 -11
  129. package/src/styles/components/copy-button.css +22 -33
  130. package/src/styles/components/detail.css +51 -39
  131. package/src/styles/components/dialog.css +11 -11
  132. package/src/styles/components/divider.css +3 -3
  133. package/src/styles/components/drawer.css +14 -23
  134. package/src/styles/components/dropdown-item.css +7 -8
  135. package/src/styles/components/dropdown.css +3 -4
  136. package/src/styles/components/field-label.css +12 -12
  137. package/src/styles/components/icon-button.css +25 -36
  138. package/src/styles/components/icon.css +1 -1
  139. package/src/styles/components/menu-item.css +7 -8
  140. package/src/styles/components/navbar.css +16 -16
  141. package/src/styles/components/number-input.css +27 -36
  142. package/src/styles/components/pagination.css +31 -31
  143. package/src/styles/components/progress-bar.css +2 -3
  144. package/src/styles/components/radio-group.css +69 -83
  145. package/src/styles/components/select-option.css +5 -5
  146. package/src/styles/components/select.css +21 -33
  147. package/src/styles/components/slider.css +26 -29
  148. package/src/styles/components/spinner.css +7 -9
  149. package/src/styles/components/switch.css +5 -17
  150. package/src/styles/components/tab.css +4 -5
  151. package/src/styles/components/tabs.css +48 -1
  152. package/src/styles/components/tag.css +14 -21
  153. package/src/styles/components/text-input.css +13 -22
  154. package/src/styles/components/textarea.css +12 -21
  155. package/src/styles/components/tooltip.css +4 -5
  156. package/src/styles/components/tree-item.css +12 -12
  157. package/src/styles/radius.css +10 -0
  158. package/src/styles/size.css +7 -7
  159. package/src/styles/variables.css +271 -247
  160. package/src/tabs/defines.ts +1 -0
  161. package/src/tabs/tabs.ts +12 -0
package/README.md CHANGED
Binary file
@@ -288,8 +288,8 @@ __publicField(_AeicoField, "watchers", {
288
288
  });
289
289
  __publicField(_AeicoField, "_fieldIdCounter", 0);
290
290
  let AeicoField = _AeicoField;
291
- const fieldLabelCSS = ':host {\n --field-label-gap: 4px;\n --field-label-col-gap: 8px;\n --field-label-width: 100px;\n --field-label-font-size: 0.875em;\n --field-label-color: inherit;\n --field-required-color: var(--red, #dc3545);\n --field-helper-color: var(--color-text-muted, #6e6e6e);\n --field-error-color: var(--red, #dc3545);\n}\n\n:host([label]) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--field-label-gap);\n}\n\n:host([label][label-placement="left"]) {\n display: grid;\n grid-template-columns: var(--field-label-width) 1fr;\n column-gap: var(--field-label-col-gap);\n row-gap: var(--field-label-gap);\n align-items: start;\n}\n\n:host([label][label-placement="left"]) .field-label {\n align-self: center;\n}\n\n:host([label][label-placement="left"]) .field-helper,\n:host([label][label-placement="left"]) .field-error {\n grid-column: 2;\n}\n\n.field-label {\n font-size: var(--field-label-font-size);\n color: var(--field-label-color);\n user-select: none;\n line-height: 1.4;\n}\n\n.field-required {\n color: var(--field-required-color);\n margin-left: 2px;\n}\n\n.field-helper {\n font-size: 0.8em;\n color: var(--field-helper-color);\n line-height: 1.4;\n}\n\n.field-error {\n font-size: 0.8em;\n color: var(--field-error-color);\n line-height: 1.4;\n}\n\n/* Action controls container (integrated style) */\n.action-controls {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--border-subtle));\n border-radius: 0 var(--field-action-border-radius, 2px) var(--field-action-border-radius, 2px) 0;\n overflow: hidden;\n flex-shrink: 0;\n transition: border-color 0.12s;\n background: var(--field-action-bg, var(--surface-base));\n position: relative;\n z-index: 1;\n align-self: stretch;\n}\n\n.action-controls .action-btn {\n border: none;\n background: transparent;\n color: var(--field-action-color, var(--color-text-muted));\n font-size: 0.875em;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5em;\n transition: background 0.12s;\n}\n\n.action-controls .action-btn:hover:not(:disabled) {\n background: var(--field-action-bg-hover, var(--surface-raised));\n}\n\n.action-controls .action-btn:active:not(:disabled) {\n background: var(--field-action-bg-focus, var(--surface-raised));\n}\n\n.action-controls .action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-controls .action-btn + .action-btn {\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--border-subtle));\n}\n\n.input-container:has(input:focus) ~ .action-controls,\n.input-container:has(input:focus) .action-controls,\n.container:has(.trigger.open) ~ .action-controls,\n.container:has(.trigger.open) .action-controls {\n border-color: var(--field-action-border-color-focus, var(--border-focus));\n}\n\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\n.input-container:has(input:hover:not(:focus)) .action-controls,\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\n border-color: var(--field-action-border-color-hover, var(--border-default));\n}\n';
292
- const actionButtonCSS = "/* Action button base styles — shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--clear-btn-border-radius);\n background: var(--clear-btn-bg);\n color: var(--clear-btn-color);\n transition: var(--clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--reset-btn-border-radius);\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n";
291
+ const fieldLabelCSS = ':host {\n --field-label-gap: 4px;\n --field-label-col-gap: 8px;\n --field-label-width: 100px;\n --field-label-font-size: 0.875em;\n --field-label-color: inherit;\n --field-required-color: var(--ae-red, #dc3545);\n --field-helper-color: var(--ae-color-text-muted, #6e6e6e);\n --field-error-color: var(--ae-red, #dc3545);\n}\n\n:host([label]) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--field-label-gap);\n}\n\n:host([label][label-placement="left"]) {\n display: grid;\n grid-template-columns: var(--field-label-width) 1fr;\n column-gap: var(--field-label-col-gap);\n row-gap: var(--field-label-gap);\n align-items: start;\n}\n\n:host([label][label-placement="left"]) .field-label {\n align-self: center;\n}\n\n:host([label][label-placement="left"]) .field-helper,\n:host([label][label-placement="left"]) .field-error {\n grid-column: 2;\n}\n\n.field-label {\n font-size: var(--field-label-font-size);\n color: var(--field-label-color);\n user-select: none;\n line-height: 1.4;\n}\n\n.field-required {\n color: var(--field-required-color);\n margin-left: 2px;\n}\n\n.field-helper {\n font-size: 0.8em;\n color: var(--field-helper-color);\n line-height: 1.4;\n}\n\n.field-error {\n font-size: 0.8em;\n color: var(--field-error-color);\n line-height: 1.4;\n}\n\n/* Action controls container (integrated style) */\n.action-controls {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\n border-radius: 0 var(--field-action-border-radius, var(--ae-radius-xs)) var(--field-action-border-radius, var(--ae-radius-xs)) 0;\n overflow: hidden;\n flex-shrink: 0;\n transition: border-color 0.12s;\n background: var(--field-action-bg, var(--ae-surface-base));\n position: relative;\n z-index: 1;\n align-self: stretch;\n}\n\n.action-controls .action-btn {\n border: none;\n background: transparent;\n color: var(--field-action-color, var(--ae-color-text-muted));\n font-size: 0.875em;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5em;\n transition: background 0.12s;\n}\n\n.action-controls .action-btn:hover:not(:disabled) {\n background: var(--field-action-bg-hover, var(--ae-surface-raised));\n}\n\n.action-controls .action-btn:active:not(:disabled) {\n background: var(--field-action-bg-focus, var(--ae-surface-raised));\n}\n\n.action-controls .action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-controls .action-btn + .action-btn {\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\n}\n\n.input-container:has(input:focus) ~ .action-controls,\n.input-container:has(input:focus) .action-controls,\n.container:has(.trigger.open) ~ .action-controls,\n.container:has(.trigger.open) .action-controls {\n border-color: var(--field-action-border-color-focus, var(--ae-border-focus));\n}\n\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\n.input-container:has(input:hover:not(:focus)) .action-controls,\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\n border-color: var(--field-action-border-color-hover, var(--ae-border-default));\n}\n';
292
+ const actionButtonCSS = "/* Action button base styles — shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--ae-clear-btn-border-radius);\n background: var(--ae-clear-btn-bg);\n color: var(--ae-clear-btn-color);\n transition: var(--ae-clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--ae-reset-btn-border-radius);\n background: var(--ae-reset-btn-bg);\n color: var(--ae-reset-btn-color);\n transition: var(--ae-reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--ae-clear-btn-bg-hover);\n color: var(--ae-clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--ae-reset-btn-bg-hover);\n color: var(--ae-reset-btn-color-hover);\n}\n";
293
293
  exports.AeicoField = AeicoField;
294
294
  exports.actionButtonCSS = actionButtonCSS;
295
295
  exports.fieldLabelCSS = fieldLabelCSS;
@@ -287,8 +287,8 @@ __publicField(_AeicoField, "watchers", {
287
287
  });
288
288
  __publicField(_AeicoField, "_fieldIdCounter", 0);
289
289
  let AeicoField = _AeicoField;
290
- const fieldLabelCSS = ':host {\n --field-label-gap: 4px;\n --field-label-col-gap: 8px;\n --field-label-width: 100px;\n --field-label-font-size: 0.875em;\n --field-label-color: inherit;\n --field-required-color: var(--red, #dc3545);\n --field-helper-color: var(--color-text-muted, #6e6e6e);\n --field-error-color: var(--red, #dc3545);\n}\n\n:host([label]) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--field-label-gap);\n}\n\n:host([label][label-placement="left"]) {\n display: grid;\n grid-template-columns: var(--field-label-width) 1fr;\n column-gap: var(--field-label-col-gap);\n row-gap: var(--field-label-gap);\n align-items: start;\n}\n\n:host([label][label-placement="left"]) .field-label {\n align-self: center;\n}\n\n:host([label][label-placement="left"]) .field-helper,\n:host([label][label-placement="left"]) .field-error {\n grid-column: 2;\n}\n\n.field-label {\n font-size: var(--field-label-font-size);\n color: var(--field-label-color);\n user-select: none;\n line-height: 1.4;\n}\n\n.field-required {\n color: var(--field-required-color);\n margin-left: 2px;\n}\n\n.field-helper {\n font-size: 0.8em;\n color: var(--field-helper-color);\n line-height: 1.4;\n}\n\n.field-error {\n font-size: 0.8em;\n color: var(--field-error-color);\n line-height: 1.4;\n}\n\n/* Action controls container (integrated style) */\n.action-controls {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--border-subtle));\n border-radius: 0 var(--field-action-border-radius, 2px) var(--field-action-border-radius, 2px) 0;\n overflow: hidden;\n flex-shrink: 0;\n transition: border-color 0.12s;\n background: var(--field-action-bg, var(--surface-base));\n position: relative;\n z-index: 1;\n align-self: stretch;\n}\n\n.action-controls .action-btn {\n border: none;\n background: transparent;\n color: var(--field-action-color, var(--color-text-muted));\n font-size: 0.875em;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5em;\n transition: background 0.12s;\n}\n\n.action-controls .action-btn:hover:not(:disabled) {\n background: var(--field-action-bg-hover, var(--surface-raised));\n}\n\n.action-controls .action-btn:active:not(:disabled) {\n background: var(--field-action-bg-focus, var(--surface-raised));\n}\n\n.action-controls .action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-controls .action-btn + .action-btn {\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--border-subtle));\n}\n\n.input-container:has(input:focus) ~ .action-controls,\n.input-container:has(input:focus) .action-controls,\n.container:has(.trigger.open) ~ .action-controls,\n.container:has(.trigger.open) .action-controls {\n border-color: var(--field-action-border-color-focus, var(--border-focus));\n}\n\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\n.input-container:has(input:hover:not(:focus)) .action-controls,\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\n border-color: var(--field-action-border-color-hover, var(--border-default));\n}\n';
291
- const actionButtonCSS = "/* Action button base styles — shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--clear-btn-border-radius);\n background: var(--clear-btn-bg);\n color: var(--clear-btn-color);\n transition: var(--clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--reset-btn-border-radius);\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n";
290
+ const fieldLabelCSS = ':host {\n --field-label-gap: 4px;\n --field-label-col-gap: 8px;\n --field-label-width: 100px;\n --field-label-font-size: 0.875em;\n --field-label-color: inherit;\n --field-required-color: var(--ae-red, #dc3545);\n --field-helper-color: var(--ae-color-text-muted, #6e6e6e);\n --field-error-color: var(--ae-red, #dc3545);\n}\n\n:host([label]) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--field-label-gap);\n}\n\n:host([label][label-placement="left"]) {\n display: grid;\n grid-template-columns: var(--field-label-width) 1fr;\n column-gap: var(--field-label-col-gap);\n row-gap: var(--field-label-gap);\n align-items: start;\n}\n\n:host([label][label-placement="left"]) .field-label {\n align-self: center;\n}\n\n:host([label][label-placement="left"]) .field-helper,\n:host([label][label-placement="left"]) .field-error {\n grid-column: 2;\n}\n\n.field-label {\n font-size: var(--field-label-font-size);\n color: var(--field-label-color);\n user-select: none;\n line-height: 1.4;\n}\n\n.field-required {\n color: var(--field-required-color);\n margin-left: 2px;\n}\n\n.field-helper {\n font-size: 0.8em;\n color: var(--field-helper-color);\n line-height: 1.4;\n}\n\n.field-error {\n font-size: 0.8em;\n color: var(--field-error-color);\n line-height: 1.4;\n}\n\n/* Action controls container (integrated style) */\n.action-controls {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\n border-radius: 0 var(--field-action-border-radius, var(--ae-radius-xs)) var(--field-action-border-radius, var(--ae-radius-xs)) 0;\n overflow: hidden;\n flex-shrink: 0;\n transition: border-color 0.12s;\n background: var(--field-action-bg, var(--ae-surface-base));\n position: relative;\n z-index: 1;\n align-self: stretch;\n}\n\n.action-controls .action-btn {\n border: none;\n background: transparent;\n color: var(--field-action-color, var(--ae-color-text-muted));\n font-size: 0.875em;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5em;\n transition: background 0.12s;\n}\n\n.action-controls .action-btn:hover:not(:disabled) {\n background: var(--field-action-bg-hover, var(--ae-surface-raised));\n}\n\n.action-controls .action-btn:active:not(:disabled) {\n background: var(--field-action-bg-focus, var(--ae-surface-raised));\n}\n\n.action-controls .action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-controls .action-btn + .action-btn {\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\n}\n\n.input-container:has(input:focus) ~ .action-controls,\n.input-container:has(input:focus) .action-controls,\n.container:has(.trigger.open) ~ .action-controls,\n.container:has(.trigger.open) .action-controls {\n border-color: var(--field-action-border-color-focus, var(--ae-border-focus));\n}\n\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\n.input-container:has(input:hover:not(:focus)) .action-controls,\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\n border-color: var(--field-action-border-color-hover, var(--ae-border-default));\n}\n';
291
+ const actionButtonCSS = "/* Action button base styles — shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--ae-clear-btn-border-radius);\n background: var(--ae-clear-btn-bg);\n color: var(--ae-clear-btn-color);\n transition: var(--ae-clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--ae-reset-btn-border-radius);\n background: var(--ae-reset-btn-bg);\n color: var(--ae-reset-btn-color);\n transition: var(--ae-reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--ae-clear-btn-bg-hover);\n color: var(--ae-clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--ae-reset-btn-bg-hover);\n color: var(--ae-reset-btn-color-hover);\n}\n";
292
292
  export {
293
293
  AeicoField as A,
294
294
  actionButtonCSS as a,
@@ -10,57 +10,51 @@ const alertStyle = `.alert {
10
10
  position: relative;
11
11
  padding: 12px 16px;
12
12
  margin-bottom: 12px;
13
- border-radius: 4px;
13
+ border-radius: var(--ae-border-radius, var(--ae-radius-sm));
14
14
  font-size: 12px;
15
15
  line-height: 1.6;
16
- background-color: var(--alert-solid-bg);
17
- color: var(--alert-solid-color);
18
- border: 1px solid var(--alert-solid-bg);
16
+ background-color: var(--ae-color-solid);
17
+ color: var(--ae-color-on-solid);
18
+ border: 1px solid var(--ae-color-solid);
19
19
  }
20
20
 
21
21
  .alert:last-child {
22
22
  margin-bottom: 0;
23
23
  }
24
24
 
25
- :host {
26
- --color-solid: var(--color-primary);
27
- --color-on-solid: var(--color-text-main);
28
- --color-border: var(--color-primary);
29
- --color-bg-subtle: var(--color-primary-bg-subtle);
30
- --color-text-subtle: var(--color-primary-text-emphasis);
31
- --color-border-subtle: var(--color-primary-border-subtle);
32
-
33
- --alert-solid-bg: var(--color-solid);
34
- --alert-solid-color: var(--color-on-solid);
35
- --alert-border: var(--color-border);
36
- --alert-subtle-bg: var(--color-bg-subtle);
37
- --alert-subtle-color: var(--color-text-subtle);
38
- --alert-subtle-border:var(--color-border-subtle);
25
+ /* default color (no [color] attribute) — primary */
26
+ :host(:not([color])) {
27
+ --ae-color-solid: var(--ae-color-primary);
28
+ --ae-color-on-solid: var(--ae-color-text-main);
29
+ --ae-color-border: var(--ae-color-primary);
30
+ --ae-color-bg-subtle: var(--ae-color-primary-bg-subtle);
31
+ --ae-color-text-subtle: var(--ae-color-primary-text-emphasis);
32
+ --ae-color-border-subtle: var(--ae-color-primary-border-subtle);
39
33
  }
40
34
 
41
35
 
42
36
  :host([variant="faint"]) .alert {
43
- background-color: var(--alert-subtle-bg);
44
- color: var(--alert-subtle-color);
45
- border-color: var(--alert-subtle-border);
37
+ background-color: var(--ae-color-bg-subtle);
38
+ color: var(--ae-color-text-subtle);
39
+ border-color: var(--ae-color-border-subtle);
46
40
  }
47
41
 
48
42
  :host([variant="subtle"]) .alert {
49
- background-color: var(--alert-subtle-bg);
50
- color: var(--alert-subtle-color);
43
+ background-color: var(--ae-color-bg-subtle);
44
+ color: var(--ae-color-text-subtle);
51
45
  border-color: transparent;
52
46
  }
53
47
 
54
48
  :host([variant="filled"]) .alert {
55
- background-color: var(--alert-solid-bg);
56
- color: var(--alert-solid-color);
57
- border-color: var(--alert-solid-bg);
49
+ background-color: var(--ae-color-solid);
50
+ color: var(--ae-color-on-solid);
51
+ border-color: var(--ae-color-solid);
58
52
  }
59
53
 
60
54
  :host([variant="outlined"]) .alert {
61
55
  background-color: transparent;
62
- color: var(--alert-subtle-color);
63
- border-color: var(--alert-border);
56
+ color: var(--ae-color-text-subtle);
57
+ border-color: var(--ae-color-border);
64
58
  }
65
59
 
66
60
  :host([dismissible]) .alert {
@@ -1 +1 @@
1
- {"version":3,"file":"alert.cjs","sources":["../../src/alert/alert.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport alertStyle from '../styles/components/alert.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { AlertColor, AlertSize, AlertVariant } from './defines';\n\n/**\n * Alert Component\n *\n * A customizable alert/notification component with multiple variants and sizes.\n * Supports dismissible alerts and icon display.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const alert = Alert.create({\n * variant: 'info',\n * dismissible: true\n * })\n * alert.textContent = 'This is an informational message'\n * document.body.appendChild(alert)\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-alert variant=\"info\">Information message</ae-alert>\n * <ae-alert variant=\"success\" dismissible>Operation successful!</ae-alert>\n * <ae-alert variant=\"warning\" size=\"sm\">Small warning</ae-alert>\n * ```\n */\nclass Alert extends AeicoComponent {\n static props: Props = {\n color: { type: String },\n variant: { type: String },\n size: { type: String },\n dismissible: { type: Boolean },\n invisible: { type: Boolean },\n closeText: { type: String },\n };\n\n protected static useStyles = ['alert'];\n protected static styles = [styleVariables, colorCSS, alertStyle];\n\n declare color?: AlertColor;\n declare variant?: AlertVariant;\n declare size?: AlertSize;\n declare dismissible?: boolean;\n declare invisible?: boolean;\n declare closeText?: string;\n\n protected render() {\n return html(({ div, slot, button, span }) => {\n div(\n {\n className: 'alert',\n role: 'alert',\n part: 'alert',\n style: { display: this.invisible ? 'none' : '' },\n },\n () => {\n slot();\n\n if (this.dismissible) {\n button(\n {\n className: 'alert-close',\n '@click': () => this._handleClose(),\n title: this.closeText || 'Close alert',\n },\n () => {\n span({ 'aria-hidden': 'true', textContent: '\\u00d7' });\n },\n );\n }\n },\n );\n });\n }\n\n show() {\n if (this.invisible) {\n this.invisible = false;\n }\n }\n\n hide() {\n this.invisible = true;\n }\n\n private _handleClose = () => {\n this.emit('alert-close', { detail: { target: this } });\n this.remove();\n };\n}\n\nAlert.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-alert': Alert;\n }\n}\n\nexport default Alert;\nexport type AlertProps = InferProps<typeof Alert>;\n"],"names":["AeicoComponent","html","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,cAAcA,eAAAA,eAAe;AAAA,EAAnC;AAAA;AA2DU,wCAAe,MAAM;AAC3B,WAAK,KAAK,eAAe,EAAE,QAAQ,EAAE,QAAQ,KAAA,GAAQ;AACrD,WAAK,OAAA;AAAA,IACP;AAAA;AAAA,EA1CU,SAAS;AACjB,WAAOC,MAAAA,KAAK,CAAC,EAAE,KAAK,MAAM,QAAQ,WAAW;AAC3C;AAAA,QACE;AAAA,UACE,WAAW;AAAA,UACX,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,KAAK,YAAY,SAAS,GAAA;AAAA,QAAG;AAAA,QAEjD,MAAM;AACJ,eAAA;AAEA,cAAI,KAAK,aAAa;AACpB;AAAA,cACE;AAAA,gBACE,WAAW;AAAA,gBACX,UAAU,MAAM,KAAK,aAAA;AAAA,gBACrB,OAAO,KAAK,aAAa;AAAA,cAAA;AAAA,cAE3B,MAAM;AACJ,qBAAK,EAAE,eAAe,QAAQ,aAAa,KAAU;AAAA,cACvD;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AACL,QAAI,KAAK,WAAW;AAClB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,OAAO;AACL,SAAK,YAAY;AAAA,EACnB;AAMF;AA9DE,cADI,OACG,SAAe;AAAA,EACpB,OAAO,EAAE,MAAM,OAAA;AAAA,EACf,SAAS,EAAE,MAAM,OAAA;AAAA,EACjB,MAAM,EAAE,MAAM,OAAA;AAAA,EACd,aAAa,EAAE,MAAM,QAAA;AAAA,EACrB,WAAW,EAAE,MAAM,QAAA;AAAA,EACnB,WAAW,EAAE,MAAM,OAAA;AAAO;AAG5B,cAVI,OAUa,aAAY,CAAC,OAAO;AACrC,cAXI,OAWa,UAAS,CAACC,qBAAgBC,MAAAA,UAAU,UAAU;AAsDjE,MAAM,SAAA;;"}
1
+ {"version":3,"file":"alert.cjs","sources":["../../src/alert/alert.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport alertStyle from '../styles/components/alert.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { AlertColor, AlertSize, AlertVariant } from './defines';\n\n/**\n * Alert Component\n *\n * A customizable alert/notification component with multiple variants and sizes.\n * Supports dismissible alerts and icon display.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const alert = Alert.create({\n * variant: 'info',\n * dismissible: true\n * })\n * alert.textContent = 'This is an informational message'\n * document.body.appendChild(alert)\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-alert variant=\"info\">Information message</ae-alert>\n * <ae-alert variant=\"success\" dismissible>Operation successful!</ae-alert>\n * <ae-alert variant=\"warning\" size=\"sm\">Small warning</ae-alert>\n * ```\n */\nclass Alert extends AeicoComponent {\n static props: Props = {\n color: { type: String },\n variant: { type: String },\n size: { type: String },\n dismissible: { type: Boolean },\n invisible: { type: Boolean },\n closeText: { type: String },\n };\n\n protected static useStyles = ['alert'];\n protected static styles = [styleVariables, colorCSS, alertStyle];\n\n declare color?: AlertColor;\n declare variant?: AlertVariant;\n declare size?: AlertSize;\n declare dismissible?: boolean;\n declare invisible?: boolean;\n declare closeText?: string;\n\n protected render() {\n return html(({ div, slot, button, span }) => {\n div(\n {\n className: 'alert',\n role: 'alert',\n part: 'alert',\n style: { display: this.invisible ? 'none' : '' },\n },\n () => {\n slot();\n\n if (this.dismissible) {\n button(\n {\n className: 'alert-close',\n '@click': () => this._handleClose(),\n title: this.closeText || 'Close alert',\n },\n () => {\n span({ 'aria-hidden': 'true', textContent: '\\u00d7' });\n },\n );\n }\n },\n );\n });\n }\n\n show() {\n if (this.invisible) {\n this.invisible = false;\n }\n }\n\n hide() {\n this.invisible = true;\n }\n\n private _handleClose = () => {\n this.emit('alert-close', { detail: { target: this } });\n this.remove();\n };\n}\n\nAlert.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-alert': Alert;\n }\n}\n\nexport default Alert;\nexport type AlertProps = InferProps<typeof Alert>;\n"],"names":["AeicoComponent","html","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,cAAcA,eAAAA,eAAe;AAAA,EAAnC;AAAA;AA2DU,wCAAe,MAAM;AAC3B,WAAK,KAAK,eAAe,EAAE,QAAQ,EAAE,QAAQ,KAAA,GAAQ;AACrD,WAAK,OAAA;AAAA,IACP;AAAA;AAAA,EA1CU,SAAS;AACjB,WAAOC,MAAAA,KAAK,CAAC,EAAE,KAAK,MAAM,QAAQ,WAAW;AAC3C;AAAA,QACE;AAAA,UACE,WAAW;AAAA,UACX,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,KAAK,YAAY,SAAS,GAAA;AAAA,QAAG;AAAA,QAEjD,MAAM;AACJ,eAAA;AAEA,cAAI,KAAK,aAAa;AACpB;AAAA,cACE;AAAA,gBACE,WAAW;AAAA,gBACX,UAAU,MAAM,KAAK,aAAA;AAAA,gBACrB,OAAO,KAAK,aAAa;AAAA,cAAA;AAAA,cAE3B,MAAM;AACJ,qBAAK,EAAE,eAAe,QAAQ,aAAa,KAAU;AAAA,cACvD;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AACL,QAAI,KAAK,WAAW;AAClB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,OAAO;AACL,SAAK,YAAY;AAAA,EACnB;AAMF;AA9DE,cADI,OACG,SAAe;AAAA,EACpB,OAAO,EAAE,MAAM,OAAA;AAAA,EACf,SAAS,EAAE,MAAM,OAAA;AAAA,EACjB,MAAM,EAAE,MAAM,OAAA;AAAA,EACd,aAAa,EAAE,MAAM,QAAA;AAAA,EACrB,WAAW,EAAE,MAAM,QAAA;AAAA,EACnB,WAAW,EAAE,MAAM,OAAA;AAAO;AAG5B,cAVI,OAUa,aAAY,CAAC,OAAO;AACrC,cAXI,OAWa,UAAS,CAACC,qBAAgBC,MAAAA,UAAU,UAAU;AAsDjE,MAAM,SAAA;;"}
@@ -9,57 +9,51 @@ const alertStyle = `.alert {
9
9
  position: relative;
10
10
  padding: 12px 16px;
11
11
  margin-bottom: 12px;
12
- border-radius: 4px;
12
+ border-radius: var(--ae-border-radius, var(--ae-radius-sm));
13
13
  font-size: 12px;
14
14
  line-height: 1.6;
15
- background-color: var(--alert-solid-bg);
16
- color: var(--alert-solid-color);
17
- border: 1px solid var(--alert-solid-bg);
15
+ background-color: var(--ae-color-solid);
16
+ color: var(--ae-color-on-solid);
17
+ border: 1px solid var(--ae-color-solid);
18
18
  }
19
19
 
20
20
  .alert:last-child {
21
21
  margin-bottom: 0;
22
22
  }
23
23
 
24
- :host {
25
- --color-solid: var(--color-primary);
26
- --color-on-solid: var(--color-text-main);
27
- --color-border: var(--color-primary);
28
- --color-bg-subtle: var(--color-primary-bg-subtle);
29
- --color-text-subtle: var(--color-primary-text-emphasis);
30
- --color-border-subtle: var(--color-primary-border-subtle);
31
-
32
- --alert-solid-bg: var(--color-solid);
33
- --alert-solid-color: var(--color-on-solid);
34
- --alert-border: var(--color-border);
35
- --alert-subtle-bg: var(--color-bg-subtle);
36
- --alert-subtle-color: var(--color-text-subtle);
37
- --alert-subtle-border:var(--color-border-subtle);
24
+ /* default color (no [color] attribute) — primary */
25
+ :host(:not([color])) {
26
+ --ae-color-solid: var(--ae-color-primary);
27
+ --ae-color-on-solid: var(--ae-color-text-main);
28
+ --ae-color-border: var(--ae-color-primary);
29
+ --ae-color-bg-subtle: var(--ae-color-primary-bg-subtle);
30
+ --ae-color-text-subtle: var(--ae-color-primary-text-emphasis);
31
+ --ae-color-border-subtle: var(--ae-color-primary-border-subtle);
38
32
  }
39
33
 
40
34
 
41
35
  :host([variant="faint"]) .alert {
42
- background-color: var(--alert-subtle-bg);
43
- color: var(--alert-subtle-color);
44
- border-color: var(--alert-subtle-border);
36
+ background-color: var(--ae-color-bg-subtle);
37
+ color: var(--ae-color-text-subtle);
38
+ border-color: var(--ae-color-border-subtle);
45
39
  }
46
40
 
47
41
  :host([variant="subtle"]) .alert {
48
- background-color: var(--alert-subtle-bg);
49
- color: var(--alert-subtle-color);
42
+ background-color: var(--ae-color-bg-subtle);
43
+ color: var(--ae-color-text-subtle);
50
44
  border-color: transparent;
51
45
  }
52
46
 
53
47
  :host([variant="filled"]) .alert {
54
- background-color: var(--alert-solid-bg);
55
- color: var(--alert-solid-color);
56
- border-color: var(--alert-solid-bg);
48
+ background-color: var(--ae-color-solid);
49
+ color: var(--ae-color-on-solid);
50
+ border-color: var(--ae-color-solid);
57
51
  }
58
52
 
59
53
  :host([variant="outlined"]) .alert {
60
54
  background-color: transparent;
61
- color: var(--alert-subtle-color);
62
- border-color: var(--alert-border);
55
+ color: var(--ae-color-text-subtle);
56
+ border-color: var(--ae-color-border);
63
57
  }
64
58
 
65
59
  :host([dismissible]) .alert {
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sources":["../../src/alert/alert.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport alertStyle from '../styles/components/alert.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { AlertColor, AlertSize, AlertVariant } from './defines';\n\n/**\n * Alert Component\n *\n * A customizable alert/notification component with multiple variants and sizes.\n * Supports dismissible alerts and icon display.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const alert = Alert.create({\n * variant: 'info',\n * dismissible: true\n * })\n * alert.textContent = 'This is an informational message'\n * document.body.appendChild(alert)\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-alert variant=\"info\">Information message</ae-alert>\n * <ae-alert variant=\"success\" dismissible>Operation successful!</ae-alert>\n * <ae-alert variant=\"warning\" size=\"sm\">Small warning</ae-alert>\n * ```\n */\nclass Alert extends AeicoComponent {\n static props: Props = {\n color: { type: String },\n variant: { type: String },\n size: { type: String },\n dismissible: { type: Boolean },\n invisible: { type: Boolean },\n closeText: { type: String },\n };\n\n protected static useStyles = ['alert'];\n protected static styles = [styleVariables, colorCSS, alertStyle];\n\n declare color?: AlertColor;\n declare variant?: AlertVariant;\n declare size?: AlertSize;\n declare dismissible?: boolean;\n declare invisible?: boolean;\n declare closeText?: string;\n\n protected render() {\n return html(({ div, slot, button, span }) => {\n div(\n {\n className: 'alert',\n role: 'alert',\n part: 'alert',\n style: { display: this.invisible ? 'none' : '' },\n },\n () => {\n slot();\n\n if (this.dismissible) {\n button(\n {\n className: 'alert-close',\n '@click': () => this._handleClose(),\n title: this.closeText || 'Close alert',\n },\n () => {\n span({ 'aria-hidden': 'true', textContent: '\\u00d7' });\n },\n );\n }\n },\n );\n });\n }\n\n show() {\n if (this.invisible) {\n this.invisible = false;\n }\n }\n\n hide() {\n this.invisible = true;\n }\n\n private _handleClose = () => {\n this.emit('alert-close', { detail: { target: this } });\n this.remove();\n };\n}\n\nAlert.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-alert': Alert;\n }\n}\n\nexport default Alert;\nexport type AlertProps = InferProps<typeof Alert>;\n"],"names":["styleVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,cAAc,eAAe;AAAA,EAAnC;AAAA;AA2DU,wCAAe,MAAM;AAC3B,WAAK,KAAK,eAAe,EAAE,QAAQ,EAAE,QAAQ,KAAA,GAAQ;AACrD,WAAK,OAAA;AAAA,IACP;AAAA;AAAA,EA1CU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,KAAK,MAAM,QAAQ,WAAW;AAC3C;AAAA,QACE;AAAA,UACE,WAAW;AAAA,UACX,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,KAAK,YAAY,SAAS,GAAA;AAAA,QAAG;AAAA,QAEjD,MAAM;AACJ,eAAA;AAEA,cAAI,KAAK,aAAa;AACpB;AAAA,cACE;AAAA,gBACE,WAAW;AAAA,gBACX,UAAU,MAAM,KAAK,aAAA;AAAA,gBACrB,OAAO,KAAK,aAAa;AAAA,cAAA;AAAA,cAE3B,MAAM;AACJ,qBAAK,EAAE,eAAe,QAAQ,aAAa,KAAU;AAAA,cACvD;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AACL,QAAI,KAAK,WAAW;AAClB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,OAAO;AACL,SAAK,YAAY;AAAA,EACnB;AAMF;AA9DE,cADI,OACG,SAAe;AAAA,EACpB,OAAO,EAAE,MAAM,OAAA;AAAA,EACf,SAAS,EAAE,MAAM,OAAA;AAAA,EACjB,MAAM,EAAE,MAAM,OAAA;AAAA,EACd,aAAa,EAAE,MAAM,QAAA;AAAA,EACrB,WAAW,EAAE,MAAM,QAAA;AAAA,EACnB,WAAW,EAAE,MAAM,OAAA;AAAO;AAG5B,cAVI,OAUa,aAAY,CAAC,OAAO;AACrC,cAXI,OAWa,UAAS,CAACA,WAAgB,UAAU,UAAU;AAsDjE,MAAM,SAAA;"}
1
+ {"version":3,"file":"alert.js","sources":["../../src/alert/alert.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport alertStyle from '../styles/components/alert.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { AlertColor, AlertSize, AlertVariant } from './defines';\n\n/**\n * Alert Component\n *\n * A customizable alert/notification component with multiple variants and sizes.\n * Supports dismissible alerts and icon display.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const alert = Alert.create({\n * variant: 'info',\n * dismissible: true\n * })\n * alert.textContent = 'This is an informational message'\n * document.body.appendChild(alert)\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-alert variant=\"info\">Information message</ae-alert>\n * <ae-alert variant=\"success\" dismissible>Operation successful!</ae-alert>\n * <ae-alert variant=\"warning\" size=\"sm\">Small warning</ae-alert>\n * ```\n */\nclass Alert extends AeicoComponent {\n static props: Props = {\n color: { type: String },\n variant: { type: String },\n size: { type: String },\n dismissible: { type: Boolean },\n invisible: { type: Boolean },\n closeText: { type: String },\n };\n\n protected static useStyles = ['alert'];\n protected static styles = [styleVariables, colorCSS, alertStyle];\n\n declare color?: AlertColor;\n declare variant?: AlertVariant;\n declare size?: AlertSize;\n declare dismissible?: boolean;\n declare invisible?: boolean;\n declare closeText?: string;\n\n protected render() {\n return html(({ div, slot, button, span }) => {\n div(\n {\n className: 'alert',\n role: 'alert',\n part: 'alert',\n style: { display: this.invisible ? 'none' : '' },\n },\n () => {\n slot();\n\n if (this.dismissible) {\n button(\n {\n className: 'alert-close',\n '@click': () => this._handleClose(),\n title: this.closeText || 'Close alert',\n },\n () => {\n span({ 'aria-hidden': 'true', textContent: '\\u00d7' });\n },\n );\n }\n },\n );\n });\n }\n\n show() {\n if (this.invisible) {\n this.invisible = false;\n }\n }\n\n hide() {\n this.invisible = true;\n }\n\n private _handleClose = () => {\n this.emit('alert-close', { detail: { target: this } });\n this.remove();\n };\n}\n\nAlert.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-alert': Alert;\n }\n}\n\nexport default Alert;\nexport type AlertProps = InferProps<typeof Alert>;\n"],"names":["styleVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,cAAc,eAAe;AAAA,EAAnC;AAAA;AA2DU,wCAAe,MAAM;AAC3B,WAAK,KAAK,eAAe,EAAE,QAAQ,EAAE,QAAQ,KAAA,GAAQ;AACrD,WAAK,OAAA;AAAA,IACP;AAAA;AAAA,EA1CU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,KAAK,MAAM,QAAQ,WAAW;AAC3C;AAAA,QACE;AAAA,UACE,WAAW;AAAA,UACX,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,KAAK,YAAY,SAAS,GAAA;AAAA,QAAG;AAAA,QAEjD,MAAM;AACJ,eAAA;AAEA,cAAI,KAAK,aAAa;AACpB;AAAA,cACE;AAAA,gBACE,WAAW;AAAA,gBACX,UAAU,MAAM,KAAK,aAAA;AAAA,gBACrB,OAAO,KAAK,aAAa;AAAA,cAAA;AAAA,cAE3B,MAAM;AACJ,qBAAK,EAAE,eAAe,QAAQ,aAAa,KAAU;AAAA,cACvD;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AACL,QAAI,KAAK,WAAW;AAClB,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,OAAO;AACL,SAAK,YAAY;AAAA,EACnB;AAMF;AA9DE,cADI,OACG,SAAe;AAAA,EACpB,OAAO,EAAE,MAAM,OAAA;AAAA,EACf,SAAS,EAAE,MAAM,OAAA;AAAA,EACjB,MAAM,EAAE,MAAM,OAAA;AAAA,EACd,aAAa,EAAE,MAAM,QAAA;AAAA,EACrB,WAAW,EAAE,MAAM,QAAA;AAAA,EACnB,WAAW,EAAE,MAAM,OAAA;AAAO;AAG5B,cAVI,OAUa,aAAY,CAAC,OAAO;AACrC,cAXI,OAWa,UAAS,CAACA,WAAgB,UAAU,UAAU;AAsDjE,MAAM,SAAA;"}
@@ -4,7 +4,7 @@ const size = require("./size.cjs");
4
4
  const color = require("./color.cjs");
5
5
  const aeicoComponent = require("./aeico-component.cjs");
6
6
  const aeico = require("aeico");
7
- const badgeStyle = ':host {\n display: inline-flex;\n align-items: center;\n --badge-solid-bg: var(--color-solid);\n --badge-solid-color: var(--color-on-solid);\n --badge-border: var(--color-border);\n --badge-accent: var(--color-accent);\n --badge-subtle-bg: var(--color-bg-subtle);\n --badge-subtle-color: var(--color-text-subtle);\n --badge-subtle-border: var(--color-border-subtle);\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.6em;\n border-radius: 4px;\n border: 1px solid var(--badge-solid-bg);\n background: var(--badge-solid-bg);\n color: var(--badge-solid-color);\n}\n\n/* Default (no [variant]) = filled */\n\n/* --- Variants --- */\n\n:host([variant="outlined"]) .badge {\n background: transparent;\n border-color: var(--badge-border);\n color: var(--badge-accent);\n}\n\n:host([variant="faint"]) .badge {\n background: var(--badge-subtle-bg);\n border-color: var(--badge-subtle-border);\n color: var(--badge-subtle-color);\n}\n\n:host([variant="subtle"]) .badge {\n background: var(--badge-subtle-bg);\n border-color: transparent;\n color: var(--badge-subtle-color);\n}\n\n:host([variant="text"]) .badge {\n background: transparent;\n border-color: transparent;\n color: var(--badge-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n:host([pill]) .badge {\n border-radius: 999px;\n}\n\n/* Icon slots */\n::slotted(ae-icon) {\n font-size: 1.1em;\n}\n';
7
+ const badgeStyle = ':host {\n display: inline-flex;\n align-items: center;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.6em;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n border: 1px solid var(--ae-color-solid);\n background: var(--ae-color-solid);\n color: var(--ae-color-on-solid);\n}\n\n/* Default (no [variant]) = filled */\n\n/* --- Variants --- */\n\n:host([variant="outlined"]) .badge {\n background: transparent;\n border-color: var(--ae-color-border);\n color: var(--ae-color-accent);\n}\n\n:host([variant="faint"]) .badge {\n background: var(--ae-color-bg-subtle);\n border-color: var(--ae-color-border-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="subtle"]) .badge {\n background: var(--ae-color-bg-subtle);\n border-color: transparent;\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="text"]) .badge {\n background: transparent;\n border-color: transparent;\n color: var(--ae-color-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n:host([pill]) .badge {\n border-radius: var(--ae-radius-pill);\n}\n\n/* Icon slots */\n::slotted(ae-icon) {\n font-size: 1.1em;\n}\n';
8
8
  var __create = Object.create;
9
9
  var __defProp = Object.defineProperty;
10
10
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -3,7 +3,7 @@ import { s as sizeCSS } from "./size.js";
3
3
  import { c as colorCSS } from "./color.js";
4
4
  import { A as AeicoComponent } from "./aeico-component.js";
5
5
  import { prop, html } from "aeico";
6
- const badgeStyle = ':host {\n display: inline-flex;\n align-items: center;\n --badge-solid-bg: var(--color-solid);\n --badge-solid-color: var(--color-on-solid);\n --badge-border: var(--color-border);\n --badge-accent: var(--color-accent);\n --badge-subtle-bg: var(--color-bg-subtle);\n --badge-subtle-color: var(--color-text-subtle);\n --badge-subtle-border: var(--color-border-subtle);\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.6em;\n border-radius: 4px;\n border: 1px solid var(--badge-solid-bg);\n background: var(--badge-solid-bg);\n color: var(--badge-solid-color);\n}\n\n/* Default (no [variant]) = filled */\n\n/* --- Variants --- */\n\n:host([variant="outlined"]) .badge {\n background: transparent;\n border-color: var(--badge-border);\n color: var(--badge-accent);\n}\n\n:host([variant="faint"]) .badge {\n background: var(--badge-subtle-bg);\n border-color: var(--badge-subtle-border);\n color: var(--badge-subtle-color);\n}\n\n:host([variant="subtle"]) .badge {\n background: var(--badge-subtle-bg);\n border-color: transparent;\n color: var(--badge-subtle-color);\n}\n\n:host([variant="text"]) .badge {\n background: transparent;\n border-color: transparent;\n color: var(--badge-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n:host([pill]) .badge {\n border-radius: 999px;\n}\n\n/* Icon slots */\n::slotted(ae-icon) {\n font-size: 1.1em;\n}\n';
6
+ const badgeStyle = ':host {\n display: inline-flex;\n align-items: center;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-family: inherit;\n font-weight: 500;\n white-space: nowrap;\n vertical-align: middle;\n line-height: 1.2;\n font-size: 1em;\n padding: 0.15em 0.6em;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n border: 1px solid var(--ae-color-solid);\n background: var(--ae-color-solid);\n color: var(--ae-color-on-solid);\n}\n\n/* Default (no [variant]) = filled */\n\n/* --- Variants --- */\n\n:host([variant="outlined"]) .badge {\n background: transparent;\n border-color: var(--ae-color-border);\n color: var(--ae-color-accent);\n}\n\n:host([variant="faint"]) .badge {\n background: var(--ae-color-bg-subtle);\n border-color: var(--ae-color-border-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="subtle"]) .badge {\n background: var(--ae-color-bg-subtle);\n border-color: transparent;\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="text"]) .badge {\n background: transparent;\n border-color: transparent;\n color: var(--ae-color-accent);\n padding-left: 0;\n padding-right: 0;\n}\n\n:host([pill]) .badge {\n border-radius: var(--ae-radius-pill);\n}\n\n/* Icon slots */\n::slotted(ae-icon) {\n font-size: 1.1em;\n}\n';
7
7
  var __create = Object.create;
8
8
  var __defProp = Object.defineProperty;
9
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -134,7 +134,7 @@ const style = `:host {
134
134
  .sep {
135
135
  display: inline-flex;
136
136
  align-items: center;
137
- color: var(--color-text-muted);
137
+ color: var(--ae-color-text-muted);
138
138
  padding: 0 0.35em;
139
139
  user-select: none;
140
140
  pointer-events: none;
@@ -151,32 +151,32 @@ const style = `:host {
151
151
  .label {
152
152
  display: inline-flex;
153
153
  align-items: center;
154
- color: var(--color-text-muted);
154
+ color: var(--ae-color-text-muted);
155
155
  }
156
156
 
157
157
  /* Current page — last item */
158
158
  :host([aria-current="page"]) .label {
159
- color: var(--color-text-main);
159
+ color: var(--ae-color-text-main);
160
160
  font-weight: 500;
161
161
  cursor: default;
162
162
  }
163
163
 
164
164
  /* Link items */
165
165
  .label a {
166
- color: var(--color-accent, var(--color-text-link));
166
+ color: var(--ae-color-accent, var(--ae-color-text-link));
167
167
  text-decoration: none;
168
168
  outline: none;
169
169
  }
170
170
 
171
171
  .label a:hover {
172
- color: var(--color-accent-hover, var(--color-text-link-hover));
172
+ color: var(--ae-color-accent-hover, var(--ae-color-text-link-hover));
173
173
  text-decoration: underline;
174
174
  }
175
175
 
176
176
  .label a:focus-visible {
177
- outline: 2px solid var(--color-accent, var(--focus-ring-color));
177
+ outline: 2px solid var(--ae-color-accent, var(--ae-focus-ring-color));
178
178
  outline-offset: 2px;
179
- border-radius: 2px;
179
+ border-radius: var(--ae-radius-xs);
180
180
  }
181
181
  `;
182
182
  var __create = Object.create;
@@ -133,7 +133,7 @@ const style = `:host {
133
133
  .sep {
134
134
  display: inline-flex;
135
135
  align-items: center;
136
- color: var(--color-text-muted);
136
+ color: var(--ae-color-text-muted);
137
137
  padding: 0 0.35em;
138
138
  user-select: none;
139
139
  pointer-events: none;
@@ -150,32 +150,32 @@ const style = `:host {
150
150
  .label {
151
151
  display: inline-flex;
152
152
  align-items: center;
153
- color: var(--color-text-muted);
153
+ color: var(--ae-color-text-muted);
154
154
  }
155
155
 
156
156
  /* Current page — last item */
157
157
  :host([aria-current="page"]) .label {
158
- color: var(--color-text-main);
158
+ color: var(--ae-color-text-main);
159
159
  font-weight: 500;
160
160
  cursor: default;
161
161
  }
162
162
 
163
163
  /* Link items */
164
164
  .label a {
165
- color: var(--color-accent, var(--color-text-link));
165
+ color: var(--ae-color-accent, var(--ae-color-text-link));
166
166
  text-decoration: none;
167
167
  outline: none;
168
168
  }
169
169
 
170
170
  .label a:hover {
171
- color: var(--color-accent-hover, var(--color-text-link-hover));
171
+ color: var(--ae-color-accent-hover, var(--ae-color-text-link-hover));
172
172
  text-decoration: underline;
173
173
  }
174
174
 
175
175
  .label a:focus-visible {
176
- outline: 2px solid var(--color-accent, var(--focus-ring-color));
176
+ outline: 2px solid var(--ae-color-accent, var(--ae-focus-ring-color));
177
177
  outline-offset: 2px;
178
- border-radius: 2px;
178
+ border-radius: var(--ae-radius-xs);
179
179
  }
180
180
  `;
181
181
  var __create = Object.create;
@@ -6,17 +6,6 @@ const aeicoComponent = require("./aeico-component.cjs");
6
6
  const aeico = require("aeico");
7
7
  const buttonStyle = `:host {
8
8
  display: inline-block;
9
- --btn-solid-bg: var(--color-solid);
10
- --btn-solid-bg-hover: var(--color-solid-hover);
11
- --btn-solid-bg-active: var(--color-solid-active);
12
- --btn-solid-color: var(--color-on-solid);
13
- --btn-solid-color-hover: var(--color-on-solid-hover);
14
- --btn-border: var(--color-border);
15
- --btn-border-hover: var(--color-border-hover);
16
- --btn-accent: var(--color-accent);
17
- --btn-accent-hover: var(--color-accent-hover);
18
- --btn-subtle-bg: var(--color-subtle);
19
- --btn-subtle-bg-hover: var(--color-subtle-hover);
20
9
  }
21
10
 
22
11
  button {
@@ -37,100 +26,100 @@ button {
37
26
  padding: 0.429em 1.071em;
38
27
  font-size: 1em;
39
28
  line-height: 1.5;
40
- border-radius: var(--_btn-r-tl, 4px) var(--_btn-r-tr, 4px) var(--_btn-r-br, 4px) var(--_btn-r-bl, 4px);
29
+ border-radius: var(--ae-border-radius, var(--_btn-r-tl, var(--ae-radius-sm)) var(--_btn-r-tr, var(--ae-radius-sm)) var(--_btn-r-br, var(--ae-radius-sm)) var(--_btn-r-bl, var(--ae-radius-sm)));
41
30
  min-width: 4.571em;
42
31
  height: 2.286em;
43
32
  width: 100%;
44
33
 
45
- background: var(--btn-solid-bg);
46
- border: 1px solid var(--btn-solid-bg);
47
- color: var(--btn-solid-color);
34
+ background: var(--ae-color-solid);
35
+ border: 1px solid var(--ae-color-solid);
36
+ color: var(--ae-color-on-solid);
48
37
  }
49
38
 
50
39
  button:focus { outline: none; }
51
40
  button:active { transform: translateY(1px); }
52
41
 
53
42
  button:hover:not(:disabled) {
54
- background: var(--btn-solid-bg-hover);
55
- border-color: var(--btn-border-hover);
56
- color: var(--btn-solid-color-hover, var(--btn-solid-color));
43
+ background: var(--ae-color-solid-hover);
44
+ border-color: var(--ae-color-border-hover);
45
+ color: var(--ae-color-on-solid-hover, var(--ae-color-on-solid));
57
46
  }
58
47
 
59
- button:active:not(:disabled) { background: var(--btn-solid-bg-active); }
48
+ button:active:not(:disabled) { background: var(--ae-color-solid-active); }
60
49
 
61
50
  button:disabled {
62
51
  opacity: 0.5;
63
52
  cursor: not-allowed;
64
53
  }
65
54
 
66
- :host([size="xs"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }
67
- :host([size="sm"]) button { border-radius: var(--_btn-r-tl, 3px) var(--_btn-r-tr, 3px) var(--_btn-r-br, 3px) var(--_btn-r-bl, 3px); }
55
+ :host([size="xs"]) button { border-radius: var(--ae-border-radius, var(--_btn-r-tl, var(--ae-radius-xs)) var(--_btn-r-tr, var(--ae-radius-xs)) var(--_btn-r-br, var(--ae-radius-xs)) var(--_btn-r-bl, var(--ae-radius-xs))); }
56
+ :host([size="sm"]) button { border-radius: var(--ae-border-radius, var(--_btn-r-tl, var(--ae-radius-xs)) var(--_btn-r-tr, var(--ae-radius-xs)) var(--_btn-r-br, var(--ae-radius-xs)) var(--_btn-r-bl, var(--ae-radius-xs))); }
68
57
 
69
58
  /* --- Variants --- */
70
59
 
71
60
  :host([variant="outlined"]) button {
72
61
  background: transparent;
73
- border-color: var(--btn-border);
74
- color: var(--btn-accent);
62
+ border-color: var(--ae-color-border);
63
+ color: var(--ae-color-accent);
75
64
  }
76
65
 
77
66
  :host([variant="outlined"]) button:hover:not(:disabled) {
78
- background: var(--btn-subtle-bg);
79
- border-color: var(--btn-border-hover);
80
- color: var(--btn-accent-hover);
67
+ background: var(--ae-color-subtle);
68
+ border-color: var(--ae-color-border-hover);
69
+ color: var(--ae-color-accent-hover);
81
70
  }
82
71
 
83
72
  :host([variant="outlined"]) button:active:not(:disabled) {
84
- background: var(--btn-subtle-bg-hover);
73
+ background: var(--ae-color-subtle-hover);
85
74
  }
86
75
 
87
76
  :host([variant="subtle"]) button {
88
- background: var(--btn-subtle-bg);
77
+ background: var(--ae-color-subtle);
89
78
  border-color: transparent;
90
- color: var(--btn-accent);
79
+ color: var(--ae-color-accent);
91
80
  }
92
81
 
93
82
  :host([variant="subtle"]) button:hover:not(:disabled) {
94
- background: var(--btn-subtle-bg-hover);
95
- color: var(--btn-accent-hover);
83
+ background: var(--ae-color-subtle-hover);
84
+ color: var(--ae-color-accent-hover);
96
85
  }
97
86
 
98
87
  :host([variant="subtle"]) button:active:not(:disabled) {
99
- background: var(--btn-subtle-bg-hover);
88
+ background: var(--ae-color-subtle-hover);
100
89
  }
101
90
 
102
91
  :host([variant="faint"]) button {
103
- background: var(--btn-subtle-bg);
104
- border-color: var(--btn-border);
105
- color: var(--btn-accent);
92
+ background: var(--ae-color-subtle);
93
+ border-color: var(--ae-color-border);
94
+ color: var(--ae-color-accent);
106
95
  }
107
96
 
108
97
  :host([variant="faint"]) button:hover:not(:disabled) {
109
- background: var(--btn-subtle-bg-hover);
110
- border-color: var(--btn-border-hover);
111
- color: var(--btn-accent-hover);
98
+ background: var(--ae-color-subtle-hover);
99
+ border-color: var(--ae-color-border-hover);
100
+ color: var(--ae-color-accent-hover);
112
101
  }
113
102
 
114
103
  :host([variant="faint"]) button:active:not(:disabled) {
115
- background: var(--btn-subtle-bg-hover);
104
+ background: var(--ae-color-subtle-hover);
116
105
  }
117
106
 
118
107
  :host([variant="text"]) button {
119
108
  background: transparent;
120
109
  border-color: transparent;
121
- color: var(--btn-accent);
110
+ color: var(--ae-color-accent);
122
111
  min-width: auto;
123
112
  padding-left: 4px;
124
113
  padding-right: 4px;
125
114
  }
126
115
 
127
116
  :host([variant="text"]) button:hover:not(:disabled) {
128
- background: var(--btn-subtle-bg);
129
- color: var(--btn-accent-hover);
117
+ background: var(--ae-color-subtle);
118
+ color: var(--ae-color-accent-hover);
130
119
  }
131
120
 
132
121
  :host([variant="text"]) button:active:not(:disabled) {
133
- background: var(--btn-subtle-bg-hover);
122
+ background: var(--ae-color-subtle-hover);
134
123
  }
135
124
 
136
125
  /* Icon-only: single ae-icon child → square compact layout */
@@ -139,7 +128,7 @@ button:disabled {
139
128
  }
140
129
 
141
130
  :host([icon-only]:not([size])) {
142
- font-size: var(--size-m);
131
+ font-size: var(--ae-size-m);
143
132
  }
144
133
 
145
134
  :host([icon-only]) button {
@@ -155,9 +144,9 @@ button:disabled {
155
144
  }
156
145
 
157
146
  :host([active]) button {
158
- background: var(--btn-solid-bg-active);
159
- border-color: var(--btn-border-hover);
160
- color: var(--btn-solid-color-hover, var(--btn-solid-color));
147
+ background: var(--ae-color-solid-active);
148
+ border-color: var(--ae-color-border-hover);
149
+ color: var(--ae-color-on-solid-hover, var(--ae-color-on-solid));
161
150
  }
162
151
 
163
152
  .btn-icon {
@@ -168,7 +157,7 @@ button:disabled {
168
157
  display: inline-flex;
169
158
  align-items: center;
170
159
  justify-content: center;
171
- border-radius: 4px;
160
+ border-radius: var(--ae-radius-sm);
172
161
  }
173
162
 
174
163
  .btn-icon.btn-lg {
@@ -177,7 +166,7 @@ button:disabled {
177
166
  }
178
167
 
179
168
  .btn-circle {
180
- border-radius: 50%;
169
+ border-radius: var(--ae-radius-circle);
181
170
  }
182
171
 
183
172
  :host([block]) {
@@ -197,7 +186,7 @@ button.btn-loading::before {
197
186
  height: 1em;
198
187
  border: 2px solid currentColor;
199
188
  border-top-color: transparent;
200
- border-radius: 50%;
189
+ border-radius: var(--ae-radius-circle);
201
190
  animation: btn-spin 0.6s linear infinite;
202
191
  color: currentColor;
203
192
  opacity: 0.8;