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
@@ -6,7 +6,7 @@ const actionButton = require("./action-button.cjs");
6
6
  const aeico = require("aeico");
7
7
  const variables = require("./variables.cjs");
8
8
  const size = require("./size.cjs");
9
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n --input-field-gap: 4px;\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-border-radius: 2px;\n --input-border-color: var(--border-subtle);\n --input-border-color-hover: var(--border-default);\n --input-border-color-focus: var(--border-focus);\n --input-bg: var(--surface-base);\n --input-bg-hover: var(--surface-raised);\n --input-bg-focus: var(--surface-raised);\n --input-color: var(--color-text-muted);\n --input-placeholder-color: var(--color-text-disabled);\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--input-border-color);\n border-radius: var(--input-border-radius);\n background: var(--input-bg);\n color: var(--input-color);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--input-placeholder-color);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--input-border-color-focus);\n background: var(--input-bg-focus);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--input-border-color-hover);\n background: var(--input-bg-hover);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host([error]) input {\n border-color: var(--field-error-color, var(--red));\n}\n\n:host([error]) input:hover:not(:focus),\n:host([error]) input:focus {\n border-color: var(--field-error-color, var(--red));\n}\n\n.input-container:has(.action-controls) input {\n border-radius: var(--input-border-radius) 0 0 var(--input-border-radius);\n}\n";
9
+ const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n --input-field-gap: 4px;\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host([error]) input {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) input:hover:not(:focus),\n:host([error]) input:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n.input-container:has(.action-controls) input {\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\n}\n";
10
10
  class TextInput extends actionButton.AeicoField {
11
11
  constructor() {
12
12
  super(...arguments);
@@ -5,7 +5,7 @@ import { A as AeicoField, f as fieldLabelCSS, a as actionButtonCSS } from "./act
5
5
  import { html } from "aeico";
6
6
  import { v as variables } from "./variables.js";
7
7
  import { s as sizeCSS } from "./size.js";
8
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n --input-field-gap: 4px;\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-border-radius: 2px;\n --input-border-color: var(--border-subtle);\n --input-border-color-hover: var(--border-default);\n --input-border-color-focus: var(--border-focus);\n --input-bg: var(--surface-base);\n --input-bg-hover: var(--surface-raised);\n --input-bg-focus: var(--surface-raised);\n --input-color: var(--color-text-muted);\n --input-placeholder-color: var(--color-text-disabled);\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--input-border-color);\n border-radius: var(--input-border-radius);\n background: var(--input-bg);\n color: var(--input-color);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--input-placeholder-color);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--input-border-color-focus);\n background: var(--input-bg-focus);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--input-border-color-hover);\n background: var(--input-bg-hover);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host([error]) input {\n border-color: var(--field-error-color, var(--red));\n}\n\n:host([error]) input:hover:not(:focus),\n:host([error]) input:focus {\n border-color: var(--field-error-color, var(--red));\n}\n\n.input-container:has(.action-controls) input {\n border-radius: var(--input-border-radius) 0 0 var(--input-border-radius);\n}\n";
8
+ const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n --input-field-gap: 4px;\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host([error]) input {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) input:hover:not(:focus),\n:host([error]) input:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n.input-container:has(.action-controls) input {\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\n}\n";
9
9
  class TextInput extends AeicoField {
10
10
  constructor() {
11
11
  super(...arguments);
@@ -3,7 +3,7 @@ const actionButton = require("./action-button.cjs");
3
3
  const aeico = require("aeico");
4
4
  const variables = require("./variables.cjs");
5
5
  const size = require("./size.cjs");
6
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n --textarea-font-size: 1em;\n --textarea-padding: 0.333em 0.583em;\n --textarea-border-width: 1px;\n --textarea-border-radius: 2px;\n --textarea-border-color: var(--border-subtle);\n --textarea-border-color-hover: var(--border-default);\n --textarea-border-color-focus: var(--border-focus);\n --textarea-bg: var(--surface-base);\n --textarea-bg-hover: var(--surface-raised);\n --textarea-bg-focus: var(--surface-raised);\n --textarea-color: var(--color-text-muted);\n --textarea-placeholder-color: var(--color-text-disabled);\n --textarea-transition: border-color 0.12s, background 0.12s;\n}\n\n.textarea-container {\n display: flex;\n align-items: flex-start;\n gap: 4px;\n width: 100%;\n}\n\ntextarea {\n flex: 1;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n font-size: var(--textarea-font-size);\n font-family: inherit;\n line-height: 1.5;\n padding: var(--textarea-padding);\n border: var(--textarea-border-width) solid var(--textarea-border-color);\n border-radius: var(--textarea-border-radius);\n background: var(--textarea-bg);\n color: var(--textarea-color);\n transition: var(--textarea-transition);\n resize: vertical;\n}\n\ntextarea::placeholder {\n color: var(--textarea-placeholder-color);\n}\n\ntextarea:focus {\n outline: none;\n border-color: var(--textarea-border-color-focus);\n background: var(--textarea-bg-focus);\n}\n\ntextarea:hover:not(:focus) {\n border-color: var(--textarea-border-color-hover);\n background: var(--textarea-bg-hover);\n}\n\ntextarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n resize: none;\n}\n\n/* Error state */\n:host([error]) textarea {\n border-color: var(--field-error-color, var(--red));\n}\n\n:host([error]) textarea:hover:not(:focus),\n:host([error]) textarea:focus {\n border-color: var(--field-error-color, var(--red));\n}\n";
6
+ const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n\n --textarea-font-size: 1em;\n --textarea-padding: 0.333em 0.583em;\n --textarea-border-width: 1px;\n --textarea-transition: border-color 0.12s, background 0.12s;\n}\n\n.textarea-container {\n display: flex;\n align-items: flex-start;\n gap: 4px;\n width: 100%;\n}\n\ntextarea {\n flex: 1;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n font-size: var(--textarea-font-size);\n font-family: inherit;\n line-height: 1.5;\n padding: var(--textarea-padding);\n border: var(--textarea-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--textarea-transition);\n resize: vertical;\n}\n\ntextarea::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ntextarea:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ntextarea:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ntextarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n resize: none;\n}\n\n/* Error state */\n:host([error]) textarea {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) textarea:hover:not(:focus),\n:host([error]) textarea:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n";
7
7
  var __create = Object.create;
8
8
  var __defProp = Object.defineProperty;
9
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -2,7 +2,7 @@ import { A as AeicoField, f as fieldLabelCSS, a as actionButtonCSS } from "./act
2
2
  import { prop, html } from "aeico";
3
3
  import { v as variables } from "./variables.js";
4
4
  import { s as sizeCSS } from "./size.js";
5
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n --textarea-font-size: 1em;\n --textarea-padding: 0.333em 0.583em;\n --textarea-border-width: 1px;\n --textarea-border-radius: 2px;\n --textarea-border-color: var(--border-subtle);\n --textarea-border-color-hover: var(--border-default);\n --textarea-border-color-focus: var(--border-focus);\n --textarea-bg: var(--surface-base);\n --textarea-bg-hover: var(--surface-raised);\n --textarea-bg-focus: var(--surface-raised);\n --textarea-color: var(--color-text-muted);\n --textarea-placeholder-color: var(--color-text-disabled);\n --textarea-transition: border-color 0.12s, background 0.12s;\n}\n\n.textarea-container {\n display: flex;\n align-items: flex-start;\n gap: 4px;\n width: 100%;\n}\n\ntextarea {\n flex: 1;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n font-size: var(--textarea-font-size);\n font-family: inherit;\n line-height: 1.5;\n padding: var(--textarea-padding);\n border: var(--textarea-border-width) solid var(--textarea-border-color);\n border-radius: var(--textarea-border-radius);\n background: var(--textarea-bg);\n color: var(--textarea-color);\n transition: var(--textarea-transition);\n resize: vertical;\n}\n\ntextarea::placeholder {\n color: var(--textarea-placeholder-color);\n}\n\ntextarea:focus {\n outline: none;\n border-color: var(--textarea-border-color-focus);\n background: var(--textarea-bg-focus);\n}\n\ntextarea:hover:not(:focus) {\n border-color: var(--textarea-border-color-hover);\n background: var(--textarea-bg-hover);\n}\n\ntextarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n resize: none;\n}\n\n/* Error state */\n:host([error]) textarea {\n border-color: var(--field-error-color, var(--red));\n}\n\n:host([error]) textarea:hover:not(:focus),\n:host([error]) textarea:focus {\n border-color: var(--field-error-color, var(--red));\n}\n";
5
+ const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n\n --textarea-font-size: 1em;\n --textarea-padding: 0.333em 0.583em;\n --textarea-border-width: 1px;\n --textarea-transition: border-color 0.12s, background 0.12s;\n}\n\n.textarea-container {\n display: flex;\n align-items: flex-start;\n gap: 4px;\n width: 100%;\n}\n\ntextarea {\n flex: 1;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n font-size: var(--textarea-font-size);\n font-family: inherit;\n line-height: 1.5;\n padding: var(--textarea-padding);\n border: var(--textarea-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--textarea-transition);\n resize: vertical;\n}\n\ntextarea::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ntextarea:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ntextarea:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ntextarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n resize: none;\n}\n\n/* Error state */\n:host([error]) textarea {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) textarea:hover:not(:focus),\n:host([error]) textarea:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n";
6
6
  var __create = Object.create;
7
7
  var __defProp = Object.defineProperty;
8
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -8,19 +8,18 @@ const tooltipStyle = `:host {
8
8
  vertical-align: middle;
9
9
 
10
10
  --ae-tooltip-z-index: 1000;
11
- --ae-tooltip-bg: var(--dark, #343a40);
11
+ --ae-tooltip-bg: var(--ae-dark, #343a40);
12
12
  --ae-tooltip-color: #fff;
13
13
  --ae-tooltip-padding: 0.3125rem 0.625rem;
14
14
  --ae-tooltip-font-size: 0.8125rem;
15
- --ae-tooltip-border-radius: 4px;
16
15
  --ae-tooltip-arrow-size: 5px;
17
16
  --ae-tooltip-gap: 6px;
18
17
  --ae-tooltip-max-width: 20rem;
19
18
  }
20
19
 
21
20
  :host-context([theme="dark"]) {
22
- --ae-tooltip-bg: var(--light, #f8f9fa);
23
- --ae-tooltip-color: var(--dark, #343a40);
21
+ --ae-tooltip-bg: var(--ae-light, #f8f9fa);
22
+ --ae-tooltip-color: var(--ae-dark, #343a40);
24
23
  }
25
24
 
26
25
  .tooltip-panel {
@@ -32,7 +31,7 @@ const tooltipStyle = `:host {
32
31
  padding: var(--ae-tooltip-padding);
33
32
  font-size: var(--ae-tooltip-font-size);
34
33
  font-family: inherit;
35
- border-radius: var(--ae-tooltip-border-radius);
34
+ border-radius: var(--ae-border-radius, var(--ae-radius-sm));
36
35
  line-height: 1.4;
37
36
  white-space: nowrap;
38
37
  max-width: var(--ae-tooltip-max-width);
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.cjs","sources":["../../src/tooltip/tooltip.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport tooltipStyle from '../styles/components/tooltip.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html, prop } from 'aeico';\nimport type { TooltipPlacement, TooltipTrigger } from './defines';\n\n/**\n * Tooltip Component\n *\n * A floating label that appears on hover or focus around its trigger content.\n * Wrap any element in `<ae-tooltip>` and provide content via the `content`\n * attribute (plain text) or the `tooltip` named slot (rich HTML).\n *\n * @example\n * ```html\n * <ae-tooltip content=\"Save file\">\n * <ae-button>Save</ae-button>\n * </ae-tooltip>\n *\n * <ae-tooltip placement=\"bottom-start\">\n * <span slot=\"tooltip\"><strong>Bold</strong> tip</span>\n * <ae-icon-button name=\"info\"></ae-icon-button>\n * </ae-tooltip>\n * ```\n */\nclass Tooltip extends AeicoComponent {\n protected static styles = [styleVariables, tooltipStyle];\n\n @prop({ type: String })\n accessor content: string | undefined;\n\n @prop({ type: String })\n accessor placement: TooltipPlacement = 'top';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor trigger: TooltipTrigger = 'hover';\n\n @prop({ type: Boolean })\n accessor open: boolean = false;\n\n private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('mouseenter', this._handleMouseEnter);\n this.listen('mouseleave', this._handleMouseLeave);\n this.listen('focusin', this._handleFocusin);\n this.listen('focusout', this._handleFocusout);\n this.listen('click', this._handleClick);\n\n this._outsideClickHandler = (e: MouseEvent) => {\n if (!this.open) return;\n if (!e.composedPath().includes(this)) this.open = false;\n };\n document.addEventListener('click', this._outsideClickHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._outsideClickHandler) {\n document.removeEventListener('click', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n }\n\n private _handleMouseEnter = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleMouseLeave = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleFocusin = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleFocusout = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleClick = () => {\n if (this.trigger !== 'click') return;\n if (this.disabled) return;\n this.open = !this.open;\n };\n\n private _updatePosition() {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.tooltip-panel');\n if (!panel) return;\n\n const host = this.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const gap = 6; // Match --ae-tooltip-gap: 6px\n const pw = panelRect.width;\n const ph = panelRect.height;\n\n let top: number;\n let left: number;\n\n switch (this.placement) {\n case 'top-start':\n top = host.top - ph - gap;\n left = host.left;\n break;\n case 'top-end':\n top = host.top - ph - gap;\n left = host.right - pw;\n break;\n case 'bottom':\n top = host.bottom + gap;\n left = host.left + host.width / 2 - pw / 2;\n break;\n case 'bottom-start':\n top = host.bottom + gap;\n left = host.left;\n break;\n case 'bottom-end':\n top = host.bottom + gap;\n left = host.right - pw;\n break;\n case 'left':\n top = host.top + host.height / 2 - ph / 2;\n left = host.left - pw - gap;\n break;\n case 'right':\n top = host.top + host.height / 2 - ph / 2;\n left = host.right + gap;\n break;\n default: // 'top'\n top = host.top - ph - gap;\n left = host.left + host.width / 2 - pw / 2;\n }\n\n panel.style.top = `${top}px`;\n panel.style.left = `${left}px`;\n }\n\n protected onUpdated(changedProps: Map<string, unknown>) {\n if (changedProps.has('open') && this.open) {\n this._updatePosition();\n }\n }\n\n protected render() {\n return html(({ div, span, slot }) => {\n slot();\n div(\n {\n className: `tooltip-panel placement-${this.placement ?? 'top'}`,\n role: 'tooltip',\n 'aria-hidden': String(!this.open),\n },\n () => {\n slot({ name: 'tooltip' }, () => {\n span({ textContent: this.content ?? '' });\n });\n },\n );\n });\n }\n}\n\nTooltip.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-tooltip': Tooltip;\n }\n}\n\nexport type TooltipProps = InferProps<typeof Tooltip>;\nexport default Tooltip;\n"],"names":["AeicoComponent","prop","_a","html","styleVariables"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.cjs","sources":["../../src/tooltip/tooltip.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport tooltipStyle from '../styles/components/tooltip.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html, prop } from 'aeico';\nimport type { TooltipPlacement, TooltipTrigger } from './defines';\n\n/**\n * Tooltip Component\n *\n * A floating label that appears on hover or focus around its trigger content.\n * Wrap any element in `<ae-tooltip>` and provide content via the `content`\n * attribute (plain text) or the `tooltip` named slot (rich HTML).\n *\n * @example\n * ```html\n * <ae-tooltip content=\"Save file\">\n * <ae-button>Save</ae-button>\n * </ae-tooltip>\n *\n * <ae-tooltip placement=\"bottom-start\">\n * <span slot=\"tooltip\"><strong>Bold</strong> tip</span>\n * <ae-icon-button name=\"info\"></ae-icon-button>\n * </ae-tooltip>\n * ```\n */\nclass Tooltip extends AeicoComponent {\n protected static styles = [styleVariables, tooltipStyle];\n\n @prop({ type: String })\n accessor content: string | undefined;\n\n @prop({ type: String })\n accessor placement: TooltipPlacement = 'top';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor trigger: TooltipTrigger = 'hover';\n\n @prop({ type: Boolean })\n accessor open: boolean = false;\n\n private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('mouseenter', this._handleMouseEnter);\n this.listen('mouseleave', this._handleMouseLeave);\n this.listen('focusin', this._handleFocusin);\n this.listen('focusout', this._handleFocusout);\n this.listen('click', this._handleClick);\n\n this._outsideClickHandler = (e: MouseEvent) => {\n if (!this.open) return;\n if (!e.composedPath().includes(this)) this.open = false;\n };\n document.addEventListener('click', this._outsideClickHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._outsideClickHandler) {\n document.removeEventListener('click', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n }\n\n private _handleMouseEnter = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleMouseLeave = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleFocusin = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleFocusout = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleClick = () => {\n if (this.trigger !== 'click') return;\n if (this.disabled) return;\n this.open = !this.open;\n };\n\n private _updatePosition() {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.tooltip-panel');\n if (!panel) return;\n\n const host = this.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const gap = 6; // Match --ae-tooltip-gap: 6px\n const pw = panelRect.width;\n const ph = panelRect.height;\n\n let top: number;\n let left: number;\n\n switch (this.placement) {\n case 'top-start':\n top = host.top - ph - gap;\n left = host.left;\n break;\n case 'top-end':\n top = host.top - ph - gap;\n left = host.right - pw;\n break;\n case 'bottom':\n top = host.bottom + gap;\n left = host.left + host.width / 2 - pw / 2;\n break;\n case 'bottom-start':\n top = host.bottom + gap;\n left = host.left;\n break;\n case 'bottom-end':\n top = host.bottom + gap;\n left = host.right - pw;\n break;\n case 'left':\n top = host.top + host.height / 2 - ph / 2;\n left = host.left - pw - gap;\n break;\n case 'right':\n top = host.top + host.height / 2 - ph / 2;\n left = host.right + gap;\n break;\n default: // 'top'\n top = host.top - ph - gap;\n left = host.left + host.width / 2 - pw / 2;\n }\n\n panel.style.top = `${top}px`;\n panel.style.left = `${left}px`;\n }\n\n protected onUpdated(changedProps: Map<string, unknown>) {\n if (changedProps.has('open') && this.open) {\n this._updatePosition();\n }\n }\n\n protected render() {\n return html(({ div, span, slot }) => {\n slot();\n div(\n {\n className: `tooltip-panel placement-${this.placement ?? 'top'}`,\n role: 'tooltip',\n 'aria-hidden': String(!this.open),\n },\n () => {\n slot({ name: 'tooltip' }, () => {\n span({ textContent: this.content ?? '' });\n });\n },\n );\n });\n }\n}\n\nTooltip.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-tooltip': Tooltip;\n }\n}\n\nexport type TooltipProps = InferProps<typeof Tooltip>;\nexport default Tooltip;\n"],"names":["AeicoComponent","prop","_a","html","styleVariables"],"mappings":"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"}
@@ -7,19 +7,18 @@ const tooltipStyle = `:host {
7
7
  vertical-align: middle;
8
8
 
9
9
  --ae-tooltip-z-index: 1000;
10
- --ae-tooltip-bg: var(--dark, #343a40);
10
+ --ae-tooltip-bg: var(--ae-dark, #343a40);
11
11
  --ae-tooltip-color: #fff;
12
12
  --ae-tooltip-padding: 0.3125rem 0.625rem;
13
13
  --ae-tooltip-font-size: 0.8125rem;
14
- --ae-tooltip-border-radius: 4px;
15
14
  --ae-tooltip-arrow-size: 5px;
16
15
  --ae-tooltip-gap: 6px;
17
16
  --ae-tooltip-max-width: 20rem;
18
17
  }
19
18
 
20
19
  :host-context([theme="dark"]) {
21
- --ae-tooltip-bg: var(--light, #f8f9fa);
22
- --ae-tooltip-color: var(--dark, #343a40);
20
+ --ae-tooltip-bg: var(--ae-light, #f8f9fa);
21
+ --ae-tooltip-color: var(--ae-dark, #343a40);
23
22
  }
24
23
 
25
24
  .tooltip-panel {
@@ -31,7 +30,7 @@ const tooltipStyle = `:host {
31
30
  padding: var(--ae-tooltip-padding);
32
31
  font-size: var(--ae-tooltip-font-size);
33
32
  font-family: inherit;
34
- border-radius: var(--ae-tooltip-border-radius);
33
+ border-radius: var(--ae-border-radius, var(--ae-radius-sm));
35
34
  line-height: 1.4;
36
35
  white-space: nowrap;
37
36
  max-width: var(--ae-tooltip-max-width);
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../src/tooltip/tooltip.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport tooltipStyle from '../styles/components/tooltip.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html, prop } from 'aeico';\nimport type { TooltipPlacement, TooltipTrigger } from './defines';\n\n/**\n * Tooltip Component\n *\n * A floating label that appears on hover or focus around its trigger content.\n * Wrap any element in `<ae-tooltip>` and provide content via the `content`\n * attribute (plain text) or the `tooltip` named slot (rich HTML).\n *\n * @example\n * ```html\n * <ae-tooltip content=\"Save file\">\n * <ae-button>Save</ae-button>\n * </ae-tooltip>\n *\n * <ae-tooltip placement=\"bottom-start\">\n * <span slot=\"tooltip\"><strong>Bold</strong> tip</span>\n * <ae-icon-button name=\"info\"></ae-icon-button>\n * </ae-tooltip>\n * ```\n */\nclass Tooltip extends AeicoComponent {\n protected static styles = [styleVariables, tooltipStyle];\n\n @prop({ type: String })\n accessor content: string | undefined;\n\n @prop({ type: String })\n accessor placement: TooltipPlacement = 'top';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor trigger: TooltipTrigger = 'hover';\n\n @prop({ type: Boolean })\n accessor open: boolean = false;\n\n private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('mouseenter', this._handleMouseEnter);\n this.listen('mouseleave', this._handleMouseLeave);\n this.listen('focusin', this._handleFocusin);\n this.listen('focusout', this._handleFocusout);\n this.listen('click', this._handleClick);\n\n this._outsideClickHandler = (e: MouseEvent) => {\n if (!this.open) return;\n if (!e.composedPath().includes(this)) this.open = false;\n };\n document.addEventListener('click', this._outsideClickHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._outsideClickHandler) {\n document.removeEventListener('click', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n }\n\n private _handleMouseEnter = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleMouseLeave = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleFocusin = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleFocusout = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleClick = () => {\n if (this.trigger !== 'click') return;\n if (this.disabled) return;\n this.open = !this.open;\n };\n\n private _updatePosition() {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.tooltip-panel');\n if (!panel) return;\n\n const host = this.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const gap = 6; // Match --ae-tooltip-gap: 6px\n const pw = panelRect.width;\n const ph = panelRect.height;\n\n let top: number;\n let left: number;\n\n switch (this.placement) {\n case 'top-start':\n top = host.top - ph - gap;\n left = host.left;\n break;\n case 'top-end':\n top = host.top - ph - gap;\n left = host.right - pw;\n break;\n case 'bottom':\n top = host.bottom + gap;\n left = host.left + host.width / 2 - pw / 2;\n break;\n case 'bottom-start':\n top = host.bottom + gap;\n left = host.left;\n break;\n case 'bottom-end':\n top = host.bottom + gap;\n left = host.right - pw;\n break;\n case 'left':\n top = host.top + host.height / 2 - ph / 2;\n left = host.left - pw - gap;\n break;\n case 'right':\n top = host.top + host.height / 2 - ph / 2;\n left = host.right + gap;\n break;\n default: // 'top'\n top = host.top - ph - gap;\n left = host.left + host.width / 2 - pw / 2;\n }\n\n panel.style.top = `${top}px`;\n panel.style.left = `${left}px`;\n }\n\n protected onUpdated(changedProps: Map<string, unknown>) {\n if (changedProps.has('open') && this.open) {\n this._updatePosition();\n }\n }\n\n protected render() {\n return html(({ div, span, slot }) => {\n slot();\n div(\n {\n className: `tooltip-panel placement-${this.placement ?? 'top'}`,\n role: 'tooltip',\n 'aria-hidden': String(!this.open),\n },\n () => {\n slot({ name: 'tooltip' }, () => {\n span({ textContent: this.content ?? '' });\n });\n },\n );\n });\n }\n}\n\nTooltip.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-tooltip': Tooltip;\n }\n}\n\nexport type TooltipProps = InferProps<typeof Tooltip>;\nexport default Tooltip;\n"],"names":["_a","styleVariables"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../src/tooltip/tooltip.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport tooltipStyle from '../styles/components/tooltip.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html, prop } from 'aeico';\nimport type { TooltipPlacement, TooltipTrigger } from './defines';\n\n/**\n * Tooltip Component\n *\n * A floating label that appears on hover or focus around its trigger content.\n * Wrap any element in `<ae-tooltip>` and provide content via the `content`\n * attribute (plain text) or the `tooltip` named slot (rich HTML).\n *\n * @example\n * ```html\n * <ae-tooltip content=\"Save file\">\n * <ae-button>Save</ae-button>\n * </ae-tooltip>\n *\n * <ae-tooltip placement=\"bottom-start\">\n * <span slot=\"tooltip\"><strong>Bold</strong> tip</span>\n * <ae-icon-button name=\"info\"></ae-icon-button>\n * </ae-tooltip>\n * ```\n */\nclass Tooltip extends AeicoComponent {\n protected static styles = [styleVariables, tooltipStyle];\n\n @prop({ type: String })\n accessor content: string | undefined;\n\n @prop({ type: String })\n accessor placement: TooltipPlacement = 'top';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor trigger: TooltipTrigger = 'hover';\n\n @prop({ type: Boolean })\n accessor open: boolean = false;\n\n private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('mouseenter', this._handleMouseEnter);\n this.listen('mouseleave', this._handleMouseLeave);\n this.listen('focusin', this._handleFocusin);\n this.listen('focusout', this._handleFocusout);\n this.listen('click', this._handleClick);\n\n this._outsideClickHandler = (e: MouseEvent) => {\n if (!this.open) return;\n if (!e.composedPath().includes(this)) this.open = false;\n };\n document.addEventListener('click', this._outsideClickHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._outsideClickHandler) {\n document.removeEventListener('click', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n }\n\n private _handleMouseEnter = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleMouseLeave = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleFocusin = () => {\n if (this.trigger !== 'hover') return;\n if (this.disabled) return;\n this.open = true;\n };\n\n private _handleFocusout = () => {\n if (this.trigger !== 'hover') return;\n this.open = false;\n };\n\n private _handleClick = () => {\n if (this.trigger !== 'click') return;\n if (this.disabled) return;\n this.open = !this.open;\n };\n\n private _updatePosition() {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.tooltip-panel');\n if (!panel) return;\n\n const host = this.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const gap = 6; // Match --ae-tooltip-gap: 6px\n const pw = panelRect.width;\n const ph = panelRect.height;\n\n let top: number;\n let left: number;\n\n switch (this.placement) {\n case 'top-start':\n top = host.top - ph - gap;\n left = host.left;\n break;\n case 'top-end':\n top = host.top - ph - gap;\n left = host.right - pw;\n break;\n case 'bottom':\n top = host.bottom + gap;\n left = host.left + host.width / 2 - pw / 2;\n break;\n case 'bottom-start':\n top = host.bottom + gap;\n left = host.left;\n break;\n case 'bottom-end':\n top = host.bottom + gap;\n left = host.right - pw;\n break;\n case 'left':\n top = host.top + host.height / 2 - ph / 2;\n left = host.left - pw - gap;\n break;\n case 'right':\n top = host.top + host.height / 2 - ph / 2;\n left = host.right + gap;\n break;\n default: // 'top'\n top = host.top - ph - gap;\n left = host.left + host.width / 2 - pw / 2;\n }\n\n panel.style.top = `${top}px`;\n panel.style.left = `${left}px`;\n }\n\n protected onUpdated(changedProps: Map<string, unknown>) {\n if (changedProps.has('open') && this.open) {\n this._updatePosition();\n }\n }\n\n protected render() {\n return html(({ div, span, slot }) => {\n slot();\n div(\n {\n className: `tooltip-panel placement-${this.placement ?? 'top'}`,\n role: 'tooltip',\n 'aria-hidden': String(!this.open),\n },\n () => {\n slot({ name: 'tooltip' }, () => {\n span({ textContent: this.content ?? '' });\n });\n },\n );\n });\n }\n}\n\nTooltip.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-tooltip': Tooltip;\n }\n}\n\nexport type TooltipProps = InferProps<typeof Tooltip>;\nexport default Tooltip;\n"],"names":["_a","styleVariables"],"mappings":"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"}
@@ -3,7 +3,7 @@ const aeicoComponent = require("./aeico-component.cjs");
3
3
  const aeico = require("aeico");
4
4
  const variables = require("./variables.cjs");
5
5
  const style$1 = ":host {\n display: block;\n}\n\n.tree {\n display: block;\n padding: 0.25rem;\n box-sizing: border-box;\n user-select: none;\n}\n";
6
- const style = ":host {\n display: block;\n --ae-tree-indent: 1.25rem;\n --tree-item-height: 2rem;\n --tree-item-font-size: 0.9375rem;\n --tree-item-color: var(--color-text-main, #343a40);\n --tree-item-color-disabled: var(--color-text-disabled, #bbb);\n --tree-item-bg-hover: var(--surface-raised, rgba(0, 0, 0, 0.04));\n --tree-item-bg-selected: var(--color-primary-bg-subtle, rgba(14, 99, 156, 0.08));\n --tree-item-color-selected: var(--color-primary, #0e639c);\n --tree-item-line-color: var(--border-default, rgba(0, 0, 0, 0.15));\n --tree-item-expand-size: 1rem;\n}\n\n.tree-item-content {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n height: var(--tree-item-height);\n padding-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem);\n padding-right: 0.5rem;\n font-size: var(--tree-item-font-size);\n color: var(--tree-item-color);\n cursor: pointer;\n user-select: none;\n border-radius: var(--ae-radius-sm, 4px);\n transition: background 0.1s, color 0.1s;\n box-sizing: border-box;\n}\n\n.tree-item-content:hover {\n background: var(--tree-item-bg-hover);\n}\n\n.expand-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: var(--ae-radius-sm, 4px);\n transition: transform 0.18s;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.expand-btn:focus-visible {\n outline: 2px solid var(--color-primary, #0e639c);\n outline-offset: 1px;\n}\n\n.expand-btn svg,\n.expand-btn ae-icon {\n display: block;\n width: 0.625rem;\n height: 0.625rem;\n fill: currentColor;\n transition: transform 0.18s;\n}\n\n/* ae-icon uses font-size for its internal sizing */\n.expand-btn ae-icon,\n.expand-placeholder ae-icon {\n font-size: 0.625rem;\n}\n\n:host([expanded]) .expand-btn svg,\n:host([expanded]) .expand-btn ae-icon {\n transform: rotate(90deg);\n}\n\n/* Leaf placeholder keeps alignment consistent */\n.expand-placeholder {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n}\n\n.tree-item-checkbox {\n flex-shrink: 0;\n width: 0.875rem;\n height: 0.875rem;\n margin: 0;\n cursor: pointer;\n accent-color: var(--color-primary, #0e639c);\n}\n\n.tree-item-label {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n height: 100%;\n padding: 0 0.25rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.tree-item-label:focus-visible {\n outline: 2px solid var(--color-primary, #0e639c);\n outline-offset: -2px;\n border-radius: var(--ae-radius-sm, 4px);\n}\n\n:host([selected]) .tree-item-content {\n background: var(--tree-item-bg-selected);\n color: var(--tree-item-color-selected);\n}\n\n:host([disabled]) .tree-item-content {\n color: var(--tree-item-color-disabled);\n cursor: not-allowed;\n}\n\n:host([disabled]) .tree-item-content * {\n pointer-events: none;\n}\n\n.tree-item-children {\n display: none;\n}\n\n:host([expanded]) .tree-item-children {\n display: block;\n}\n\n:host([showline]) .tree-item-children {\n margin-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem + calc(var(--tree-item-expand-size) / 2));\n padding-left: calc(var(--ae-tree-indent) - calc(var(--tree-item-expand-size) / 2));\n border-left: 1px dashed var(--tree-item-line-color);\n}\n";
6
+ const style = ":host {\n display: block;\n --ae-tree-indent: 1.25rem;\n --tree-item-height: 2rem;\n --tree-item-font-size: 0.9375rem;\n --tree-item-color: var(--ae-color-text-main, #343a40);\n --tree-item-color-disabled: var(--ae-color-text-disabled, #bbb);\n --tree-item-bg-hover: var(--ae-surface-raised, rgba(0, 0, 0, 0.04));\n --tree-item-bg-selected: var(--ae-color-primary-bg-subtle, rgba(14, 99, 156, 0.08));\n --tree-item-color-selected: var(--ae-color-primary, #0e639c);\n --tree-item-line-color: var(--ae-border-default, rgba(0, 0, 0, 0.15));\n --tree-item-expand-size: 1rem;\n}\n\n.tree-item-content {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n height: var(--tree-item-height);\n padding-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem);\n padding-right: 0.5rem;\n font-size: var(--tree-item-font-size);\n color: var(--tree-item-color);\n cursor: pointer;\n user-select: none;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n transition: background 0.1s, color 0.1s;\n box-sizing: border-box;\n}\n\n.tree-item-content:hover {\n background: var(--tree-item-bg-hover);\n}\n\n.expand-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n transition: transform 0.18s;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.expand-btn:focus-visible {\n outline: 2px solid var(--ae-color-primary, #0e639c);\n outline-offset: 1px;\n}\n\n.expand-btn svg,\n.expand-btn ae-icon {\n display: block;\n width: 0.625rem;\n height: 0.625rem;\n fill: currentColor;\n transition: transform 0.18s;\n}\n\n/* ae-icon uses font-size for its internal sizing */\n.expand-btn ae-icon,\n.expand-placeholder ae-icon {\n font-size: 0.625rem;\n}\n\n:host([expanded]) .expand-btn svg,\n:host([expanded]) .expand-btn ae-icon {\n transform: rotate(90deg);\n}\n\n/* Leaf placeholder keeps alignment consistent */\n.expand-placeholder {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n}\n\n.tree-item-checkbox {\n flex-shrink: 0;\n width: 0.875rem;\n height: 0.875rem;\n margin: 0;\n cursor: pointer;\n accent-color: var(--ae-color-primary, #0e639c);\n}\n\n.tree-item-label {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n height: 100%;\n padding: 0 0.25rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.tree-item-label:focus-visible {\n outline: 2px solid var(--ae-color-primary, #0e639c);\n outline-offset: -2px;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n}\n\n:host([selected]) .tree-item-content {\n background: var(--tree-item-bg-selected);\n color: var(--tree-item-color-selected);\n}\n\n:host([disabled]) .tree-item-content {\n color: var(--tree-item-color-disabled);\n cursor: not-allowed;\n}\n\n:host([disabled]) .tree-item-content * {\n pointer-events: none;\n}\n\n.tree-item-children {\n display: none;\n}\n\n:host([expanded]) .tree-item-children {\n display: block;\n}\n\n:host([showline]) .tree-item-children {\n margin-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem + calc(var(--tree-item-expand-size) / 2));\n padding-left: calc(var(--ae-tree-indent) - calc(var(--tree-item-expand-size) / 2));\n border-left: 1px dashed var(--tree-item-line-color);\n}\n";
7
7
  var __create$1 = Object.create;
8
8
  var __defProp$1 = Object.defineProperty;
9
9
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
@@ -2,7 +2,7 @@ import { S as SVG_NS, A as AeicoComponent } from "./aeico-component.js";
2
2
  import { prop, html } from "aeico";
3
3
  import { v as variables } from "./variables.js";
4
4
  const style$1 = ":host {\n display: block;\n}\n\n.tree {\n display: block;\n padding: 0.25rem;\n box-sizing: border-box;\n user-select: none;\n}\n";
5
- const style = ":host {\n display: block;\n --ae-tree-indent: 1.25rem;\n --tree-item-height: 2rem;\n --tree-item-font-size: 0.9375rem;\n --tree-item-color: var(--color-text-main, #343a40);\n --tree-item-color-disabled: var(--color-text-disabled, #bbb);\n --tree-item-bg-hover: var(--surface-raised, rgba(0, 0, 0, 0.04));\n --tree-item-bg-selected: var(--color-primary-bg-subtle, rgba(14, 99, 156, 0.08));\n --tree-item-color-selected: var(--color-primary, #0e639c);\n --tree-item-line-color: var(--border-default, rgba(0, 0, 0, 0.15));\n --tree-item-expand-size: 1rem;\n}\n\n.tree-item-content {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n height: var(--tree-item-height);\n padding-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem);\n padding-right: 0.5rem;\n font-size: var(--tree-item-font-size);\n color: var(--tree-item-color);\n cursor: pointer;\n user-select: none;\n border-radius: var(--ae-radius-sm, 4px);\n transition: background 0.1s, color 0.1s;\n box-sizing: border-box;\n}\n\n.tree-item-content:hover {\n background: var(--tree-item-bg-hover);\n}\n\n.expand-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: var(--ae-radius-sm, 4px);\n transition: transform 0.18s;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.expand-btn:focus-visible {\n outline: 2px solid var(--color-primary, #0e639c);\n outline-offset: 1px;\n}\n\n.expand-btn svg,\n.expand-btn ae-icon {\n display: block;\n width: 0.625rem;\n height: 0.625rem;\n fill: currentColor;\n transition: transform 0.18s;\n}\n\n/* ae-icon uses font-size for its internal sizing */\n.expand-btn ae-icon,\n.expand-placeholder ae-icon {\n font-size: 0.625rem;\n}\n\n:host([expanded]) .expand-btn svg,\n:host([expanded]) .expand-btn ae-icon {\n transform: rotate(90deg);\n}\n\n/* Leaf placeholder keeps alignment consistent */\n.expand-placeholder {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n}\n\n.tree-item-checkbox {\n flex-shrink: 0;\n width: 0.875rem;\n height: 0.875rem;\n margin: 0;\n cursor: pointer;\n accent-color: var(--color-primary, #0e639c);\n}\n\n.tree-item-label {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n height: 100%;\n padding: 0 0.25rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.tree-item-label:focus-visible {\n outline: 2px solid var(--color-primary, #0e639c);\n outline-offset: -2px;\n border-radius: var(--ae-radius-sm, 4px);\n}\n\n:host([selected]) .tree-item-content {\n background: var(--tree-item-bg-selected);\n color: var(--tree-item-color-selected);\n}\n\n:host([disabled]) .tree-item-content {\n color: var(--tree-item-color-disabled);\n cursor: not-allowed;\n}\n\n:host([disabled]) .tree-item-content * {\n pointer-events: none;\n}\n\n.tree-item-children {\n display: none;\n}\n\n:host([expanded]) .tree-item-children {\n display: block;\n}\n\n:host([showline]) .tree-item-children {\n margin-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem + calc(var(--tree-item-expand-size) / 2));\n padding-left: calc(var(--ae-tree-indent) - calc(var(--tree-item-expand-size) / 2));\n border-left: 1px dashed var(--tree-item-line-color);\n}\n";
5
+ const style = ":host {\n display: block;\n --ae-tree-indent: 1.25rem;\n --tree-item-height: 2rem;\n --tree-item-font-size: 0.9375rem;\n --tree-item-color: var(--ae-color-text-main, #343a40);\n --tree-item-color-disabled: var(--ae-color-text-disabled, #bbb);\n --tree-item-bg-hover: var(--ae-surface-raised, rgba(0, 0, 0, 0.04));\n --tree-item-bg-selected: var(--ae-color-primary-bg-subtle, rgba(14, 99, 156, 0.08));\n --tree-item-color-selected: var(--ae-color-primary, #0e639c);\n --tree-item-line-color: var(--ae-border-default, rgba(0, 0, 0, 0.15));\n --tree-item-expand-size: 1rem;\n}\n\n.tree-item-content {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n height: var(--tree-item-height);\n padding-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem);\n padding-right: 0.5rem;\n font-size: var(--tree-item-font-size);\n color: var(--tree-item-color);\n cursor: pointer;\n user-select: none;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n transition: background 0.1s, color 0.1s;\n box-sizing: border-box;\n}\n\n.tree-item-content:hover {\n background: var(--tree-item-bg-hover);\n}\n\n.expand-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n transition: transform 0.18s;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.expand-btn:focus-visible {\n outline: 2px solid var(--ae-color-primary, #0e639c);\n outline-offset: 1px;\n}\n\n.expand-btn svg,\n.expand-btn ae-icon {\n display: block;\n width: 0.625rem;\n height: 0.625rem;\n fill: currentColor;\n transition: transform 0.18s;\n}\n\n/* ae-icon uses font-size for its internal sizing */\n.expand-btn ae-icon,\n.expand-placeholder ae-icon {\n font-size: 0.625rem;\n}\n\n:host([expanded]) .expand-btn svg,\n:host([expanded]) .expand-btn ae-icon {\n transform: rotate(90deg);\n}\n\n/* Leaf placeholder keeps alignment consistent */\n.expand-placeholder {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n}\n\n.tree-item-checkbox {\n flex-shrink: 0;\n width: 0.875rem;\n height: 0.875rem;\n margin: 0;\n cursor: pointer;\n accent-color: var(--ae-color-primary, #0e639c);\n}\n\n.tree-item-label {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n height: 100%;\n padding: 0 0.25rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.tree-item-label:focus-visible {\n outline: 2px solid var(--ae-color-primary, #0e639c);\n outline-offset: -2px;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n}\n\n:host([selected]) .tree-item-content {\n background: var(--tree-item-bg-selected);\n color: var(--tree-item-color-selected);\n}\n\n:host([disabled]) .tree-item-content {\n color: var(--tree-item-color-disabled);\n cursor: not-allowed;\n}\n\n:host([disabled]) .tree-item-content * {\n pointer-events: none;\n}\n\n.tree-item-children {\n display: none;\n}\n\n:host([expanded]) .tree-item-children {\n display: block;\n}\n\n:host([showline]) .tree-item-children {\n margin-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem + calc(var(--tree-item-expand-size) / 2));\n padding-left: calc(var(--ae-tree-indent) - calc(var(--tree-item-expand-size) / 2));\n border-left: 1px dashed var(--tree-item-line-color);\n}\n";
6
6
  var __create$1 = Object.create;
7
7
  var __defProp$1 = Object.defineProperty;
8
8
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;