aeico-components 0.1.5 → 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 (337) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/dist/chunks/action-button.cjs +296 -0
  4. package/dist/chunks/action-button.cjs.map +1 -0
  5. package/dist/chunks/action-button.js +297 -0
  6. package/dist/chunks/action-button.js.map +1 -0
  7. package/dist/chunks/alert.cjs +26 -32
  8. package/dist/chunks/alert.cjs.map +1 -1
  9. package/dist/chunks/alert.js +27 -33
  10. package/dist/chunks/alert.js.map +1 -1
  11. package/dist/chunks/badge.cjs +2 -2
  12. package/dist/chunks/badge.cjs.map +1 -1
  13. package/dist/chunks/badge.js +3 -3
  14. package/dist/chunks/badge.js.map +1 -1
  15. package/dist/chunks/breadcrumb-item.cjs +9 -9
  16. package/dist/chunks/breadcrumb-item.cjs.map +1 -1
  17. package/dist/chunks/breadcrumb-item.js +10 -10
  18. package/dist/chunks/breadcrumb-item.js.map +1 -1
  19. package/dist/chunks/button-group.cjs +1 -1
  20. package/dist/chunks/button-group.cjs.map +1 -1
  21. package/dist/chunks/button-group.js +2 -2
  22. package/dist/chunks/button-group.js.map +1 -1
  23. package/dist/chunks/button.cjs +40 -51
  24. package/dist/chunks/button.cjs.map +1 -1
  25. package/dist/chunks/button.js +41 -52
  26. package/dist/chunks/button.js.map +1 -1
  27. package/dist/chunks/card.cjs +2 -2
  28. package/dist/chunks/card.cjs.map +1 -1
  29. package/dist/chunks/card.js +3 -3
  30. package/dist/chunks/card.js.map +1 -1
  31. package/dist/chunks/checkbox.cjs +18 -5
  32. package/dist/chunks/checkbox.cjs.map +1 -1
  33. package/dist/chunks/checkbox.js +18 -5
  34. package/dist/chunks/checkbox.js.map +1 -1
  35. package/dist/chunks/color.cjs +1 -1
  36. package/dist/chunks/color.js +1 -1
  37. package/dist/chunks/copy-button.cjs +171 -0
  38. package/dist/chunks/copy-button.cjs.map +1 -0
  39. package/dist/chunks/copy-button.js +172 -0
  40. package/dist/chunks/copy-button.js.map +1 -0
  41. package/dist/chunks/detail-group.cjs +65 -0
  42. package/dist/chunks/detail-group.cjs.map +1 -0
  43. package/dist/chunks/detail-group.js +66 -0
  44. package/dist/chunks/detail-group.js.map +1 -0
  45. package/dist/chunks/detail.cjs +7 -4
  46. package/dist/chunks/detail.cjs.map +1 -1
  47. package/dist/chunks/detail.js +8 -5
  48. package/dist/chunks/detail.js.map +1 -1
  49. package/dist/chunks/dialog.cjs +2 -2
  50. package/dist/chunks/dialog.cjs.map +1 -1
  51. package/dist/chunks/dialog.js +3 -3
  52. package/dist/chunks/dialog.js.map +1 -1
  53. package/dist/chunks/divider.cjs +2 -2
  54. package/dist/chunks/divider.cjs.map +1 -1
  55. package/dist/chunks/divider.js +3 -3
  56. package/dist/chunks/divider.js.map +1 -1
  57. package/dist/chunks/drawer.cjs +180 -0
  58. package/dist/chunks/drawer.cjs.map +1 -0
  59. package/dist/chunks/drawer.js +181 -0
  60. package/dist/chunks/drawer.js.map +1 -0
  61. package/dist/chunks/dropdown-button.cjs +10 -11
  62. package/dist/chunks/dropdown-button.cjs.map +1 -1
  63. package/dist/chunks/dropdown-button.js +14 -15
  64. package/dist/chunks/dropdown-button.js.map +1 -1
  65. package/dist/chunks/icon.cjs +57 -11
  66. package/dist/chunks/icon.cjs.map +1 -1
  67. package/dist/chunks/icon.js +58 -12
  68. package/dist/chunks/icon.js.map +1 -1
  69. package/dist/chunks/menu.cjs +396 -0
  70. package/dist/chunks/menu.cjs.map +1 -0
  71. package/dist/chunks/menu.js +397 -0
  72. package/dist/chunks/menu.js.map +1 -0
  73. package/dist/chunks/navbar.cjs +2 -2
  74. package/dist/chunks/navbar.cjs.map +1 -1
  75. package/dist/chunks/navbar.js +3 -3
  76. package/dist/chunks/navbar.js.map +1 -1
  77. package/dist/chunks/number-input.cjs +110 -0
  78. package/dist/chunks/number-input.cjs.map +1 -0
  79. package/dist/chunks/number-input.js +111 -0
  80. package/dist/chunks/number-input.js.map +1 -0
  81. package/dist/chunks/pagination.cjs +475 -0
  82. package/dist/chunks/pagination.cjs.map +1 -0
  83. package/dist/chunks/pagination.js +476 -0
  84. package/dist/chunks/pagination.js.map +1 -0
  85. package/dist/chunks/progress-bar.cjs +101 -0
  86. package/dist/chunks/progress-bar.cjs.map +1 -0
  87. package/dist/chunks/progress-bar.js +102 -0
  88. package/dist/chunks/progress-bar.js.map +1 -0
  89. package/dist/chunks/radio.cjs +11 -7
  90. package/dist/chunks/radio.cjs.map +1 -1
  91. package/dist/chunks/radio.js +11 -7
  92. package/dist/chunks/radio.js.map +1 -1
  93. package/dist/chunks/select.cjs +97 -66
  94. package/dist/chunks/select.cjs.map +1 -1
  95. package/dist/chunks/select.js +97 -66
  96. package/dist/chunks/select.js.map +1 -1
  97. package/dist/chunks/size.cjs +1 -1
  98. package/dist/chunks/size.js +1 -1
  99. package/dist/chunks/slider.cjs +35 -75
  100. package/dist/chunks/slider.cjs.map +1 -1
  101. package/dist/chunks/slider.js +35 -75
  102. package/dist/chunks/slider.js.map +1 -1
  103. package/dist/chunks/spinner.cjs +102 -0
  104. package/dist/chunks/spinner.cjs.map +1 -0
  105. package/dist/chunks/spinner.js +103 -0
  106. package/dist/chunks/spinner.js.map +1 -0
  107. package/dist/chunks/switch.cjs +110 -16
  108. package/dist/chunks/switch.cjs.map +1 -1
  109. package/dist/chunks/switch.js +111 -17
  110. package/dist/chunks/switch.js.map +1 -1
  111. package/dist/chunks/tab-panel.cjs +14 -5
  112. package/dist/chunks/tab-panel.cjs.map +1 -1
  113. package/dist/chunks/tab-panel.js +15 -6
  114. package/dist/chunks/tab-panel.js.map +1 -1
  115. package/dist/chunks/tag.cjs +2 -2
  116. package/dist/chunks/tag.cjs.map +1 -1
  117. package/dist/chunks/tag.js +3 -3
  118. package/dist/chunks/tag.js.map +1 -1
  119. package/dist/chunks/text-input.cjs +11 -16
  120. package/dist/chunks/text-input.cjs.map +1 -1
  121. package/dist/chunks/text-input.js +11 -16
  122. package/dist/chunks/text-input.js.map +1 -1
  123. package/dist/chunks/textarea.cjs +137 -0
  124. package/dist/chunks/textarea.cjs.map +1 -0
  125. package/dist/chunks/textarea.js +138 -0
  126. package/dist/chunks/textarea.js.map +1 -0
  127. package/dist/chunks/tooltip.cjs +292 -0
  128. package/dist/chunks/tooltip.cjs.map +1 -0
  129. package/dist/chunks/tooltip.js +293 -0
  130. package/dist/chunks/tooltip.js.map +1 -0
  131. package/dist/chunks/tree.cjs +468 -0
  132. package/dist/chunks/tree.cjs.map +1 -0
  133. package/dist/chunks/tree.js +469 -0
  134. package/dist/chunks/tree.js.map +1 -0
  135. package/dist/chunks/variables.cjs +273 -249
  136. package/dist/chunks/variables.cjs.map +1 -1
  137. package/dist/chunks/variables.js +273 -249
  138. package/dist/chunks/variables.js.map +1 -1
  139. package/dist/copy-button.cjs +6 -0
  140. package/dist/copy-button.cjs.map +1 -0
  141. package/dist/copy-button.js +6 -0
  142. package/dist/copy-button.js.map +1 -0
  143. package/dist/detail-group.cjs +6 -0
  144. package/dist/detail-group.cjs.map +1 -0
  145. package/dist/detail-group.js +6 -0
  146. package/dist/detail-group.js.map +1 -0
  147. package/dist/drawer.cjs +6 -0
  148. package/dist/drawer.cjs.map +1 -0
  149. package/dist/drawer.js +6 -0
  150. package/dist/drawer.js.map +1 -0
  151. package/dist/dropdown.js +4 -4
  152. package/dist/index.cjs +24 -99
  153. package/dist/index.cjs.map +1 -1
  154. package/dist/index.js +41 -116
  155. package/dist/index.js.map +1 -1
  156. package/dist/menu.cjs +6 -0
  157. package/dist/menu.cjs.map +1 -0
  158. package/dist/menu.js +6 -0
  159. package/dist/menu.js.map +1 -0
  160. package/dist/number-input.cjs +6 -0
  161. package/dist/number-input.cjs.map +1 -0
  162. package/dist/number-input.js +6 -0
  163. package/dist/number-input.js.map +1 -0
  164. package/dist/pagination.cjs +6 -0
  165. package/dist/pagination.cjs.map +1 -0
  166. package/dist/pagination.js +6 -0
  167. package/dist/pagination.js.map +1 -0
  168. package/dist/progress-bar.cjs +6 -0
  169. package/dist/progress-bar.cjs.map +1 -0
  170. package/dist/progress-bar.js +6 -0
  171. package/dist/progress-bar.js.map +1 -0
  172. package/dist/select.cjs +2 -2
  173. package/dist/select.cjs.map +1 -1
  174. package/dist/select.js +3 -3
  175. package/dist/select.js.map +1 -1
  176. package/dist/spinner.cjs +6 -0
  177. package/dist/spinner.cjs.map +1 -0
  178. package/dist/spinner.js +6 -0
  179. package/dist/spinner.js.map +1 -0
  180. package/dist/textarea.cjs +5 -0
  181. package/dist/textarea.cjs.map +1 -0
  182. package/dist/textarea.js +5 -0
  183. package/dist/textarea.js.map +1 -0
  184. package/dist/tooltip.cjs +6 -0
  185. package/dist/tooltip.cjs.map +1 -0
  186. package/dist/tooltip.js +6 -0
  187. package/dist/tooltip.js.map +1 -0
  188. package/dist/tree.cjs +6 -0
  189. package/dist/tree.cjs.map +1 -0
  190. package/dist/tree.js +6 -0
  191. package/dist/tree.js.map +1 -0
  192. package/dist/types/aeico-field.d.ts +52 -0
  193. package/dist/types/alert/alert.d.ts +1 -0
  194. package/dist/types/card/defines.d.ts +1 -1
  195. package/dist/types/copy-button/copy-button.d.ts +32 -0
  196. package/dist/types/copy-button/defines.d.ts +1 -0
  197. package/dist/types/copy-button/index.d.ts +3 -0
  198. package/dist/types/detail/defines.d.ts +2 -1
  199. package/dist/types/detail/detail.d.ts +3 -1
  200. package/dist/types/detail/index.d.ts +1 -1
  201. package/dist/types/detail-group/detail-group.d.ts +39 -0
  202. package/dist/types/detail-group/index.d.ts +2 -0
  203. package/dist/types/drawer/defines.d.ts +1 -0
  204. package/dist/types/drawer/drawer.d.ts +31 -0
  205. package/dist/types/drawer/index.d.ts +3 -0
  206. package/dist/types/icon/built-in-icons.d.ts +1 -0
  207. package/dist/types/icon/defines.d.ts +5 -1
  208. package/dist/types/icon/icon.d.ts +1 -0
  209. package/dist/types/icon/index.d.ts +1 -1
  210. package/dist/types/icon/registry.d.ts +8 -0
  211. package/dist/types/index.d.ts +17 -0
  212. package/dist/types/menu/defines.d.ts +15 -0
  213. package/dist/types/menu/index.d.ts +5 -0
  214. package/dist/types/menu/menu-item.d.ts +63 -0
  215. package/dist/types/menu/menu.d.ts +34 -0
  216. package/dist/types/number-input/index.d.ts +2 -0
  217. package/dist/types/number-input/number-input.d.ts +35 -0
  218. package/dist/types/pagination/defines.d.ts +2 -0
  219. package/dist/types/pagination/index.d.ts +3 -0
  220. package/dist/types/pagination/pagination.d.ts +77 -0
  221. package/dist/types/select/select.d.ts +2 -2
  222. package/dist/types/spinner/defines.d.ts +3 -0
  223. package/dist/types/spinner/index.d.ts +3 -0
  224. package/dist/types/spinner/spinner.d.ts +35 -0
  225. package/dist/types/switch/defines.d.ts +1 -0
  226. package/dist/types/switch/switch.d.ts +8 -4
  227. package/dist/types/tabs/defines.d.ts +1 -0
  228. package/dist/types/tabs/tabs.d.ts +3 -0
  229. package/dist/types/text-input/text-input.d.ts +0 -4
  230. package/dist/types/textarea/index.d.ts +1 -0
  231. package/dist/types/textarea/textarea.d.ts +26 -0
  232. package/dist/types/tooltip/defines.d.ts +2 -0
  233. package/dist/types/tooltip/index.d.ts +4 -0
  234. package/dist/types/tooltip/tooltip.d.ts +48 -0
  235. package/dist/types/tree/defines.d.ts +23 -0
  236. package/dist/types/tree/index.d.ts +5 -0
  237. package/dist/types/tree/tree-item.d.ts +54 -0
  238. package/dist/types/tree/tree.d.ts +64 -0
  239. package/package.json +5 -5
  240. package/src/aeico-field.ts +142 -7
  241. package/src/alert/alert.ts +3 -2
  242. package/src/card/defines.ts +1 -1
  243. package/src/checkbox/checkbox.ts +17 -2
  244. package/src/copy-button/copy-button.ts +150 -0
  245. package/src/copy-button/defines.ts +5 -0
  246. package/src/copy-button/index.ts +3 -0
  247. package/src/detail/defines.ts +2 -1
  248. package/src/detail/detail.ts +5 -1
  249. package/src/detail/index.ts +1 -1
  250. package/src/detail-group/detail-group.ts +104 -0
  251. package/src/detail-group/index.ts +2 -0
  252. package/src/drawer/defines.ts +1 -0
  253. package/src/drawer/drawer.ts +157 -0
  254. package/src/drawer/index.ts +3 -0
  255. package/src/icon/built-in-icons.ts +21 -0
  256. package/src/icon/defines.ts +6 -1
  257. package/src/icon/icon.ts +29 -10
  258. package/src/icon/index.ts +1 -1
  259. package/src/icon/registry.ts +23 -1
  260. package/src/index.ts +30 -0
  261. package/src/menu/defines.ts +17 -0
  262. package/src/menu/index.ts +5 -0
  263. package/src/menu/menu-item.ts +315 -0
  264. package/src/menu/menu.ts +81 -0
  265. package/src/number-input/index.ts +2 -0
  266. package/src/number-input/number-input.ts +137 -0
  267. package/src/pagination/defines.ts +2 -0
  268. package/src/pagination/index.ts +3 -0
  269. package/src/pagination/pagination.ts +310 -0
  270. package/src/radio-group/radio-group.ts +11 -4
  271. package/src/select/select.ts +111 -70
  272. package/src/slider/slider.ts +9 -2
  273. package/src/spinner/defines.ts +12 -0
  274. package/src/spinner/index.ts +3 -0
  275. package/src/spinner/spinner.ts +81 -0
  276. package/src/styles/color.css +91 -91
  277. package/src/styles/components/action-button.css +37 -0
  278. package/src/styles/components/alert.css +22 -28
  279. package/src/styles/components/badge.css +13 -20
  280. package/src/styles/components/breadcrumb-item.css +7 -7
  281. package/src/styles/components/button.css +39 -50
  282. package/src/styles/components/card.css +45 -30
  283. package/src/styles/components/checkbox.css +9 -36
  284. package/src/styles/components/copy-button.css +108 -0
  285. package/src/styles/components/detail-group.css +10 -0
  286. package/src/styles/components/detail.css +56 -35
  287. package/src/styles/components/dialog.css +11 -11
  288. package/src/styles/components/divider.css +3 -3
  289. package/src/styles/components/drawer.css +152 -0
  290. package/src/styles/components/dropdown-item.css +7 -8
  291. package/src/styles/components/dropdown.css +3 -4
  292. package/src/styles/components/field-label.css +120 -0
  293. package/src/styles/components/icon-button.css +25 -36
  294. package/src/styles/components/icon.css +1 -1
  295. package/src/styles/components/menu-item.css +167 -0
  296. package/src/styles/components/menu.css +17 -0
  297. package/src/styles/components/navbar.css +16 -16
  298. package/src/styles/components/number-input.css +158 -0
  299. package/src/styles/components/pagination.css +205 -0
  300. package/src/styles/components/progress-bar.css +2 -3
  301. package/src/styles/components/radio-group.css +69 -106
  302. package/src/styles/components/select-option.css +5 -5
  303. package/src/styles/components/select.css +30 -69
  304. package/src/styles/components/slider.css +26 -71
  305. package/src/styles/components/spinner.css +78 -0
  306. package/src/styles/components/switch.css +64 -27
  307. package/src/styles/components/tab-panel.css +1 -1
  308. package/src/styles/components/tab.css +4 -5
  309. package/src/styles/components/tabs.css +49 -1
  310. package/src/styles/components/tag.css +14 -21
  311. package/src/styles/components/text-input.css +17 -64
  312. package/src/styles/components/textarea.css +66 -0
  313. package/src/styles/components/tooltip.css +102 -0
  314. package/src/styles/components/tree-item.css +152 -0
  315. package/src/styles/components/tree.css +10 -0
  316. package/src/styles/layout.css +457 -25
  317. package/src/styles/radius.css +10 -0
  318. package/src/styles/size.css +7 -7
  319. package/src/styles/variables.css +271 -247
  320. package/src/switch/defines.ts +1 -0
  321. package/src/switch/switch.ts +61 -12
  322. package/src/tabs/defines.ts +1 -0
  323. package/src/tabs/tabs.ts +12 -0
  324. package/src/text-input/text-input.ts +10 -15
  325. package/src/textarea/index.ts +1 -0
  326. package/src/textarea/textarea.ts +107 -0
  327. package/src/tooltip/defines.ts +11 -0
  328. package/src/tooltip/index.ts +4 -0
  329. package/src/tooltip/tooltip.ts +183 -0
  330. package/src/tree/defines.ts +26 -0
  331. package/src/tree/index.ts +5 -0
  332. package/src/tree/tree-item.ts +258 -0
  333. package/src/tree/tree.ts +237 -0
  334. package/dist/chunks/aeico-field.cjs +0 -179
  335. package/dist/chunks/aeico-field.cjs.map +0 -1
  336. package/dist/chunks/aeico-field.js +0 -180
  337. package/dist/chunks/aeico-field.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { s as styleVariables } from "./variables.js";
4
+ import { v as variables } from "./variables.js";
5
5
  import { A as AeicoComponent } from "./aeico-component.js";
6
6
  import { html } from "aeico";
7
- const style = ":host {\n display: contents;\n}\n\ndialog {\n display: none;\n flex-direction: column;\n border: none;\n border-radius: 8px;\n padding: 0;\n max-width: min(90vw, 600px);\n max-height: 90vh;\n background: var(--surface-overlay);\n color: var(--color-text-main);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\ndialog[open] {\n display: flex;\n animation: dialog-slide-in 0.2s ease;\n}\n\ndialog::backdrop {\n background: var(--color-overlay);\n animation: dialog-backdrop-in 0.2s ease;\n}\n\n@keyframes dialog-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes dialog-slide-in {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--border-subtle);\n color: var(--color-text-main);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
7
+ const style = ":host {\n display: contents;\n}\n\ndialog {\n display: none;\n flex-direction: column;\n border: none;\n border-radius: var(--ae-border-radius, var(--ae-border-radius));\n padding: 0;\n max-width: min(90vw, 600px);\n max-height: 90vh;\n background: var(--ae-surface-overlay);\n color: var(--ae-color-text-main);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\ndialog[open] {\n display: flex;\n animation: dialog-slide-in 0.2s ease;\n}\n\ndialog::backdrop {\n background: var(--color-overlay);\n animation: dialog-backdrop-in 0.2s ease;\n}\n\n@keyframes dialog-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes dialog-slide-in {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--ae-size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--ae-color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n background: transparent;\n color: var(--ae-color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--ae-border-subtle);\n color: var(--ae-color-text-main);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
8
8
  class Dialog extends AeicoComponent {
9
9
  constructor() {
10
10
  super(...arguments);
@@ -110,7 +110,7 @@ __publicField(Dialog, "props", {
110
110
  header: { type: Boolean },
111
111
  closeOnOverlayClick: { type: Boolean }
112
112
  });
113
- __publicField(Dialog, "styles", [styleVariables, style]);
113
+ __publicField(Dialog, "styles", [variables, style]);
114
114
  Dialog.register();
115
115
  export {
116
116
  Dialog as D
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sources":["../../src/dialog/dialog.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport style from '../styles/components/dialog.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\n\nclass Dialog extends AeicoComponent {\n static props: Props = {\n label: { type: String },\n width: { type: String },\n height: { type: String },\n modal: { type: Boolean },\n closable: { type: Boolean },\n header: { type: Boolean },\n closeOnOverlayClick: { type: Boolean },\n };\n\n declare label?: string;\n declare width?: string;\n declare height?: string;\n declare modal?: boolean;\n declare closable?: boolean;\n declare header?: boolean;\n declare closeOnOverlayClick?: boolean;\n\n protected static styles = [styleVariables, style];\n\n private _dialogEl: HTMLDialogElement | null = null;\n private _hasFooter = false;\n\n protected render() {\n return html(({ dialog, div, header, footer, span, button, slot }) => {\n this._dialogEl = dialog(\n {\n '@click': this._handleDialogClick,\n '@close': this._handleNativeClose,\n style: {\n width: this.width || '',\n height: this.height || '',\n },\n },\n () => {\n // Header\n if (this.header !== false) {\n header({}, () => {\n slot({ name: 'header' }, () => {\n span({ className: 'label', textContent: this.label || '' });\n });\n if (this.closable !== false) {\n button({\n className: 'close-btn',\n textContent: '×',\n '@click': () => this.close(),\n });\n }\n });\n }\n\n // Body\n div({ className: 'body' }, () => {\n slot();\n });\n\n // Footer — always rendered to capture slotchange, hidden when empty\n footer(\n {\n style: { display: this._hasFooter ? '' : 'none' },\n },\n () => {\n slot({ name: 'footer', '@slotchange': this._handleFooterSlotChange });\n },\n );\n },\n );\n });\n }\n\n private _handleDialogClick = (e: Event) => {\n const mouseEvent = e as MouseEvent;\n const path = mouseEvent.composedPath();\n\n // data-close: any slotted element with [data-close] closes the dialog\n for (const el of path) {\n if (el instanceof Element && el.hasAttribute('data-close')) {\n this.close();\n return;\n }\n if (el === this._dialogEl) break;\n }\n\n // Backdrop click (modal mode only)\n if (this.modal !== false && this.closeOnOverlayClick !== false) {\n if (mouseEvent.target === this._dialogEl) {\n const rect = this._dialogEl!.getBoundingClientRect();\n const outside =\n mouseEvent.clientX < rect.left ||\n mouseEvent.clientX > rect.right ||\n mouseEvent.clientY < rect.top ||\n mouseEvent.clientY > rect.bottom;\n if (outside) {\n this.close();\n }\n }\n }\n };\n\n private _handleNativeClose = () => {\n this.emit('close', { detail: { target: this } });\n };\n\n private _handleFooterSlotChange = (e: Event) => {\n const slotEl = e.target as HTMLSlotElement;\n const hasContent = slotEl.assignedElements().length > 0;\n if (hasContent !== this._hasFooter) {\n this._hasFooter = hasContent;\n this.update();\n }\n };\n\n open() {\n if (!this._dialogEl) return;\n if (this.modal !== false) {\n this._dialogEl.showModal();\n } else {\n this._dialogEl.show();\n }\n this.emit('open', { detail: { target: this } });\n }\n\n close() {\n this._dialogEl?.close();\n // emit('close') is handled by _handleNativeClose via the native 'close' event\n }\n\n isOpen(): boolean {\n return this._dialogEl?.open ?? false;\n }\n}\n\nDialog.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-dialog': Dialog;\n }\n}\n\nexport default Dialog;\nexport type DialogProps = InferProps<typeof Dialog>;\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,eAAe,eAAe;AAAA,EAApC;AAAA;AAqBU,qCAAsC;AACtC,sCAAa;AAiDb,8CAAqB,CAAC,MAAa;AACzC,YAAM,aAAa;AACnB,YAAM,OAAO,WAAW,aAAA;AAGxB,iBAAW,MAAM,MAAM;AACrB,YAAI,cAAc,WAAW,GAAG,aAAa,YAAY,GAAG;AAC1D,eAAK,MAAA;AACL;AAAA,QACF;AACA,YAAI,OAAO,KAAK,UAAW;AAAA,MAC7B;AAGA,UAAI,KAAK,UAAU,SAAS,KAAK,wBAAwB,OAAO;AAC9D,YAAI,WAAW,WAAW,KAAK,WAAW;AACxC,gBAAM,OAAO,KAAK,UAAW,sBAAA;AAC7B,gBAAM,UACJ,WAAW,UAAU,KAAK,QAC1B,WAAW,UAAU,KAAK,SAC1B,WAAW,UAAU,KAAK,OAC1B,WAAW,UAAU,KAAK;AAC5B,cAAI,SAAS;AACX,iBAAK,MAAA;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEQ,8CAAqB,MAAM;AACjC,WAAK,KAAK,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAA,GAAQ;AAAA,IACjD;AAEQ,mDAA0B,CAAC,MAAa;AAC9C,YAAM,SAAS,EAAE;AACjB,YAAM,aAAa,OAAO,iBAAA,EAAmB,SAAS;AACtD,UAAI,eAAe,KAAK,YAAY;AAClC,aAAK,aAAa;AAClB,aAAK,OAAA;AAAA,MACP;AAAA,IACF;AAAA;AAAA,EAvFU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,QAAQ,KAAK,QAAQ,QAAQ,MAAM,QAAQ,WAAW;AACnE,WAAK,YAAY;AAAA,QACf;AAAA,UACE,UAAU,KAAK;AAAA,UACf,UAAU,KAAK;AAAA,UACf,OAAO;AAAA,YACL,OAAO,KAAK,SAAS;AAAA,YACrB,QAAQ,KAAK,UAAU;AAAA,UAAA;AAAA,QACzB;AAAA,QAEF,MAAM;AAEJ,cAAI,KAAK,WAAW,OAAO;AACzB,mBAAO,CAAA,GAAI,MAAM;AACf,mBAAK,EAAE,MAAM,SAAA,GAAY,MAAM;AAC7B,qBAAK,EAAE,WAAW,SAAS,aAAa,KAAK,SAAS,IAAI;AAAA,cAC5D,CAAC;AACD,kBAAI,KAAK,aAAa,OAAO;AAC3B,uBAAO;AAAA,kBACL,WAAW;AAAA,kBACX,aAAa;AAAA,kBACb,UAAU,MAAM,KAAK,MAAA;AAAA,gBAAM,CAC5B;AAAA,cACH;AAAA,YACF,CAAC;AAAA,UACH;AAGA,cAAI,EAAE,WAAW,OAAA,GAAU,MAAM;AAC/B,iBAAA;AAAA,UACF,CAAC;AAGD;AAAA,YACE;AAAA,cACE,OAAO,EAAE,SAAS,KAAK,aAAa,KAAK,OAAA;AAAA,YAAO;AAAA,YAElD,MAAM;AACJ,mBAAK,EAAE,MAAM,UAAU,eAAe,KAAK,yBAAyB;AAAA,YACtE;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH;AAAA,EA4CA,OAAO;AACL,QAAI,CAAC,KAAK,UAAW;AACrB,QAAI,KAAK,UAAU,OAAO;AACxB,WAAK,UAAU,UAAA;AAAA,IACjB,OAAO;AACL,WAAK,UAAU,KAAA;AAAA,IACjB;AACA,SAAK,KAAK,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAA,GAAQ;AAAA,EAChD;AAAA,EAEA,QAAQ;;AACN,eAAK,cAAL,mBAAgB;AAAA,EAElB;AAAA,EAEA,SAAkB;;AAChB,aAAO,UAAK,cAAL,mBAAgB,SAAQ;AAAA,EACjC;AACF;AAlIE,cADI,QACG,SAAe;AAAA,EACpB,OAAO,EAAE,MAAM,OAAA;AAAA,EACf,OAAO,EAAE,MAAM,OAAA;AAAA,EACf,QAAQ,EAAE,MAAM,OAAA;AAAA,EAChB,OAAO,EAAE,MAAM,QAAA;AAAA,EACf,UAAU,EAAE,MAAM,QAAA;AAAA,EAClB,QAAQ,EAAE,MAAM,QAAA;AAAA,EAChB,qBAAqB,EAAE,MAAM,QAAA;AAAQ;AAWvC,cAnBI,QAmBa,UAAS,CAAC,gBAAgB,KAAK;AAkHlD,OAAO,SAAA;"}
1
+ {"version":3,"file":"dialog.js","sources":["../../src/dialog/dialog.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport style from '../styles/components/dialog.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\n\nclass Dialog extends AeicoComponent {\n static props: Props = {\n label: { type: String },\n width: { type: String },\n height: { type: String },\n modal: { type: Boolean },\n closable: { type: Boolean },\n header: { type: Boolean },\n closeOnOverlayClick: { type: Boolean },\n };\n\n declare label?: string;\n declare width?: string;\n declare height?: string;\n declare modal?: boolean;\n declare closable?: boolean;\n declare header?: boolean;\n declare closeOnOverlayClick?: boolean;\n\n protected static styles = [styleVariables, style];\n\n private _dialogEl: HTMLDialogElement | null = null;\n private _hasFooter = false;\n\n protected render() {\n return html(({ dialog, div, header, footer, span, button, slot }) => {\n this._dialogEl = dialog(\n {\n '@click': this._handleDialogClick,\n '@close': this._handleNativeClose,\n style: {\n width: this.width || '',\n height: this.height || '',\n },\n },\n () => {\n // Header\n if (this.header !== false) {\n header({}, () => {\n slot({ name: 'header' }, () => {\n span({ className: 'label', textContent: this.label || '' });\n });\n if (this.closable !== false) {\n button({\n className: 'close-btn',\n textContent: '×',\n '@click': () => this.close(),\n });\n }\n });\n }\n\n // Body\n div({ className: 'body' }, () => {\n slot();\n });\n\n // Footer — always rendered to capture slotchange, hidden when empty\n footer(\n {\n style: { display: this._hasFooter ? '' : 'none' },\n },\n () => {\n slot({ name: 'footer', '@slotchange': this._handleFooterSlotChange });\n },\n );\n },\n );\n });\n }\n\n private _handleDialogClick = (e: Event) => {\n const mouseEvent = e as MouseEvent;\n const path = mouseEvent.composedPath();\n\n // data-close: any slotted element with [data-close] closes the dialog\n for (const el of path) {\n if (el instanceof Element && el.hasAttribute('data-close')) {\n this.close();\n return;\n }\n if (el === this._dialogEl) break;\n }\n\n // Backdrop click (modal mode only)\n if (this.modal !== false && this.closeOnOverlayClick !== false) {\n if (mouseEvent.target === this._dialogEl) {\n const rect = this._dialogEl!.getBoundingClientRect();\n const outside =\n mouseEvent.clientX < rect.left ||\n mouseEvent.clientX > rect.right ||\n mouseEvent.clientY < rect.top ||\n mouseEvent.clientY > rect.bottom;\n if (outside) {\n this.close();\n }\n }\n }\n };\n\n private _handleNativeClose = () => {\n this.emit('close', { detail: { target: this } });\n };\n\n private _handleFooterSlotChange = (e: Event) => {\n const slotEl = e.target as HTMLSlotElement;\n const hasContent = slotEl.assignedElements().length > 0;\n if (hasContent !== this._hasFooter) {\n this._hasFooter = hasContent;\n this.update();\n }\n };\n\n open() {\n if (!this._dialogEl) return;\n if (this.modal !== false) {\n this._dialogEl.showModal();\n } else {\n this._dialogEl.show();\n }\n this.emit('open', { detail: { target: this } });\n }\n\n close() {\n this._dialogEl?.close();\n // emit('close') is handled by _handleNativeClose via the native 'close' event\n }\n\n isOpen(): boolean {\n return this._dialogEl?.open ?? false;\n }\n}\n\nDialog.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-dialog': Dialog;\n }\n}\n\nexport default Dialog;\nexport type DialogProps = InferProps<typeof Dialog>;\n"],"names":["styleVariables"],"mappings":"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"}
@@ -3,7 +3,7 @@ const aeicoComponent = require("./aeico-component.cjs");
3
3
  const variables = require("./variables.cjs");
4
4
  const color = require("./color.cjs");
5
5
  const aeico = require("aeico");
6
- const style = ":host {\n display: block;\n width: 100%;\n height: var(--thickness, 1px);\n flex-shrink: 0;\n\n /* Override colorCSS default --color-border from gray to the subtle border token */\n --color-border: var(--border-default);\n\n background: var(--color-border);\n}\n\n:host([vertical]) {\n display: inline-block;\n width: var(--thickness, 1px);\n height: 1lh;\n vertical-align: middle;\n}\n";
6
+ const style = ":host {\n display: block;\n width: 100%;\n height: var(--thickness, 1px);\n flex-shrink: 0;\n\n /* Override color.css default divider uses the subtle border token when no [color] is set */\n --ae-color-border: var(--ae-border-default);\n\n background: var(--ae-color-border);\n}\n\n:host([vertical]) {\n display: inline-block;\n width: var(--thickness, 1px);\n height: 1lh;\n vertical-align: middle;\n}\n";
7
7
  var __create = Object.create;
8
8
  var __defProp = Object.defineProperty;
9
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -74,7 +74,7 @@ __decorateElement(_init, 4, "thickness", _thickness_dec, Divider, _thickness);
74
74
  __decorateElement(_init, 4, "color", _color_dec, Divider, _color);
75
75
  __decoratorMetadata(_init, Divider);
76
76
  __publicField(Divider, "tagName", "divider");
77
- __publicField(Divider, "styles", [variables.styleVariables, color.colorCSS, style]);
77
+ __publicField(Divider, "styles", [variables.variables, color.colorCSS, style]);
78
78
  Divider.register();
79
79
  exports.Divider = Divider;
80
80
  //# sourceMappingURL=divider.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"divider.cjs","sources":["../../src/divider/divider.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/divider.css?inline';\nimport { prop } from 'aeico';\n/**\n * A simple divider component that can be used to separate content. It supports both horizontal and vertical orientations, as well as customizable thickness and color.\n * @example\n * ```html\n * <ae-divider></ae-divider>\n * <ae-divider vertical></ae-divider>\n * <ae-divider thickness=\"4px\" color=\"primary\"></ae-divider>\n * ```\n * @props\n * - `vertical` (boolean): If true, the divider will be vertical. Default is false (horizontal).\n * - `thickness` (string): Custom thickness for the divider (e.g., \"2px\", \"0.5rem\"). If not provided, it will use the default thickness defined in CSS.\n * - `color` (string): Color variant for the divider (e.g., \"primary\", \"secondary\"). If not provided, it will use the default color defined in CSS.\n *\n * @csspart divider - The main divider element that can be styled.\n *\n * @cssproperty --thickness - Custom property to set the thickness of the divider when the `thickness` prop is used.\n */\nclass Divider extends AeicoComponent {\n static tagName = 'divider';\n\n @prop({ type: Boolean })\n accessor vertical: boolean = false;\n\n @prop({ type: String })\n accessor thickness: string | undefined;\n\n @prop({ type: String })\n accessor color: string | undefined;\n\n protected static styles = [styleVariables, colorCSS, style];\n\n protected render(): void {\n if (this.thickness) {\n this.style.setProperty('--thickness', this.thickness);\n } else {\n this.style.removeProperty('--thickness');\n }\n }\n}\n\nDivider.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-divider': Divider;\n }\n}\n\nexport default Divider;\nexport type DividerProps = InferProps<typeof Divider>;\n"],"names":["prop","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,gBAAA,eAAA,IAAA,OAAA,WAAA,YAAA;AAuBA,MAAM,iBAAgB,oCAGpB,gBAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,QAAA,CAAS,CAAA,GAGvB,iBAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,aAAA,CAACA,WAAK,EAAE,MAAM,QAAQ,CAAA,GATF,IAAe;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIE,iBAAA,MAAS,WAAoB,kBAA7B,OAAA,GAAA,MAA6B,KAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,YAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAIU,SAAe;AACvB,QAAI,KAAK,WAAW;AAClB,WAAK,MAAM,YAAY,eAAe,KAAK,SAAS;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,aAAa;AAAA,IACzC;AAAA,EACF;AACF;AArBA,QAAA,iBAAA,EAAA;AAIW,YAAA,oBAAA,QAAA;AAGA,aAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AANT,kBAAA,OAAA,GAAS,YADT,eAHI,SAIK,SAAA;AAGT,kBAAA,OAAA,GAAS,aADT,gBANI,SAOK,UAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YATI,SAUK,MAAA;AAVX,oBAAA,OAAM,OAAA;AACJ,cADI,SACG,WAAU,SAAA;AAWjB,cAZI,SAYa,UAAS,CAACC,UAAAA,gBAAgBC,MAAAA,UAAU,KAAK,CAAA;AAW5D,QAAQ,SAAA;;"}
1
+ {"version":3,"file":"divider.cjs","sources":["../../src/divider/divider.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/divider.css?inline';\nimport { prop } from 'aeico';\n/**\n * A simple divider component that can be used to separate content. It supports both horizontal and vertical orientations, as well as customizable thickness and color.\n * @example\n * ```html\n * <ae-divider></ae-divider>\n * <ae-divider vertical></ae-divider>\n * <ae-divider thickness=\"4px\" color=\"primary\"></ae-divider>\n * ```\n * @props\n * - `vertical` (boolean): If true, the divider will be vertical. Default is false (horizontal).\n * - `thickness` (string): Custom thickness for the divider (e.g., \"2px\", \"0.5rem\"). If not provided, it will use the default thickness defined in CSS.\n * - `color` (string): Color variant for the divider (e.g., \"primary\", \"secondary\"). If not provided, it will use the default color defined in CSS.\n *\n * @csspart divider - The main divider element that can be styled.\n *\n * @cssproperty --thickness - Custom property to set the thickness of the divider when the `thickness` prop is used.\n */\nclass Divider extends AeicoComponent {\n static tagName = 'divider';\n\n @prop({ type: Boolean })\n accessor vertical: boolean = false;\n\n @prop({ type: String })\n accessor thickness: string | undefined;\n\n @prop({ type: String })\n accessor color: string | undefined;\n\n protected static styles = [styleVariables, colorCSS, style];\n\n protected render(): void {\n if (this.thickness) {\n this.style.setProperty('--thickness', this.thickness);\n } else {\n this.style.removeProperty('--thickness');\n }\n }\n}\n\nDivider.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-divider': Divider;\n }\n}\n\nexport default Divider;\nexport type DividerProps = InferProps<typeof Divider>;\n"],"names":["prop","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,gBAAA,eAAA,IAAA,OAAA,WAAA,YAAA;AAuBA,MAAM,iBAAgB,oCAGpB,gBAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,QAAA,CAAS,CAAA,GAGvB,iBAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,aAAA,CAACA,WAAK,EAAE,MAAM,QAAQ,CAAA,GATF,IAAe;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIE,iBAAA,MAAS,WAAoB,kBAA7B,OAAA,GAAA,MAA6B,KAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,YAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAIU,SAAe;AACvB,QAAI,KAAK,WAAW;AAClB,WAAK,MAAM,YAAY,eAAe,KAAK,SAAS;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,aAAa;AAAA,IACzC;AAAA,EACF;AACF;AArBA,QAAA,iBAAA,EAAA;AAIW,YAAA,oBAAA,QAAA;AAGA,aAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AANT,kBAAA,OAAA,GAAS,YADT,eAHI,SAIK,SAAA;AAGT,kBAAA,OAAA,GAAS,aADT,gBANI,SAOK,UAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YATI,SAUK,MAAA;AAVX,oBAAA,OAAM,OAAA;AACJ,cADI,SACG,WAAU,SAAA;AAWjB,cAZI,SAYa,UAAS,CAACC,UAAAA,WAAgBC,MAAAA,UAAU,KAAK,CAAA;AAW5D,QAAQ,SAAA;;"}
@@ -1,8 +1,8 @@
1
1
  import { A as AeicoComponent } from "./aeico-component.js";
2
- import { s as styleVariables } from "./variables.js";
2
+ import { v as variables } from "./variables.js";
3
3
  import { c as colorCSS } from "./color.js";
4
4
  import { prop } from "aeico";
5
- const style = ":host {\n display: block;\n width: 100%;\n height: var(--thickness, 1px);\n flex-shrink: 0;\n\n /* Override colorCSS default --color-border from gray to the subtle border token */\n --color-border: var(--border-default);\n\n background: var(--color-border);\n}\n\n:host([vertical]) {\n display: inline-block;\n width: var(--thickness, 1px);\n height: 1lh;\n vertical-align: middle;\n}\n";
5
+ const style = ":host {\n display: block;\n width: 100%;\n height: var(--thickness, 1px);\n flex-shrink: 0;\n\n /* Override color.css default divider uses the subtle border token when no [color] is set */\n --ae-color-border: var(--ae-border-default);\n\n background: var(--ae-color-border);\n}\n\n:host([vertical]) {\n display: inline-block;\n width: var(--thickness, 1px);\n height: 1lh;\n vertical-align: middle;\n}\n";
6
6
  var __create = Object.create;
7
7
  var __defProp = Object.defineProperty;
8
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -73,7 +73,7 @@ __decorateElement(_init, 4, "thickness", _thickness_dec, Divider, _thickness);
73
73
  __decorateElement(_init, 4, "color", _color_dec, Divider, _color);
74
74
  __decoratorMetadata(_init, Divider);
75
75
  __publicField(Divider, "tagName", "divider");
76
- __publicField(Divider, "styles", [styleVariables, colorCSS, style]);
76
+ __publicField(Divider, "styles", [variables, colorCSS, style]);
77
77
  Divider.register();
78
78
  export {
79
79
  Divider as D
@@ -1 +1 @@
1
- {"version":3,"file":"divider.js","sources":["../../src/divider/divider.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/divider.css?inline';\nimport { prop } from 'aeico';\n/**\n * A simple divider component that can be used to separate content. It supports both horizontal and vertical orientations, as well as customizable thickness and color.\n * @example\n * ```html\n * <ae-divider></ae-divider>\n * <ae-divider vertical></ae-divider>\n * <ae-divider thickness=\"4px\" color=\"primary\"></ae-divider>\n * ```\n * @props\n * - `vertical` (boolean): If true, the divider will be vertical. Default is false (horizontal).\n * - `thickness` (string): Custom thickness for the divider (e.g., \"2px\", \"0.5rem\"). If not provided, it will use the default thickness defined in CSS.\n * - `color` (string): Color variant for the divider (e.g., \"primary\", \"secondary\"). If not provided, it will use the default color defined in CSS.\n *\n * @csspart divider - The main divider element that can be styled.\n *\n * @cssproperty --thickness - Custom property to set the thickness of the divider when the `thickness` prop is used.\n */\nclass Divider extends AeicoComponent {\n static tagName = 'divider';\n\n @prop({ type: Boolean })\n accessor vertical: boolean = false;\n\n @prop({ type: String })\n accessor thickness: string | undefined;\n\n @prop({ type: String })\n accessor color: string | undefined;\n\n protected static styles = [styleVariables, colorCSS, style];\n\n protected render(): void {\n if (this.thickness) {\n this.style.setProperty('--thickness', this.thickness);\n } else {\n this.style.removeProperty('--thickness');\n }\n }\n}\n\nDivider.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-divider': Divider;\n }\n}\n\nexport default Divider;\nexport type DividerProps = InferProps<typeof Divider>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,gBAAA,eAAA,IAAA,OAAA,WAAA,YAAA;AAuBA,MAAM,iBAAgB,qBAGpB,gBAAA,CAAC,KAAK,EAAE,MAAM,QAAA,CAAS,CAAA,GAGvB,iBAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,aAAA,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAA,GATF,IAAe;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIE,iBAAA,MAAS,WAAoB,kBAA7B,OAAA,GAAA,MAA6B,KAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,YAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAIU,SAAe;AACvB,QAAI,KAAK,WAAW;AAClB,WAAK,MAAM,YAAY,eAAe,KAAK,SAAS;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,aAAa;AAAA,IACzC;AAAA,EACF;AACF;AArBA,QAAA,iBAAA,EAAA;AAIW,YAAA,oBAAA,QAAA;AAGA,aAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AANT,kBAAA,OAAA,GAAS,YADT,eAHI,SAIK,SAAA;AAGT,kBAAA,OAAA,GAAS,aADT,gBANI,SAOK,UAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YATI,SAUK,MAAA;AAVX,oBAAA,OAAM,OAAA;AACJ,cADI,SACG,WAAU,SAAA;AAWjB,cAZI,SAYa,UAAS,CAAC,gBAAgB,UAAU,KAAK,CAAA;AAW5D,QAAQ,SAAA;"}
1
+ {"version":3,"file":"divider.js","sources":["../../src/divider/divider.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/divider.css?inline';\nimport { prop } from 'aeico';\n/**\n * A simple divider component that can be used to separate content. It supports both horizontal and vertical orientations, as well as customizable thickness and color.\n * @example\n * ```html\n * <ae-divider></ae-divider>\n * <ae-divider vertical></ae-divider>\n * <ae-divider thickness=\"4px\" color=\"primary\"></ae-divider>\n * ```\n * @props\n * - `vertical` (boolean): If true, the divider will be vertical. Default is false (horizontal).\n * - `thickness` (string): Custom thickness for the divider (e.g., \"2px\", \"0.5rem\"). If not provided, it will use the default thickness defined in CSS.\n * - `color` (string): Color variant for the divider (e.g., \"primary\", \"secondary\"). If not provided, it will use the default color defined in CSS.\n *\n * @csspart divider - The main divider element that can be styled.\n *\n * @cssproperty --thickness - Custom property to set the thickness of the divider when the `thickness` prop is used.\n */\nclass Divider extends AeicoComponent {\n static tagName = 'divider';\n\n @prop({ type: Boolean })\n accessor vertical: boolean = false;\n\n @prop({ type: String })\n accessor thickness: string | undefined;\n\n @prop({ type: String })\n accessor color: string | undefined;\n\n protected static styles = [styleVariables, colorCSS, style];\n\n protected render(): void {\n if (this.thickness) {\n this.style.setProperty('--thickness', this.thickness);\n } else {\n this.style.removeProperty('--thickness');\n }\n }\n}\n\nDivider.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-divider': Divider;\n }\n}\n\nexport default Divider;\nexport type DividerProps = InferProps<typeof Divider>;\n"],"names":["styleVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,gBAAA,eAAA,IAAA,OAAA,WAAA,YAAA;AAuBA,MAAM,iBAAgB,qBAGpB,gBAAA,CAAC,KAAK,EAAE,MAAM,QAAA,CAAS,CAAA,GAGvB,iBAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,aAAA,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAA,GATF,IAAe;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIE,iBAAA,MAAS,WAAoB,kBAA7B,OAAA,GAAA,MAA6B,KAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,YAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAIU,SAAe;AACvB,QAAI,KAAK,WAAW;AAClB,WAAK,MAAM,YAAY,eAAe,KAAK,SAAS;AAAA,IACtD,OAAO;AACL,WAAK,MAAM,eAAe,aAAa;AAAA,IACzC;AAAA,EACF;AACF;AArBA,QAAA,iBAAA,EAAA;AAIW,YAAA,oBAAA,QAAA;AAGA,aAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AANT,kBAAA,OAAA,GAAS,YADT,eAHI,SAIK,SAAA;AAGT,kBAAA,OAAA,GAAS,aADT,gBANI,SAOK,UAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YATI,SAUK,MAAA;AAVX,oBAAA,OAAM,OAAA;AACJ,cADI,SACG,WAAU,SAAA;AAWjB,cAZI,SAYa,UAAS,CAACA,WAAgB,UAAU,KAAK,CAAA;AAW5D,QAAQ,SAAA;"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ const variables = require("./variables.cjs");
3
+ const aeicoComponent = require("./aeico-component.cjs");
4
+ const aeico = require("aeico");
5
+ const style = ":host {\n display: none;\n}\n\n:host([data-open]) {\n display: block;\n position: fixed;\n inset: 0;\n z-index: var(--ae-drawer-z-index, 1000);\n pointer-events: none;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: var(--color-overlay);\n animation: drawer-backdrop-in 0.2s ease;\n pointer-events: auto;\n}\n\n.panel {\n position: absolute;\n display: flex;\n flex-direction: column;\n background: var(--ae-surface-overlay);\n color: var(--ae-color-text-main);\n box-shadow: 0 8px 40px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n pointer-events: auto;\n outline: none;\n}\n\n.panel.placement-right {\n inset: 0 0 0 auto;\n width: var(--ae-drawer-size, 320px);\n max-width: 100%;\n border-radius: var(--ae-border-radius, var(--ae-border-radius)) 0 0 var(--ae-border-radius, var(--ae-border-radius));\n animation: drawer-slide-in-right 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.panel.placement-left {\n inset: 0 auto 0 0;\n width: var(--ae-drawer-size, 320px);\n max-width: 100%;\n border-radius: 0 var(--ae-border-radius, var(--ae-border-radius)) var(--ae-border-radius, var(--ae-border-radius)) 0;\n animation: drawer-slide-in-left 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.panel.placement-top {\n inset: 0 0 auto 0;\n height: var(--ae-drawer-size, 320px);\n max-height: 100%;\n border-radius: 0 0 var(--ae-border-radius, var(--ae-border-radius)) var(--ae-border-radius, var(--ae-border-radius));\n animation: drawer-slide-in-top 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.panel.placement-bottom {\n inset: auto 0 0 0;\n height: var(--ae-drawer-size, 320px);\n max-height: 100%;\n border-radius: var(--ae-border-radius, var(--ae-border-radius)) var(--ae-border-radius, var(--ae-border-radius)) 0 0;\n animation: drawer-slide-in-bottom 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ── Keyframes ───────────────────────────────────────────────────── */\n@keyframes drawer-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes drawer-slide-in-right {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes drawer-slide-in-left {\n from { transform: translateX(-100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes drawer-slide-in-top {\n from { transform: translateY(-100%); }\n to { transform: translateY(0); }\n}\n\n@keyframes drawer-slide-in-bottom {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n\n/* ── Header ──────────────────────────────────────────────────────── */\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--ae-size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--ae-color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--ae-border-radius, var(--ae-border-radius));\n background: transparent;\n color: var(--ae-color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--ae-border-subtle);\n color: var(--ae-color-text-main);\n}\n\n/* ── Body ────────────────────────────────────────────────────────── */\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* ── Footer ──────────────────────────────────────────────────────── */\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
6
+ var __create = Object.create;
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
10
+ var __typeError = (msg) => {
11
+ throw TypeError(msg);
12
+ };
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
15
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
16
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
17
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
18
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
19
+ var __runInitializers = (array, flags, self, value) => {
20
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
21
+ return value;
22
+ };
23
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
24
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
25
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
26
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
27
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
28
+ return __privateGet(this, extra);
29
+ }, set [name](x) {
30
+ return __privateSet(this, extra, x);
31
+ } }, name));
32
+ for (var i = decorators.length - 1; i >= 0; i--) {
33
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
34
+ {
35
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
36
+ access.get = (x) => x[name];
37
+ access.set = (x, y) => x[name] = y;
38
+ }
39
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
40
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
41
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
42
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
43
+ }
44
+ return desc && __defProp(target, name, desc), target;
45
+ };
46
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
47
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
48
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
49
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
50
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
51
+ var _closeOnOverlayClick_dec, _header_dec, _closable_dec, _modal_dec, _size_dec, _placement_dec, _label_dec, _a, _init, _label, _placement, _size, _modal, _closable, _header, _closeOnOverlayClick;
52
+ class Drawer extends (_a = aeicoComponent.AeicoComponent, _label_dec = [aeico.prop({ type: String })], _placement_dec = [aeico.prop({ type: String })], _size_dec = [aeico.prop({ type: String })], _modal_dec = [aeico.prop({ type: Boolean })], _closable_dec = [aeico.prop({ type: Boolean })], _header_dec = [aeico.prop({ type: Boolean })], _closeOnOverlayClick_dec = [aeico.prop({ type: Boolean })], _a) {
53
+ constructor() {
54
+ super(...arguments);
55
+ __privateAdd(this, _label, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
56
+ __privateAdd(this, _placement, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
57
+ __privateAdd(this, _size, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
58
+ __privateAdd(this, _modal, __runInitializers(_init, 20, this, true)), __runInitializers(_init, 23, this);
59
+ __privateAdd(this, _closable, __runInitializers(_init, 24, this, true)), __runInitializers(_init, 27, this);
60
+ __privateAdd(this, _header, __runInitializers(_init, 28, this, true)), __runInitializers(_init, 31, this);
61
+ __privateAdd(this, _closeOnOverlayClick, __runInitializers(_init, 32, this, true)), __runInitializers(_init, 35, this);
62
+ __publicField(this, "_panelEl", null);
63
+ __publicField(this, "_hasFooter", false);
64
+ __publicField(this, "_handleBackdropClick", () => {
65
+ if (this.closeOnOverlayClick) {
66
+ this.close();
67
+ }
68
+ });
69
+ __publicField(this, "_handlePanelClick", (e) => {
70
+ const path = e.composedPath();
71
+ for (const el of path) {
72
+ if (el instanceof Element && el.hasAttribute("data-close")) {
73
+ this.close();
74
+ return;
75
+ }
76
+ if (el === this._panelEl) break;
77
+ }
78
+ });
79
+ __publicField(this, "_handleKeydown", (e) => {
80
+ if (e.key === "Escape") {
81
+ e.stopPropagation();
82
+ this.close();
83
+ }
84
+ });
85
+ __publicField(this, "_handleFooterSlotChange", (e) => {
86
+ const slotEl = e.target;
87
+ const hasContent = slotEl.assignedElements().length > 0;
88
+ if (hasContent !== this._hasFooter) {
89
+ this._hasFooter = hasContent;
90
+ this.update();
91
+ }
92
+ });
93
+ }
94
+ render() {
95
+ const placement = this.placement || "right";
96
+ const isVertical = placement === "top" || placement === "bottom";
97
+ return aeico.html(({ div, header, footer, span, button, slot }) => {
98
+ if (this.modal) {
99
+ div({ className: "backdrop", "@click": this._handleBackdropClick });
100
+ }
101
+ this._panelEl = div(
102
+ {
103
+ className: `panel placement-${placement}`,
104
+ role: "dialog",
105
+ "aria-modal": this.modal ? "true" : "false",
106
+ "aria-label": this.label,
107
+ tabindex: "-1",
108
+ "@click": this._handlePanelClick,
109
+ style: {
110
+ [isVertical ? "height" : "width"]: this.size || ""
111
+ }
112
+ },
113
+ () => {
114
+ if (this.header) {
115
+ header({}, () => {
116
+ slot({ name: "header" }, () => {
117
+ span({ className: "label", textContent: this.label || "" });
118
+ });
119
+ if (this.closable) {
120
+ button({
121
+ className: "close-btn",
122
+ textContent: "×",
123
+ "@click": () => this.close()
124
+ });
125
+ }
126
+ });
127
+ }
128
+ div({ className: "body" }, () => {
129
+ slot();
130
+ });
131
+ footer({ style: { display: this._hasFooter ? "" : "none" } }, () => {
132
+ slot({ name: "footer", "@slotchange": this._handleFooterSlotChange });
133
+ });
134
+ }
135
+ );
136
+ });
137
+ }
138
+ open() {
139
+ this.setAttribute("data-open", "");
140
+ document.addEventListener("keydown", this._handleKeydown);
141
+ requestAnimationFrame(() => {
142
+ var _a2, _b;
143
+ const btn = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector(".close-btn");
144
+ (_b = btn ?? this._panelEl) == null ? void 0 : _b.focus();
145
+ });
146
+ this.emit("open", { detail: { target: this } });
147
+ }
148
+ close() {
149
+ this.removeAttribute("data-open");
150
+ document.removeEventListener("keydown", this._handleKeydown);
151
+ this.emit("close", { detail: { target: this } });
152
+ }
153
+ isOpen() {
154
+ return this.hasAttribute("data-open");
155
+ }
156
+ disconnectedCallback() {
157
+ super.disconnectedCallback();
158
+ document.removeEventListener("keydown", this._handleKeydown);
159
+ }
160
+ }
161
+ _init = __decoratorStart(_a);
162
+ _label = /* @__PURE__ */ new WeakMap();
163
+ _placement = /* @__PURE__ */ new WeakMap();
164
+ _size = /* @__PURE__ */ new WeakMap();
165
+ _modal = /* @__PURE__ */ new WeakMap();
166
+ _closable = /* @__PURE__ */ new WeakMap();
167
+ _header = /* @__PURE__ */ new WeakMap();
168
+ _closeOnOverlayClick = /* @__PURE__ */ new WeakMap();
169
+ __decorateElement(_init, 4, "label", _label_dec, Drawer, _label);
170
+ __decorateElement(_init, 4, "placement", _placement_dec, Drawer, _placement);
171
+ __decorateElement(_init, 4, "size", _size_dec, Drawer, _size);
172
+ __decorateElement(_init, 4, "modal", _modal_dec, Drawer, _modal);
173
+ __decorateElement(_init, 4, "closable", _closable_dec, Drawer, _closable);
174
+ __decorateElement(_init, 4, "header", _header_dec, Drawer, _header);
175
+ __decorateElement(_init, 4, "closeOnOverlayClick", _closeOnOverlayClick_dec, Drawer, _closeOnOverlayClick);
176
+ __decoratorMetadata(_init, Drawer);
177
+ __publicField(Drawer, "styles", [variables.variables, style]);
178
+ Drawer.register();
179
+ exports.Drawer = Drawer;
180
+ //# sourceMappingURL=drawer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.cjs","sources":["../../src/drawer/drawer.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport style from '../styles/components/drawer.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html, prop } from 'aeico';\nimport type { DrawerPlacement } from './defines';\n\nclass Drawer extends AeicoComponent {\n protected static styles = [styleVariables, style];\n\n @prop({ type: String })\n accessor label: string | undefined;\n\n @prop({ type: String })\n accessor placement: DrawerPlacement | undefined;\n\n @prop({ type: String })\n accessor size: string | undefined;\n\n @prop({ type: Boolean })\n accessor modal: boolean = true;\n\n @prop({ type: Boolean })\n accessor closable: boolean = true;\n\n @prop({ type: Boolean })\n accessor header: boolean = true;\n\n @prop({ type: Boolean })\n accessor closeOnOverlayClick: boolean = true;\n\n private _panelEl: HTMLDivElement | null = null;\n private _hasFooter = false;\n\n protected render() {\n const placement = this.placement || 'right';\n const isVertical = placement === 'top' || placement === 'bottom';\n\n return html(({ div, header, footer, span, button, slot }) => {\n // Backdrop (modal only)\n if (this.modal) {\n div({ className: 'backdrop', '@click': this._handleBackdropClick });\n }\n\n // Panel\n this._panelEl = div(\n {\n className: `panel placement-${placement}`,\n role: 'dialog',\n 'aria-modal': this.modal ? 'true' : 'false',\n 'aria-label': this.label,\n tabindex: '-1',\n '@click': this._handlePanelClick,\n style: {\n [isVertical ? 'height' : 'width']: this.size || '',\n },\n },\n () => {\n // Header\n if (this.header) {\n header({}, () => {\n slot({ name: 'header' }, () => {\n span({ className: 'label', textContent: this.label || '' });\n });\n if (this.closable) {\n button({\n className: 'close-btn',\n textContent: '×',\n '@click': () => this.close(),\n });\n }\n });\n }\n\n // Body\n div({ className: 'body' }, () => {\n slot();\n });\n\n // Footer — always rendered to capture slotchange, hidden when empty\n footer({ style: { display: this._hasFooter ? '' : 'none' } }, () => {\n slot({ name: 'footer', '@slotchange': this._handleFooterSlotChange });\n });\n },\n );\n });\n }\n\n private _handleBackdropClick = () => {\n if (this.closeOnOverlayClick) {\n this.close();\n }\n };\n\n private _handlePanelClick = (e: Event) => {\n const path = (e as MouseEvent).composedPath();\n for (const el of path) {\n if (el instanceof Element && el.hasAttribute('data-close')) {\n this.close();\n return;\n }\n if (el === this._panelEl) break;\n }\n };\n\n private _handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n this.close();\n }\n };\n\n private _handleFooterSlotChange = (e: Event) => {\n const slotEl = e.target as HTMLSlotElement;\n const hasContent = slotEl.assignedElements().length > 0;\n if (hasContent !== this._hasFooter) {\n this._hasFooter = hasContent;\n this.update();\n }\n };\n\n open() {\n this.setAttribute('data-open', '');\n document.addEventListener('keydown', this._handleKeydown);\n requestAnimationFrame(() => {\n const btn = this.shadowRoot?.querySelector<HTMLElement>('.close-btn');\n (btn ?? this._panelEl)?.focus();\n });\n this.emit('open', { detail: { target: this } });\n }\n\n close() {\n this.removeAttribute('data-open');\n document.removeEventListener('keydown', this._handleKeydown);\n this.emit('close', { detail: { target: this } });\n }\n\n isOpen(): boolean {\n return this.hasAttribute('data-open');\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._handleKeydown);\n }\n}\n\nDrawer.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-drawer': Drawer;\n }\n}\n\nexport default Drawer;\nexport type DrawerProps = InferProps<typeof Drawer>;\n"],"names":["prop","html","_a","styleVariables"],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import { v as variables } from "./variables.js";
2
+ import { A as AeicoComponent } from "./aeico-component.js";
3
+ import { prop, html } from "aeico";
4
+ const style = ":host {\n display: none;\n}\n\n:host([data-open]) {\n display: block;\n position: fixed;\n inset: 0;\n z-index: var(--ae-drawer-z-index, 1000);\n pointer-events: none;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: var(--color-overlay);\n animation: drawer-backdrop-in 0.2s ease;\n pointer-events: auto;\n}\n\n.panel {\n position: absolute;\n display: flex;\n flex-direction: column;\n background: var(--ae-surface-overlay);\n color: var(--ae-color-text-main);\n box-shadow: 0 8px 40px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n pointer-events: auto;\n outline: none;\n}\n\n.panel.placement-right {\n inset: 0 0 0 auto;\n width: var(--ae-drawer-size, 320px);\n max-width: 100%;\n border-radius: var(--ae-border-radius, var(--ae-border-radius)) 0 0 var(--ae-border-radius, var(--ae-border-radius));\n animation: drawer-slide-in-right 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.panel.placement-left {\n inset: 0 auto 0 0;\n width: var(--ae-drawer-size, 320px);\n max-width: 100%;\n border-radius: 0 var(--ae-border-radius, var(--ae-border-radius)) var(--ae-border-radius, var(--ae-border-radius)) 0;\n animation: drawer-slide-in-left 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.panel.placement-top {\n inset: 0 0 auto 0;\n height: var(--ae-drawer-size, 320px);\n max-height: 100%;\n border-radius: 0 0 var(--ae-border-radius, var(--ae-border-radius)) var(--ae-border-radius, var(--ae-border-radius));\n animation: drawer-slide-in-top 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.panel.placement-bottom {\n inset: auto 0 0 0;\n height: var(--ae-drawer-size, 320px);\n max-height: 100%;\n border-radius: var(--ae-border-radius, var(--ae-border-radius)) var(--ae-border-radius, var(--ae-border-radius)) 0 0;\n animation: drawer-slide-in-bottom 0.25s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ── Keyframes ───────────────────────────────────────────────────── */\n@keyframes drawer-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes drawer-slide-in-right {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes drawer-slide-in-left {\n from { transform: translateX(-100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes drawer-slide-in-top {\n from { transform: translateY(-100%); }\n to { transform: translateY(0); }\n}\n\n@keyframes drawer-slide-in-bottom {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n\n/* ── Header ──────────────────────────────────────────────────────── */\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--ae-size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--ae-color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--ae-border-radius, var(--ae-border-radius));\n background: transparent;\n color: var(--ae-color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--ae-border-subtle);\n color: var(--ae-color-text-main);\n}\n\n/* ── Body ────────────────────────────────────────────────────────── */\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* ── Footer ──────────────────────────────────────────────────────── */\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
5
+ var __create = Object.create;
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
9
+ var __typeError = (msg) => {
10
+ throw TypeError(msg);
11
+ };
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
14
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
15
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
16
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
17
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
18
+ var __runInitializers = (array, flags, self, value) => {
19
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
20
+ return value;
21
+ };
22
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
23
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
24
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
25
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
26
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
27
+ return __privateGet(this, extra);
28
+ }, set [name](x) {
29
+ return __privateSet(this, extra, x);
30
+ } }, name));
31
+ for (var i = decorators.length - 1; i >= 0; i--) {
32
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
33
+ {
34
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
35
+ access.get = (x) => x[name];
36
+ access.set = (x, y) => x[name] = y;
37
+ }
38
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
39
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
40
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
41
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
42
+ }
43
+ return desc && __defProp(target, name, desc), target;
44
+ };
45
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
46
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
47
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
48
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
49
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
50
+ var _closeOnOverlayClick_dec, _header_dec, _closable_dec, _modal_dec, _size_dec, _placement_dec, _label_dec, _a, _init, _label, _placement, _size, _modal, _closable, _header, _closeOnOverlayClick;
51
+ class Drawer extends (_a = AeicoComponent, _label_dec = [prop({ type: String })], _placement_dec = [prop({ type: String })], _size_dec = [prop({ type: String })], _modal_dec = [prop({ type: Boolean })], _closable_dec = [prop({ type: Boolean })], _header_dec = [prop({ type: Boolean })], _closeOnOverlayClick_dec = [prop({ type: Boolean })], _a) {
52
+ constructor() {
53
+ super(...arguments);
54
+ __privateAdd(this, _label, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
55
+ __privateAdd(this, _placement, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
56
+ __privateAdd(this, _size, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
57
+ __privateAdd(this, _modal, __runInitializers(_init, 20, this, true)), __runInitializers(_init, 23, this);
58
+ __privateAdd(this, _closable, __runInitializers(_init, 24, this, true)), __runInitializers(_init, 27, this);
59
+ __privateAdd(this, _header, __runInitializers(_init, 28, this, true)), __runInitializers(_init, 31, this);
60
+ __privateAdd(this, _closeOnOverlayClick, __runInitializers(_init, 32, this, true)), __runInitializers(_init, 35, this);
61
+ __publicField(this, "_panelEl", null);
62
+ __publicField(this, "_hasFooter", false);
63
+ __publicField(this, "_handleBackdropClick", () => {
64
+ if (this.closeOnOverlayClick) {
65
+ this.close();
66
+ }
67
+ });
68
+ __publicField(this, "_handlePanelClick", (e) => {
69
+ const path = e.composedPath();
70
+ for (const el of path) {
71
+ if (el instanceof Element && el.hasAttribute("data-close")) {
72
+ this.close();
73
+ return;
74
+ }
75
+ if (el === this._panelEl) break;
76
+ }
77
+ });
78
+ __publicField(this, "_handleKeydown", (e) => {
79
+ if (e.key === "Escape") {
80
+ e.stopPropagation();
81
+ this.close();
82
+ }
83
+ });
84
+ __publicField(this, "_handleFooterSlotChange", (e) => {
85
+ const slotEl = e.target;
86
+ const hasContent = slotEl.assignedElements().length > 0;
87
+ if (hasContent !== this._hasFooter) {
88
+ this._hasFooter = hasContent;
89
+ this.update();
90
+ }
91
+ });
92
+ }
93
+ render() {
94
+ const placement = this.placement || "right";
95
+ const isVertical = placement === "top" || placement === "bottom";
96
+ return html(({ div, header, footer, span, button, slot }) => {
97
+ if (this.modal) {
98
+ div({ className: "backdrop", "@click": this._handleBackdropClick });
99
+ }
100
+ this._panelEl = div(
101
+ {
102
+ className: `panel placement-${placement}`,
103
+ role: "dialog",
104
+ "aria-modal": this.modal ? "true" : "false",
105
+ "aria-label": this.label,
106
+ tabindex: "-1",
107
+ "@click": this._handlePanelClick,
108
+ style: {
109
+ [isVertical ? "height" : "width"]: this.size || ""
110
+ }
111
+ },
112
+ () => {
113
+ if (this.header) {
114
+ header({}, () => {
115
+ slot({ name: "header" }, () => {
116
+ span({ className: "label", textContent: this.label || "" });
117
+ });
118
+ if (this.closable) {
119
+ button({
120
+ className: "close-btn",
121
+ textContent: "×",
122
+ "@click": () => this.close()
123
+ });
124
+ }
125
+ });
126
+ }
127
+ div({ className: "body" }, () => {
128
+ slot();
129
+ });
130
+ footer({ style: { display: this._hasFooter ? "" : "none" } }, () => {
131
+ slot({ name: "footer", "@slotchange": this._handleFooterSlotChange });
132
+ });
133
+ }
134
+ );
135
+ });
136
+ }
137
+ open() {
138
+ this.setAttribute("data-open", "");
139
+ document.addEventListener("keydown", this._handleKeydown);
140
+ requestAnimationFrame(() => {
141
+ var _a2, _b;
142
+ const btn = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector(".close-btn");
143
+ (_b = btn ?? this._panelEl) == null ? void 0 : _b.focus();
144
+ });
145
+ this.emit("open", { detail: { target: this } });
146
+ }
147
+ close() {
148
+ this.removeAttribute("data-open");
149
+ document.removeEventListener("keydown", this._handleKeydown);
150
+ this.emit("close", { detail: { target: this } });
151
+ }
152
+ isOpen() {
153
+ return this.hasAttribute("data-open");
154
+ }
155
+ disconnectedCallback() {
156
+ super.disconnectedCallback();
157
+ document.removeEventListener("keydown", this._handleKeydown);
158
+ }
159
+ }
160
+ _init = __decoratorStart(_a);
161
+ _label = /* @__PURE__ */ new WeakMap();
162
+ _placement = /* @__PURE__ */ new WeakMap();
163
+ _size = /* @__PURE__ */ new WeakMap();
164
+ _modal = /* @__PURE__ */ new WeakMap();
165
+ _closable = /* @__PURE__ */ new WeakMap();
166
+ _header = /* @__PURE__ */ new WeakMap();
167
+ _closeOnOverlayClick = /* @__PURE__ */ new WeakMap();
168
+ __decorateElement(_init, 4, "label", _label_dec, Drawer, _label);
169
+ __decorateElement(_init, 4, "placement", _placement_dec, Drawer, _placement);
170
+ __decorateElement(_init, 4, "size", _size_dec, Drawer, _size);
171
+ __decorateElement(_init, 4, "modal", _modal_dec, Drawer, _modal);
172
+ __decorateElement(_init, 4, "closable", _closable_dec, Drawer, _closable);
173
+ __decorateElement(_init, 4, "header", _header_dec, Drawer, _header);
174
+ __decorateElement(_init, 4, "closeOnOverlayClick", _closeOnOverlayClick_dec, Drawer, _closeOnOverlayClick);
175
+ __decoratorMetadata(_init, Drawer);
176
+ __publicField(Drawer, "styles", [variables, style]);
177
+ Drawer.register();
178
+ export {
179
+ Drawer as D
180
+ };
181
+ //# sourceMappingURL=drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.js","sources":["../../src/drawer/drawer.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport style from '../styles/components/drawer.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html, prop } from 'aeico';\nimport type { DrawerPlacement } from './defines';\n\nclass Drawer extends AeicoComponent {\n protected static styles = [styleVariables, style];\n\n @prop({ type: String })\n accessor label: string | undefined;\n\n @prop({ type: String })\n accessor placement: DrawerPlacement | undefined;\n\n @prop({ type: String })\n accessor size: string | undefined;\n\n @prop({ type: Boolean })\n accessor modal: boolean = true;\n\n @prop({ type: Boolean })\n accessor closable: boolean = true;\n\n @prop({ type: Boolean })\n accessor header: boolean = true;\n\n @prop({ type: Boolean })\n accessor closeOnOverlayClick: boolean = true;\n\n private _panelEl: HTMLDivElement | null = null;\n private _hasFooter = false;\n\n protected render() {\n const placement = this.placement || 'right';\n const isVertical = placement === 'top' || placement === 'bottom';\n\n return html(({ div, header, footer, span, button, slot }) => {\n // Backdrop (modal only)\n if (this.modal) {\n div({ className: 'backdrop', '@click': this._handleBackdropClick });\n }\n\n // Panel\n this._panelEl = div(\n {\n className: `panel placement-${placement}`,\n role: 'dialog',\n 'aria-modal': this.modal ? 'true' : 'false',\n 'aria-label': this.label,\n tabindex: '-1',\n '@click': this._handlePanelClick,\n style: {\n [isVertical ? 'height' : 'width']: this.size || '',\n },\n },\n () => {\n // Header\n if (this.header) {\n header({}, () => {\n slot({ name: 'header' }, () => {\n span({ className: 'label', textContent: this.label || '' });\n });\n if (this.closable) {\n button({\n className: 'close-btn',\n textContent: '×',\n '@click': () => this.close(),\n });\n }\n });\n }\n\n // Body\n div({ className: 'body' }, () => {\n slot();\n });\n\n // Footer — always rendered to capture slotchange, hidden when empty\n footer({ style: { display: this._hasFooter ? '' : 'none' } }, () => {\n slot({ name: 'footer', '@slotchange': this._handleFooterSlotChange });\n });\n },\n );\n });\n }\n\n private _handleBackdropClick = () => {\n if (this.closeOnOverlayClick) {\n this.close();\n }\n };\n\n private _handlePanelClick = (e: Event) => {\n const path = (e as MouseEvent).composedPath();\n for (const el of path) {\n if (el instanceof Element && el.hasAttribute('data-close')) {\n this.close();\n return;\n }\n if (el === this._panelEl) break;\n }\n };\n\n private _handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n this.close();\n }\n };\n\n private _handleFooterSlotChange = (e: Event) => {\n const slotEl = e.target as HTMLSlotElement;\n const hasContent = slotEl.assignedElements().length > 0;\n if (hasContent !== this._hasFooter) {\n this._hasFooter = hasContent;\n this.update();\n }\n };\n\n open() {\n this.setAttribute('data-open', '');\n document.addEventListener('keydown', this._handleKeydown);\n requestAnimationFrame(() => {\n const btn = this.shadowRoot?.querySelector<HTMLElement>('.close-btn');\n (btn ?? this._panelEl)?.focus();\n });\n this.emit('open', { detail: { target: this } });\n }\n\n close() {\n this.removeAttribute('data-open');\n document.removeEventListener('keydown', this._handleKeydown);\n this.emit('close', { detail: { target: this } });\n }\n\n isOpen(): boolean {\n return this.hasAttribute('data-open');\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._handleKeydown);\n }\n}\n\nDrawer.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-drawer': Drawer;\n }\n}\n\nexport default Drawer;\nexport type DrawerProps = InferProps<typeof Drawer>;\n"],"names":["_a","styleVariables"],"mappings":"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"}