aeico-components 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +0 -0
  2. package/dist/alert.cjs +637 -4
  3. package/dist/alert.cjs.map +7 -1
  4. package/dist/alert.js +575 -3
  5. package/dist/alert.js.map +7 -1
  6. package/dist/badge.cjs +573 -4
  7. package/dist/badge.cjs.map +7 -1
  8. package/dist/badge.js +510 -3
  9. package/dist/badge.js.map +7 -1
  10. package/dist/breadcrumb.cjs +709 -5
  11. package/dist/breadcrumb.cjs.map +7 -1
  12. package/dist/breadcrumb.js +644 -4
  13. package/dist/breadcrumb.js.map +7 -1
  14. package/dist/button-group.cjs +546 -4
  15. package/dist/button-group.cjs.map +7 -1
  16. package/dist/button-group.js +489 -3
  17. package/dist/button-group.js.map +7 -1
  18. package/dist/button.cjs +834 -4
  19. package/dist/button.cjs.map +7 -1
  20. package/dist/button.js +771 -3
  21. package/dist/button.js.map +7 -1
  22. package/dist/card.cjs +574 -4
  23. package/dist/card.cjs.map +7 -1
  24. package/dist/card.js +516 -3
  25. package/dist/card.js.map +7 -1
  26. package/dist/checkbox.cjs +867 -4
  27. package/dist/checkbox.cjs.map +7 -1
  28. package/dist/checkbox.js +794 -3
  29. package/dist/checkbox.js.map +7 -1
  30. package/dist/copy-button.cjs +1046 -4
  31. package/dist/copy-button.cjs.map +7 -1
  32. package/dist/copy-button.js +969 -3
  33. package/dist/copy-button.js.map +7 -1
  34. package/dist/detail-group.cjs +533 -0
  35. package/dist/detail-group.cjs.map +7 -0
  36. package/dist/detail-group.js +477 -0
  37. package/dist/detail-group.js.map +7 -0
  38. package/dist/detail.cjs +627 -4
  39. package/dist/detail.cjs.map +7 -1
  40. package/dist/detail.js +569 -3
  41. package/dist/detail.js.map +7 -1
  42. package/dist/dialog.cjs +738 -4
  43. package/dist/dialog.cjs.map +7 -1
  44. package/dist/dialog.js +665 -3
  45. package/dist/dialog.js.map +7 -1
  46. package/dist/divider.cjs +558 -4
  47. package/dist/divider.cjs.map +7 -1
  48. package/dist/divider.js +502 -3
  49. package/dist/divider.js.map +7 -1
  50. package/dist/drawer.cjs +818 -4
  51. package/dist/drawer.cjs.map +7 -1
  52. package/dist/drawer.js +749 -3
  53. package/dist/drawer.js.map +7 -1
  54. package/dist/dropdown.cjs +1396 -5
  55. package/dist/dropdown.cjs.map +7 -1
  56. package/dist/dropdown.js +1316 -4
  57. package/dist/dropdown.js.map +7 -1
  58. package/dist/icon-button.cjs +999 -4
  59. package/dist/icon-button.cjs.map +7 -1
  60. package/dist/icon-button.js +930 -3
  61. package/dist/icon-button.js.map +7 -1
  62. package/dist/icon.cjs +613 -4
  63. package/dist/icon.cjs.map +7 -1
  64. package/dist/icon.js +547 -3
  65. package/dist/icon.js.map +7 -1
  66. package/dist/index.cjs +6484 -188
  67. package/dist/index.cjs.map +7 -1
  68. package/dist/index.js +6095 -147
  69. package/dist/index.js.map +7 -1
  70. package/dist/menu.cjs +841 -4
  71. package/dist/menu.cjs.map +7 -1
  72. package/dist/menu.js +785 -3
  73. package/dist/menu.js.map +7 -1
  74. package/dist/navbar.cjs +622 -4
  75. package/dist/navbar.cjs.map +7 -1
  76. package/dist/navbar.js +564 -3
  77. package/dist/navbar.js.map +7 -1
  78. package/dist/number-input.cjs +887 -0
  79. package/dist/number-input.cjs.map +7 -0
  80. package/dist/number-input.js +820 -0
  81. package/dist/number-input.js.map +7 -0
  82. package/dist/pagination.cjs +1099 -4
  83. package/dist/pagination.cjs.map +7 -1
  84. package/dist/pagination.js +1029 -3
  85. package/dist/pagination.js.map +7 -1
  86. package/dist/progress-bar.cjs +581 -4
  87. package/dist/progress-bar.cjs.map +7 -1
  88. package/dist/progress-bar.js +525 -3
  89. package/dist/progress-bar.js.map +7 -1
  90. package/dist/radio-group.cjs +973 -5
  91. package/dist/radio-group.cjs.map +7 -1
  92. package/dist/radio-group.js +899 -4
  93. package/dist/radio-group.js.map +7 -1
  94. package/dist/select.cjs +1242 -45
  95. package/dist/select.cjs.map +7 -1
  96. package/dist/select.js +1159 -44
  97. package/dist/select.js.map +7 -1
  98. package/dist/slider.cjs +1420 -4
  99. package/dist/slider.cjs.map +7 -1
  100. package/dist/slider.js +1351 -3
  101. package/dist/slider.js.map +7 -1
  102. package/dist/spinner.cjs +587 -4
  103. package/dist/spinner.cjs.map +7 -1
  104. package/dist/spinner.js +528 -3
  105. package/dist/spinner.js.map +7 -1
  106. package/dist/styles/layout.cjs +1 -0
  107. package/dist/styles/layout.js +1 -0
  108. package/dist/styles/radius.cjs +1 -0
  109. package/dist/styles/radius.js +1 -0
  110. package/dist/styles/variables.cjs +1 -0
  111. package/dist/styles/variables.js +1 -0
  112. package/dist/switch.cjs +1092 -4
  113. package/dist/switch.cjs.map +7 -1
  114. package/dist/switch.js +1013 -3
  115. package/dist/switch.js.map +7 -1
  116. package/dist/tabs.cjs +660 -6
  117. package/dist/tabs.cjs.map +7 -1
  118. package/dist/tabs.js +591 -5
  119. package/dist/tabs.js.map +7 -1
  120. package/dist/tag.cjs +591 -3
  121. package/dist/tag.cjs.map +7 -1
  122. package/dist/tag.js +532 -2
  123. package/dist/tag.js.map +7 -1
  124. package/dist/text-input.cjs +829 -4
  125. package/dist/text-input.cjs.map +7 -1
  126. package/dist/text-input.js +761 -3
  127. package/dist/text-input.js.map +7 -1
  128. package/dist/textarea.cjs +914 -3
  129. package/dist/textarea.cjs.map +7 -1
  130. package/dist/textarea.js +854 -2
  131. package/dist/textarea.js.map +7 -1
  132. package/dist/tooltip.cjs +764 -4
  133. package/dist/tooltip.cjs.map +7 -1
  134. package/dist/tooltip.js +711 -3
  135. package/dist/tooltip.js.map +7 -1
  136. package/dist/tree.cjs +1059 -4
  137. package/dist/tree.cjs.map +7 -1
  138. package/dist/tree.js +985 -3
  139. package/dist/tree.js.map +7 -1
  140. package/dist/types/card/defines.d.ts +1 -1
  141. package/dist/types/detail/defines.d.ts +1 -1
  142. package/dist/types/dialog/dialog.d.ts +1 -0
  143. package/dist/types/drawer/drawer.d.ts +2 -0
  144. package/dist/types/icon/defines.d.ts +7 -1
  145. package/dist/types/icon/index.d.ts +1 -1
  146. package/dist/types/menu/defines.d.ts +1 -0
  147. package/dist/types/menu/menu-item.d.ts +1 -0
  148. package/dist/types/menu/menu.d.ts +1 -0
  149. package/dist/types/styles/layout.d.ts +2 -0
  150. package/dist/types/styles/radius.d.ts +2 -0
  151. package/dist/types/styles/variables.d.ts +2 -0
  152. package/dist/types/tabs/defines.d.ts +1 -0
  153. package/dist/types/tabs/tabs.d.ts +3 -0
  154. package/package.json +31 -7
  155. package/src/alert/alert.ts +3 -3
  156. package/src/badge/badge.ts +4 -4
  157. package/src/breadcrumb/breadcrumb-item.ts +2 -2
  158. package/src/breadcrumb/breadcrumb.ts +3 -3
  159. package/src/button/button.ts +4 -4
  160. package/src/button-group/button-group.ts +8 -9
  161. package/src/card/card.ts +3 -3
  162. package/src/card/defines.ts +1 -1
  163. package/src/checkbox/checkbox.ts +6 -6
  164. package/src/copy-button/copy-button.ts +13 -9
  165. package/src/detail/defines.ts +1 -1
  166. package/src/detail/detail.ts +3 -3
  167. package/src/detail-group/detail-group.ts +2 -2
  168. package/src/dialog/dialog.ts +15 -14
  169. package/src/divider/divider.ts +3 -3
  170. package/src/drawer/drawer.ts +28 -11
  171. package/src/dropdown/dropdown-item.ts +2 -2
  172. package/src/dropdown/dropdown.ts +2 -2
  173. package/src/icon/defines.ts +8 -1
  174. package/src/icon/icon.ts +32 -14
  175. package/src/icon/index.ts +1 -1
  176. package/src/icon/registry.ts +2 -2
  177. package/src/menu/defines.ts +1 -0
  178. package/src/menu/menu-item.ts +14 -4
  179. package/src/menu/menu.ts +5 -2
  180. package/src/navbar/navbar.ts +3 -3
  181. package/src/number-input/number-input.ts +5 -5
  182. package/src/pagination/pagination.ts +3 -3
  183. package/src/progress-bar/progress-bar.ts +3 -3
  184. package/src/radio-group/radio-group.ts +12 -8
  185. package/src/select/select-option.ts +2 -2
  186. package/src/select/select.ts +5 -5
  187. package/src/slider/slider.ts +6 -6
  188. package/src/spinner/spinner.ts +4 -4
  189. package/src/styles/color.css +91 -91
  190. package/src/styles/components/action-button.css +12 -12
  191. package/src/styles/components/alert.css +22 -28
  192. package/src/styles/components/badge.css +13 -20
  193. package/src/styles/components/breadcrumb-item.css +7 -7
  194. package/src/styles/components/button-group.css +2 -0
  195. package/src/styles/components/button.css +39 -50
  196. package/src/styles/components/card.css +69 -30
  197. package/src/styles/components/checkbox.css +22 -16
  198. package/src/styles/components/copy-button.css +22 -33
  199. package/src/styles/components/detail.css +51 -39
  200. package/src/styles/components/dialog.css +11 -11
  201. package/src/styles/components/divider.css +3 -3
  202. package/src/styles/components/drawer.css +59 -27
  203. package/src/styles/components/dropdown-item.css +7 -8
  204. package/src/styles/components/dropdown.css +3 -4
  205. package/src/styles/components/field-label.css +13 -13
  206. package/src/styles/components/icon-button.css +25 -36
  207. package/src/styles/components/icon.css +1 -1
  208. package/src/styles/components/menu-item.css +13 -8
  209. package/src/styles/components/navbar.css +23 -44
  210. package/src/styles/components/number-input.css +27 -36
  211. package/src/styles/components/pagination.css +31 -31
  212. package/src/styles/components/progress-bar.css +2 -3
  213. package/src/styles/components/radio-group.css +88 -83
  214. package/src/styles/components/select-option.css +5 -5
  215. package/src/styles/components/select.css +21 -33
  216. package/src/styles/components/slider.css +56 -34
  217. package/src/styles/components/spinner.css +7 -9
  218. package/src/styles/components/switch.css +21 -19
  219. package/src/styles/components/tab.css +4 -5
  220. package/src/styles/components/tabs.css +48 -1
  221. package/src/styles/components/tag.css +14 -21
  222. package/src/styles/components/text-input.css +13 -22
  223. package/src/styles/components/textarea.css +12 -21
  224. package/src/styles/components/tooltip.css +4 -5
  225. package/src/styles/components/tree-item.css +12 -12
  226. package/src/styles/layout.css +5 -2
  227. package/src/styles/radius.css +25 -0
  228. package/src/styles/size.css +7 -7
  229. package/src/styles/variables.css +271 -247
  230. package/src/switch/switch.ts +6 -6
  231. package/src/tabs/defines.ts +1 -0
  232. package/src/tabs/tab-panel.ts +1 -1
  233. package/src/tabs/tab.ts +1 -1
  234. package/src/tabs/tabs.ts +14 -2
  235. package/src/tag/tag.ts +4 -4
  236. package/src/text-input/text-input.ts +5 -5
  237. package/src/textarea/textarea.ts +5 -5
  238. package/src/tooltip/tooltip.ts +2 -2
  239. package/src/tree/tree-item.ts +2 -2
  240. package/src/tree/tree.ts +2 -2
  241. package/dist/chunks/action-button.cjs +0 -296
  242. package/dist/chunks/action-button.cjs.map +0 -1
  243. package/dist/chunks/action-button.js +0 -297
  244. package/dist/chunks/action-button.js.map +0 -1
  245. package/dist/chunks/aeico-component.cjs +0 -17
  246. package/dist/chunks/aeico-component.cjs.map +0 -1
  247. package/dist/chunks/aeico-component.js +0 -18
  248. package/dist/chunks/aeico-component.js.map +0 -1
  249. package/dist/chunks/alert.cjs +0 -170
  250. package/dist/chunks/alert.cjs.map +0 -1
  251. package/dist/chunks/alert.js +0 -171
  252. package/dist/chunks/alert.js.map +0 -1
  253. package/dist/chunks/badge.cjs +0 -85
  254. package/dist/chunks/badge.cjs.map +0 -1
  255. package/dist/chunks/badge.js +0 -86
  256. package/dist/chunks/badge.js.map +0 -1
  257. package/dist/chunks/breadcrumb-item.cjs +0 -261
  258. package/dist/chunks/breadcrumb-item.cjs.map +0 -1
  259. package/dist/chunks/breadcrumb-item.js +0 -262
  260. package/dist/chunks/breadcrumb-item.js.map +0 -1
  261. package/dist/chunks/button-group.cjs +0 -79
  262. package/dist/chunks/button-group.cjs.map +0 -1
  263. package/dist/chunks/button-group.js +0 -80
  264. package/dist/chunks/button-group.js.map +0 -1
  265. package/dist/chunks/button.cjs +0 -348
  266. package/dist/chunks/button.cjs.map +0 -1
  267. package/dist/chunks/button.js +0 -349
  268. package/dist/chunks/button.js.map +0 -1
  269. package/dist/chunks/card.cjs +0 -93
  270. package/dist/chunks/card.cjs.map +0 -1
  271. package/dist/chunks/card.js +0 -94
  272. package/dist/chunks/card.js.map +0 -1
  273. package/dist/chunks/checkbox.cjs +0 -86
  274. package/dist/chunks/checkbox.cjs.map +0 -1
  275. package/dist/chunks/checkbox.js +0 -87
  276. package/dist/chunks/checkbox.js.map +0 -1
  277. package/dist/chunks/color.cjs +0 -4
  278. package/dist/chunks/color.cjs.map +0 -1
  279. package/dist/chunks/color.js +0 -5
  280. package/dist/chunks/color.js.map +0 -1
  281. package/dist/chunks/copy-button.cjs +0 -168
  282. package/dist/chunks/copy-button.cjs.map +0 -1
  283. package/dist/chunks/copy-button.js +0 -169
  284. package/dist/chunks/copy-button.js.map +0 -1
  285. package/dist/chunks/detail.cjs +0 -146
  286. package/dist/chunks/detail.cjs.map +0 -1
  287. package/dist/chunks/detail.js +0 -147
  288. package/dist/chunks/detail.js.map +0 -1
  289. package/dist/chunks/dialog.cjs +0 -117
  290. package/dist/chunks/dialog.cjs.map +0 -1
  291. package/dist/chunks/dialog.js +0 -118
  292. package/dist/chunks/dialog.js.map +0 -1
  293. package/dist/chunks/divider.cjs +0 -80
  294. package/dist/chunks/divider.cjs.map +0 -1
  295. package/dist/chunks/divider.js +0 -81
  296. package/dist/chunks/divider.js.map +0 -1
  297. package/dist/chunks/drawer.cjs +0 -180
  298. package/dist/chunks/drawer.cjs.map +0 -1
  299. package/dist/chunks/drawer.js +0 -181
  300. package/dist/chunks/drawer.js.map +0 -1
  301. package/dist/chunks/dropdown-button.cjs +0 -534
  302. package/dist/chunks/dropdown-button.cjs.map +0 -1
  303. package/dist/chunks/dropdown-button.js +0 -535
  304. package/dist/chunks/dropdown-button.js.map +0 -1
  305. package/dist/chunks/icon-button.cjs +0 -35
  306. package/dist/chunks/icon-button.cjs.map +0 -1
  307. package/dist/chunks/icon-button.js +0 -36
  308. package/dist/chunks/icon-button.js.map +0 -1
  309. package/dist/chunks/icon.cjs +0 -108
  310. package/dist/chunks/icon.cjs.map +0 -1
  311. package/dist/chunks/icon.js +0 -109
  312. package/dist/chunks/icon.js.map +0 -1
  313. package/dist/chunks/menu.cjs +0 -396
  314. package/dist/chunks/menu.cjs.map +0 -1
  315. package/dist/chunks/menu.js +0 -397
  316. package/dist/chunks/menu.js.map +0 -1
  317. package/dist/chunks/navbar.cjs +0 -142
  318. package/dist/chunks/navbar.cjs.map +0 -1
  319. package/dist/chunks/navbar.js +0 -143
  320. package/dist/chunks/navbar.js.map +0 -1
  321. package/dist/chunks/pagination.cjs +0 -475
  322. package/dist/chunks/pagination.cjs.map +0 -1
  323. package/dist/chunks/pagination.js +0 -476
  324. package/dist/chunks/pagination.js.map +0 -1
  325. package/dist/chunks/progress-bar.cjs +0 -101
  326. package/dist/chunks/progress-bar.cjs.map +0 -1
  327. package/dist/chunks/progress-bar.js +0 -102
  328. package/dist/chunks/progress-bar.js.map +0 -1
  329. package/dist/chunks/radio.cjs +0 -185
  330. package/dist/chunks/radio.cjs.map +0 -1
  331. package/dist/chunks/radio.js +0 -186
  332. package/dist/chunks/radio.js.map +0 -1
  333. package/dist/chunks/select.cjs +0 -381
  334. package/dist/chunks/select.cjs.map +0 -1
  335. package/dist/chunks/select.js +0 -382
  336. package/dist/chunks/select.js.map +0 -1
  337. package/dist/chunks/size.cjs +0 -4
  338. package/dist/chunks/size.cjs.map +0 -1
  339. package/dist/chunks/size.js +0 -5
  340. package/dist/chunks/size.js.map +0 -1
  341. package/dist/chunks/slider.cjs +0 -611
  342. package/dist/chunks/slider.cjs.map +0 -1
  343. package/dist/chunks/slider.js +0 -612
  344. package/dist/chunks/slider.js.map +0 -1
  345. package/dist/chunks/spinner.cjs +0 -102
  346. package/dist/chunks/spinner.cjs.map +0 -1
  347. package/dist/chunks/spinner.js +0 -103
  348. package/dist/chunks/spinner.js.map +0 -1
  349. package/dist/chunks/switch.cjs +0 -167
  350. package/dist/chunks/switch.cjs.map +0 -1
  351. package/dist/chunks/switch.js +0 -168
  352. package/dist/chunks/switch.js.map +0 -1
  353. package/dist/chunks/tab-panel.cjs +0 -165
  354. package/dist/chunks/tab-panel.cjs.map +0 -1
  355. package/dist/chunks/tab-panel.js +0 -166
  356. package/dist/chunks/tab-panel.js.map +0 -1
  357. package/dist/chunks/tag.cjs +0 -108
  358. package/dist/chunks/tag.cjs.map +0 -1
  359. package/dist/chunks/tag.js +0 -109
  360. package/dist/chunks/tag.js.map +0 -1
  361. package/dist/chunks/text-input.cjs +0 -54
  362. package/dist/chunks/text-input.cjs.map +0 -1
  363. package/dist/chunks/text-input.js +0 -55
  364. package/dist/chunks/text-input.js.map +0 -1
  365. package/dist/chunks/textarea.cjs +0 -137
  366. package/dist/chunks/textarea.cjs.map +0 -1
  367. package/dist/chunks/textarea.js +0 -138
  368. package/dist/chunks/textarea.js.map +0 -1
  369. package/dist/chunks/tooltip.cjs +0 -293
  370. package/dist/chunks/tooltip.cjs.map +0 -1
  371. package/dist/chunks/tooltip.js +0 -294
  372. package/dist/chunks/tooltip.js.map +0 -1
  373. package/dist/chunks/tree.cjs +0 -468
  374. package/dist/chunks/tree.cjs.map +0 -1
  375. package/dist/chunks/tree.js +0 -469
  376. package/dist/chunks/tree.js.map +0 -1
  377. package/dist/chunks/variables.cjs +0 -372
  378. package/dist/chunks/variables.cjs.map +0 -1
  379. package/dist/chunks/variables.js +0 -373
  380. package/dist/chunks/variables.js.map +0 -1
@@ -1,143 +0,0 @@
1
- import { v as variables } from "./variables.js";
2
- import { c as colorCSS } from "./color.js";
3
- import { A as AeicoComponent } from "./aeico-component.js";
4
- import { prop, html } from "aeico";
5
- const navbarStyle = ':host {\n /* layout — padding lives in .inner so document * { padding:0 } cannot override it */\n display: block;\n position: static;\n top: auto;\n z-index: var(--ae-navbar-z-index, 100);\n box-sizing: border-box;\n height: var(--ae-navbar-height, 3.25rem);\n border-radius: var(--ae-navbar-radius, 0);\n\n /* color */\n background: var(--ae-navbar-bg, var(--surface-base));\n color: var(--ae-navbar-color, var(--color-text-main));\n border-bottom: var(--ae-navbar-border-width, 1px) solid var(--ae-navbar-border-color, var(--border-default));\n box-shadow: var(--ae-navbar-shadow, none);\n\n /* layout tokens — declared here so they are clearly part of the public API */\n --ae-navbar-radius: 0;\n /* Default padding-x references the global layout token so ae-navbar content\n automatically aligns with .container / .container-fluid in light DOM.\n Override with --ae-navbar-padding-x to decouple if needed. */\n --ae-navbar-padding-x: var(--container-padding-x, 1.5rem);\n --ae-navbar-gap: 0.5rem;\n\n /* link style tokens — text mode defaults.\n CSS custom properties inherit into slotted content, so\n ::slotted(a[slot="start"]) can reference --ae-navbar-height. */\n --ae-navbar-link-color: inherit;\n --ae-navbar-link-font-size: inherit;\n --ae-navbar-link-padding-x: 0.75rem; /* horizontal padding only; height fills vertically */\n --ae-navbar-link-radius: 0;\n --ae-navbar-link-hover-color: var(--color-text-link-hover);\n --ae-navbar-link-hover-bg: transparent;\n --ae-navbar-link-active-color: var(--color-text-link);\n --ae-navbar-link-active-font-weight: 600;\n}\n\n:host([sticky]) {\n position: sticky;\n top: 0;\n}\n\n:host([color]) {\n --ae-navbar-bg: var(--color-solid);\n --ae-navbar-color: var(--color-on-solid);\n --ae-navbar-border-color: transparent;\n --ae-navbar-link-hover-color: var(--color-on-solid);\n --ae-navbar-link-active-color: var(--color-on-solid);\n}\n\n/* block preset: hover shows a subtle filled block */\n:host([appearance="block"]) {\n --ae-navbar-link-hover-bg: var(--color-bg-subtle);\n --ae-navbar-link-hover-color: inherit;\n}\n\n/* block preset on colored navbar: use semi-transparent white */\n:host([color][appearance="block"]) {\n --ae-navbar-link-hover-bg: rgba(255, 255, 255, 0.15);\n --ae-navbar-link-hover-color: var(--color-on-solid);\n}\n\n.inner {\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0 var(--ae-navbar-padding-x);\n gap: var(--ae-navbar-gap);\n box-sizing: border-box;\n}\n\n[part="brand"] {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n}\n\n/* nav wraps start + end; takes all remaining space */\n[part="nav"] {\n flex: 1 1 auto;\n display: flex;\n align-self: stretch; /* stretch to host height so children can fill it */\n align-items: stretch;\n min-width: 0;\n}\n\n[part="start"],\n[part="end"] {\n flex: 0 0 auto;\n display: flex;\n align-self: stretch;\n}\n\n[part="start"] {\n align-items: stretch; /* slotted <a> will stretch to full height */\n gap: var(--ae-navbar-start-gap, 0);\n}\n\n[part="end"] {\n align-items: center; /* buttons / avatars stay vertically centred */\n gap: var(--ae-navbar-end-gap, 0.5rem);\n margin-left: auto;\n}\n\n/* hamburger — hidden on desktop */\n[part="hamburger"] {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex-shrink: 0;\n width: var(--ae-navbar-hamburger-size, 2rem);\n height: var(--ae-navbar-hamburger-size, 2rem);\n margin-left: auto;\n padding: 0;\n background: none;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: var(--ae-navbar-hamburger-color, inherit);\n}\n\n[part="hamburger"]:hover {\n background: color-mix(in srgb, currentColor 10%, transparent);\n}\n\n[part="hamburger"] span {\n display: block;\n width: 18px;\n height: 2px;\n background: currentColor;\n border-radius: 1px;\n transition: transform 0.2s ease, opacity 0.2s ease;\n}\n\n/* Brand link — sensible defaults, no full-height stretch */\n::slotted(a[slot="brand"]) {\n display: inline-flex;\n align-items: center;\n color: inherit;\n font-weight: 700;\n font-size: 1.05rem;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Nav links (start / end slots) — fill full navbar height for block hover effect */\n::slotted(a[slot="start"]),\n::slotted(a[slot="end"]) {\n display: inline-flex;\n align-items: center;\n height: var(--ae-navbar-height, 3.25rem); /* full-height hover area */\n /* !important overrides document-level * { padding: 0 } reset */\n padding: 0 var(--ae-navbar-link-padding-x) !important;\n border-radius: var(--ae-navbar-link-radius);\n color: var(--ae-navbar-link-color);\n font-size: var(--ae-navbar-link-font-size);\n text-decoration: none;\n white-space: nowrap;\n transition: color 0.15s ease, background-color 0.15s ease;\n outline-offset: 2px;\n}\n\n::slotted(a[slot="start"]:hover),\n::slotted(a[slot="end"]:hover) {\n color: var(--ae-navbar-link-hover-color);\n background-color: var(--ae-navbar-link-hover-bg);\n}\n\n::slotted(a[slot="start"][aria-current="page"]),\n::slotted(a[slot="end"][aria-current="page"]) {\n color: var(--ae-navbar-link-active-color);\n font-weight: var(--ae-navbar-link-active-font-weight);\n}\n\n/* ae-dropdown inside navbar — map navbar tokens to dropdown trigger API */\n::slotted(ae-dropdown) {\n align-self: stretch;\n --dropdown-trigger-height: 100%;\n --dropdown-trigger-padding-x: var(--ae-navbar-link-padding-x);\n --dropdown-trigger-color: var(--ae-navbar-link-color);\n --dropdown-trigger-bg: none;\n --dropdown-trigger-radius: var(--ae-navbar-link-radius);\n --dropdown-trigger-font-size: var(--ae-navbar-link-font-size);\n --dropdown-trigger-hover-color: var(--ae-navbar-link-hover-color);\n --dropdown-trigger-hover-bg: var(--ae-navbar-link-hover-bg);\n}\n\n@media (max-width: 768px) {\n /* collapse the nav container */\n [part="nav"] {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: 0.5rem 0;\n background: var(--ae-navbar-mobile-bg, var(--ae-navbar-bg, var(--surface-base)));\n border-bottom: 1px solid var(--ae-navbar-border-color, var(--border-default));\n box-shadow: var(--ae-navbar-mobile-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));\n z-index: 1;\n }\n\n :host([open]) [part="nav"] {\n display: flex;\n }\n\n /* stack start/end vertically inside the panel */\n [part="start"],\n [part="end"] {\n flex-direction: column;\n align-items: flex-start;\n align-self: auto;\n gap: 0;\n margin-left: 0;\n width: 100%;\n }\n\n /* Mobile: links revert to auto height and add vertical padding */\n ::slotted(a[slot="start"]),\n ::slotted(a[slot="end"]) {\n height: auto;\n width: 100%;\n padding: 0.75rem var(--ae-navbar-link-padding-x);\n border-radius: 0;\n }\n\n /* show hamburger */\n [part="hamburger"] {\n display: flex;\n }\n\n /* hamburger → × animation */\n :host([open]) [part="hamburger"] span:nth-child(1) {\n transform: translateY(7px) rotate(45deg);\n }\n\n :host([open]) [part="hamburger"] span:nth-child(2) {\n opacity: 0;\n transform: scaleX(0);\n }\n\n :host([open]) [part="hamburger"] span:nth-child(3) {\n transform: translateY(-7px) rotate(-45deg);\n }\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 _open_dec, _appearance_dec, _sticky_dec, _color_dec, _a, _init, _color, _sticky, _appearance, _open;
52
- class Navbar extends (_a = AeicoComponent, _color_dec = [prop({ type: String })], _sticky_dec = [prop({ type: Boolean })], _appearance_dec = [prop({ type: String })], _open_dec = [prop({ type: Boolean })], _a) {
53
- constructor() {
54
- super(...arguments);
55
- __privateAdd(this, _color, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
56
- __privateAdd(this, _sticky, __runInitializers(_init, 12, this, false)), __runInitializers(_init, 15, this);
57
- __privateAdd(this, _appearance, __runInitializers(_init, 16, this, "text")), __runInitializers(_init, 19, this);
58
- __privateAdd(this, _open, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
59
- __publicField(this, "_outsideClickHandler", null);
60
- __publicField(this, "_handleInnerClick", (e) => {
61
- if (!this.open) return;
62
- const path = e.composedPath();
63
- if (path.some((el) => el.tagName === "A")) {
64
- this._closeMenu();
65
- }
66
- });
67
- __publicField(this, "_toggleMenu", () => {
68
- this.open = !this.open;
69
- });
70
- __publicField(this, "_closeMenu", () => {
71
- if (this.open) this.open = false;
72
- });
73
- }
74
- connectedCallback() {
75
- super.connectedCallback();
76
- this._outsideClickHandler = (e) => {
77
- var _a2;
78
- if (!this.contains(e.target) && !((_a2 = this.shadowRoot) == null ? void 0 : _a2.contains(e.target))) {
79
- this._closeMenu();
80
- }
81
- };
82
- document.addEventListener("click", this._outsideClickHandler);
83
- }
84
- disconnectedCallback() {
85
- super.disconnectedCallback();
86
- if (this._outsideClickHandler) {
87
- document.removeEventListener("click", this._outsideClickHandler);
88
- this._outsideClickHandler = null;
89
- }
90
- }
91
- /** Toggle the mobile menu open/closed. */
92
- toggleMenu() {
93
- this.open = !this.open;
94
- }
95
- render() {
96
- return html(({ div, nav, button, span, slot }) => {
97
- div({ class: "inner", "@click": this._handleInnerClick }, () => {
98
- div({ part: "brand" }, () => {
99
- slot({ name: "brand" });
100
- });
101
- nav({ part: "nav", "aria-label": "Main navigation" }, () => {
102
- div({ part: "start" }, () => {
103
- slot({ name: "start" });
104
- });
105
- div({ part: "end" }, () => {
106
- slot({ name: "end" });
107
- });
108
- });
109
- button(
110
- {
111
- part: "hamburger",
112
- type: "button",
113
- "aria-expanded": String(this.open),
114
- "aria-label": "Toggle navigation",
115
- "@click": this._toggleMenu
116
- },
117
- () => {
118
- span({ "aria-hidden": "true" });
119
- span({ "aria-hidden": "true" });
120
- span({ "aria-hidden": "true" });
121
- }
122
- );
123
- });
124
- });
125
- }
126
- }
127
- _init = __decoratorStart(_a);
128
- _color = /* @__PURE__ */ new WeakMap();
129
- _sticky = /* @__PURE__ */ new WeakMap();
130
- _appearance = /* @__PURE__ */ new WeakMap();
131
- _open = /* @__PURE__ */ new WeakMap();
132
- __decorateElement(_init, 4, "color", _color_dec, Navbar, _color);
133
- __decorateElement(_init, 4, "sticky", _sticky_dec, Navbar, _sticky);
134
- __decorateElement(_init, 4, "appearance", _appearance_dec, Navbar, _appearance);
135
- __decorateElement(_init, 4, "open", _open_dec, Navbar, _open);
136
- __decoratorMetadata(_init, Navbar);
137
- __publicField(Navbar, "tagName", "navbar");
138
- __publicField(Navbar, "styles", [variables, colorCSS, navbarStyle]);
139
- Navbar.register();
140
- export {
141
- Navbar as N
142
- };
143
- //# sourceMappingURL=navbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navbar.js","sources":["../../src/navbar/navbar.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport navbarStyle from '../styles/components/navbar.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { prop } from 'aeico';\nimport type { NavbarColor, NavbarAppearance } from './defines';\n\n/**\n * Navbar Component\n *\n * A sticky top navigation bar with three slot regions and built-in\n * mobile hamburger collapse.\n *\n * Slots:\n * - `brand` — leftmost area, typically a logo or site name link\n * - `start` — main navigation links / dropdowns\n * - `end` — right-side actions (login button, avatar, etc.)\n *\n * Slotted `<a>` elements receive default link styling controlled via\n * CSS custom properties. Mark the active link with `aria-current=\"page\"`.\n *\n * @example\n * ```html\n * <ae-navbar color=\"primary\" appearance=\"block\">\n * <a slot=\"brand\" href=\"/\">MyApp</a>\n * <a slot=\"start\" href=\"/\" aria-current=\"page\">Home</a>\n * <a slot=\"start\" href=\"/docs\">Docs</a>\n * <ae-button slot=\"end\" size=\"sm\" variant=\"outlined\">Sign in</ae-button>\n * </ae-navbar>\n * ```\n *\n * @example\n * ```css\n * /* Custom height and transparent background *\\/\n * ae-navbar {\n * --ae-navbar-height: 4rem;\n * --ae-navbar-bg: transparent;\n * --ae-navbar-border-width: 0;\n * --ae-navbar-shadow: 0 1px 8px rgba(0, 0, 0, 0.08);\n * }\n * ```\n */\nclass Navbar extends AeicoComponent {\n static tagName = 'navbar';\n\n protected static styles = [styleVariables, colorCSS, navbarStyle];\n\n /** Background color using the design-system color token set. */\n @prop({ type: String })\n accessor color: NavbarColor | undefined;\n\n /** When true (default), the navbar sticks to the top of the viewport while scrolling. Set to false to let it scroll with the page. */\n @prop({ type: Boolean })\n accessor sticky: boolean = false;\n\n /**\n * Hover style preset for slotted `<a>` links.\n * - `text` — only the font color changes on hover (default)\n * - `block` — a subtle filled background block appears on hover\n *\n * Fine-tune further with `--ae-navbar-link-hover-color` /\n * `--ae-navbar-link-hover-bg` CSS variables.\n */\n @prop({ type: String })\n accessor appearance: NavbarAppearance = 'text';\n\n /** Whether the mobile menu is expanded. Reflects as the `open` attribute. */\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 // Close menu when clicking outside the navbar\n this._outsideClickHandler = (e: MouseEvent) => {\n // Event retargeting in shadow DOM means e.target is the host element\n // when the click originates inside the shadow root, so this check is safe.\n if (!this.contains(e.target as Node) && !this.shadowRoot?.contains(e.target as Node)) {\n this._closeMenu();\n }\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 /** Toggle the mobile menu open/closed. */\n toggleMenu(): void {\n this.open = !this.open;\n }\n\n private _handleInnerClick = (e: Event) => {\n if (!this.open) return;\n // Close mobile menu when a slotted <a> link is clicked\n const path = e.composedPath() as Element[];\n if (path.some((el) => (el as HTMLElement).tagName === 'A')) {\n this._closeMenu();\n }\n };\n\n private _toggleMenu = () => {\n this.open = !this.open;\n };\n\n private _closeMenu = () => {\n if (this.open) this.open = false;\n };\n\n protected render() {\n return html(({ div, nav, button, span, slot }) => {\n div({ class: 'inner', '@click': this._handleInnerClick }, () => {\n div({ part: 'brand' }, () => {\n slot({ name: 'brand' });\n });\n nav({ part: 'nav', 'aria-label': 'Main navigation' }, () => {\n div({ part: 'start' }, () => {\n slot({ name: 'start' });\n });\n div({ part: 'end' }, () => {\n slot({ name: 'end' });\n });\n });\n button(\n {\n part: 'hamburger',\n type: 'button',\n 'aria-expanded': String(this.open),\n 'aria-label': 'Toggle navigation',\n '@click': this._toggleMenu,\n },\n () => {\n span({ 'aria-hidden': 'true' });\n span({ 'aria-hidden': 'true' });\n span({ 'aria-hidden': 'true' });\n },\n );\n });\n });\n }\n}\n\nNavbar.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-navbar': Navbar;\n }\n}\n\nexport default Navbar;\nexport type NavbarProps = InferProps<typeof Navbar>;\n"],"names":["_a","styleVariables"],"mappings":"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"}
@@ -1,475 +0,0 @@
1
- "use strict";
2
- const aeico = require("aeico");
3
- const aeicoComponent = require("./aeico-component.cjs");
4
- const variables = require("./variables.cjs");
5
- const size = require("./size.cjs");
6
- const paginationStyle = `:host {
7
- display: inline-flex;
8
- align-items: center;
9
- font-size: var(--size-m);
10
- }
11
-
12
- nav {
13
- display: flex;
14
- align-items: center;
15
- gap: 4px;
16
- margin: 0;
17
- padding: 0;
18
- }
19
-
20
- button {
21
- display: inline-flex;
22
- align-items: center;
23
- justify-content: center;
24
- min-width: 2em;
25
- height: 2em;
26
- padding: 0 0.5em;
27
- font-family: inherit;
28
- font-size: inherit;
29
- line-height: 1;
30
- cursor: pointer;
31
- user-select: none;
32
- border-radius: 4px;
33
- border: 1px solid var(--border-default);
34
- background: transparent;
35
- color: var(--color-text-main);
36
- transition: background 0.15s, border-color 0.15s, color 0.15s;
37
- outline: none;
38
- }
39
-
40
- button:focus-visible {
41
- box-shadow: 0 0 0 2px var(--focus-ring);
42
- border-color: var(--border-focus);
43
- }
44
-
45
- button:hover:not(:disabled) {
46
- border-color: var(--color-primary);
47
- color: var(--color-primary);
48
- background: var(--color-primary-bg-subtle);
49
- }
50
-
51
- button:active:not(:disabled) {
52
- background: color-mix(in srgb, var(--color-primary-bg-subtle), var(--color-primary) 10%);
53
- }
54
-
55
- button:disabled {
56
- opacity: 0.45;
57
- cursor: not-allowed;
58
- }
59
-
60
- button.active {
61
- background: var(--color-primary);
62
- border-color: var(--color-primary);
63
- color: white;
64
- font-weight: 600;
65
- cursor: default;
66
- }
67
-
68
- button.active:hover:not(:disabled) {
69
- background: var(--color-primary-hover);
70
- border-color: var(--color-primary-hover);
71
- color: white;
72
- }
73
-
74
- button.nav-btn {
75
- min-width: 2em;
76
- width: 2em;
77
- padding: 0;
78
- }
79
-
80
- [part="ellipsis"] {
81
- display: inline-flex;
82
- align-items: flex-end;
83
- justify-content: center;
84
- min-width: 2em;
85
- height: 2em;
86
- color: var(--color-text-muted);
87
- user-select: none;
88
- letter-spacing: 0.1em;
89
- padding-bottom: 0.2em;
90
- }
91
-
92
- input[part="page-input"] {
93
- width: 3em;
94
- height: 2em;
95
- padding: 0 0.4em;
96
- text-align: center;
97
- border: 1px solid var(--border-subtle);
98
- border-radius: 4px;
99
- font-size: inherit;
100
- font-family: inherit;
101
- color: var(--color-text-main);
102
- background: var(--surface-base);
103
- box-shadow: none;
104
- -webkit-appearance: none;
105
- -moz-appearance: textfield;
106
- appearance: textfield;
107
- outline: none;
108
- transition: border-color 0.15s, box-shadow 0.15s;
109
- }
110
-
111
- input[part="page-input"]:hover:not(:disabled) {
112
- border-color: var(--border-default);
113
- }
114
-
115
- input[part="page-input"]::-webkit-inner-spin-button,
116
- input[part="page-input"]::-webkit-outer-spin-button {
117
- -webkit-appearance: none;
118
- appearance: none;
119
- }
120
-
121
- input[part="page-input"]:focus {
122
- border-color: var(--border-focus);
123
- box-shadow: 0 0 0 2px var(--focus-ring);
124
- }
125
-
126
- input[part="page-input"]:disabled {
127
- opacity: 0.45;
128
- cursor: not-allowed;
129
- }
130
-
131
- [part="page-total"] {
132
- color: var(--color-text-muted);
133
- white-space: nowrap;
134
- padding: 0 0.25em;
135
- line-height: 2em;
136
- }
137
-
138
- /* ── Borderless variant ──────────────────────────────────────────────── */
139
- :host([variant='borderless']) button {
140
- border-color: transparent;
141
- }
142
-
143
- :host([variant='borderless']) button:hover:not(:disabled) {
144
- border-color: transparent;
145
- }
146
-
147
- :host([variant='borderless']) button.active {
148
- border-color: transparent;
149
- }
150
-
151
- :host([variant='borderless']) input[part='page-input'] {
152
- border-color: transparent;
153
- }
154
-
155
- :host([variant='borderless']) input[part='page-input']:hover:not(:disabled) {
156
- border-color: transparent;
157
- }
158
-
159
- :host([variant='borderless']) input[part='page-input']:focus {
160
- border-color: var(--border-focus);
161
- }
162
-
163
- /* ── Link variant ────────────────────────────────────────────────────── */
164
- :host([variant='link']) button {
165
- border-color: transparent;
166
- background: transparent;
167
- }
168
-
169
- :host([variant='link']) button:hover:not(:disabled) {
170
- border-color: transparent;
171
- background: transparent;
172
- color: var(--color-primary);
173
- }
174
-
175
- :host([variant='link']) button:active:not(:disabled) {
176
- background: transparent;
177
- }
178
-
179
- :host([variant='link']) button:focus-visible {
180
- border-color: transparent;
181
- }
182
-
183
- :host([variant='link']) button.active {
184
- background: transparent;
185
- border-color: transparent;
186
- color: var(--color-primary);
187
- font-weight: 600;
188
- }
189
-
190
- :host([variant='link']) button.active:hover:not(:disabled) {
191
- background: transparent;
192
- color: var(--color-primary);
193
- }
194
-
195
- :host([variant='link']) input[part='page-input'] {
196
- border-color: transparent;
197
- border-bottom-color: var(--border-subtle);
198
- border-radius: 0;
199
- }
200
-
201
- :host([variant='link']) input[part='page-input']:hover:not(:disabled) {
202
- border-color: transparent;
203
- border-bottom-color: var(--border-default);
204
- }
205
-
206
- :host([variant='link']) input[part='page-input']:focus {
207
- border-color: transparent;
208
- border-bottom-color: var(--border-focus);
209
- box-shadow: none;
210
- }
211
- `;
212
- var __create = Object.create;
213
- var __defProp = Object.defineProperty;
214
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
215
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
216
- var __typeError = (msg) => {
217
- throw TypeError(msg);
218
- };
219
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
220
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
221
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
222
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
223
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
224
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
225
- var __runInitializers = (array, flags, self, value) => {
226
- 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);
227
- return value;
228
- };
229
- var __decorateElement = (array, flags, name, decorators, target, extra) => {
230
- var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
231
- var j = array.length + 1, key = __decoratorStrings[k + 5];
232
- var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
233
- var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
234
- return __privateGet(this, extra);
235
- }, set [name](x) {
236
- return __privateSet(this, extra, x);
237
- } }, name));
238
- for (var i = decorators.length - 1; i >= 0; i--) {
239
- ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
240
- {
241
- ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
242
- access.get = (x) => x[name];
243
- access.set = (x, y) => x[name] = y;
244
- }
245
- it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
246
- if (it === void 0) __expectFn(it) && (desc[key] = it);
247
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
248
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
249
- }
250
- return desc && __defProp(target, name, desc), target;
251
- };
252
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
253
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
254
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
255
- 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);
256
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
257
- var _variant_dec, _showFirstLast_dec, _simple_dec, _disabled_dec, _size_dec, _siblingCount_dec, _pageCount_dec, _total_dec, _pageSize_dec, _page_dec, _a, _init, _page, _pageSize, _total, _pageCount, _siblingCount, _size, _disabled, _simple, _showFirstLast, _variant;
258
- class Pagination extends (_a = aeicoComponent.AeicoComponent, _page_dec = [aeico.prop({ type: Number })], _pageSize_dec = [aeico.prop({ type: Number })], _total_dec = [aeico.prop({ type: Number })], _pageCount_dec = [aeico.prop({ type: Number })], _siblingCount_dec = [aeico.prop({ type: Number })], _size_dec = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _simple_dec = [aeico.prop({ type: Boolean })], _showFirstLast_dec = [aeico.prop({ type: Boolean })], _variant_dec = [aeico.prop({ type: String })], _a) {
259
- constructor() {
260
- super(...arguments);
261
- __privateAdd(this, _page, __runInitializers(_init, 8, this, 1)), __runInitializers(_init, 11, this);
262
- __privateAdd(this, _pageSize, __runInitializers(_init, 12, this, 10)), __runInitializers(_init, 15, this);
263
- __privateAdd(this, _total, __runInitializers(_init, 16, this, 0)), __runInitializers(_init, 19, this);
264
- __privateAdd(this, _pageCount, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
265
- __privateAdd(this, _siblingCount, __runInitializers(_init, 24, this, 1)), __runInitializers(_init, 27, this);
266
- __privateAdd(this, _size, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
267
- __privateAdd(this, _disabled, __runInitializers(_init, 32, this, false)), __runInitializers(_init, 35, this);
268
- __privateAdd(this, _simple, __runInitializers(_init, 36, this, false)), __runInitializers(_init, 39, this);
269
- __privateAdd(this, _showFirstLast, __runInitializers(_init, 40, this, false)), __runInitializers(_init, 43, this);
270
- __privateAdd(this, _variant, __runInitializers(_init, 44, this)), __runInitializers(_init, 47, this);
271
- __publicField(this, "_simpleInput", null);
272
- __publicField(this, "_handleItemClick", (e) => {
273
- const btn = e.currentTarget;
274
- const p = Number(btn.dataset.page);
275
- if (!isNaN(p)) this._goToPage(p);
276
- });
277
- __publicField(this, "_handlePrevClick", () => {
278
- this._goToPage(this._currentPage - 1);
279
- });
280
- __publicField(this, "_handleNextClick", () => {
281
- this._goToPage(this._currentPage + 1);
282
- });
283
- __publicField(this, "_handleFirstClick", () => {
284
- this._goToPage(1);
285
- });
286
- __publicField(this, "_handleLastClick", () => {
287
- this._goToPage(this._computedPageCount);
288
- });
289
- __publicField(this, "_handleSimpleInputChange", (e) => {
290
- const input = e.target;
291
- const val = parseInt(input.value, 10);
292
- if (!isNaN(val)) {
293
- this._goToPage(val);
294
- }
295
- input.value = String(this._currentPage);
296
- });
297
- }
298
- get _computedPageCount() {
299
- if (this.pageCount != null) return Math.max(1, this.pageCount);
300
- const ps = this.pageSize > 0 ? this.pageSize : 10;
301
- return Math.max(1, Math.ceil(this.total / ps));
302
- }
303
- get _currentPage() {
304
- const count = this._computedPageCount;
305
- return Math.max(1, Math.min(this.page ?? 1, count));
306
- }
307
- _getPageItems() {
308
- const count = this._computedPageCount;
309
- const page = this._currentPage;
310
- const sc = Math.max(0, this.siblingCount ?? 1);
311
- const rangeStart = Math.max(2, page - sc);
312
- const rangeEnd = Math.min(count - 1, page + sc);
313
- const showLeftEllipsis = rangeStart > 2;
314
- const showRightEllipsis = rangeEnd < count - 1;
315
- const items = [];
316
- items.push(1);
317
- if (count <= 1) return items;
318
- if (showLeftEllipsis) {
319
- items.push("ellipsis-start");
320
- } else {
321
- for (let i = 2; i < rangeStart; i++) items.push(i);
322
- }
323
- for (let i = rangeStart; i <= rangeEnd; i++) items.push(i);
324
- if (showRightEllipsis) {
325
- items.push("ellipsis-end");
326
- } else {
327
- for (let i = rangeEnd + 1; i < count; i++) items.push(i);
328
- }
329
- items.push(count);
330
- return items;
331
- }
332
- _goToPage(page) {
333
- const count = this._computedPageCount;
334
- const next = Math.max(1, Math.min(count, page));
335
- if (next === this._currentPage) return;
336
- this.page = next;
337
- this.emit("change", { detail: { page: this.page } });
338
- }
339
- onUpdated() {
340
- if (this._simpleInput) {
341
- this._simpleInput.value = String(this._currentPage);
342
- }
343
- }
344
- _renderNavBtn(name, iconName, label, disabled, onClick) {
345
- const { button, slot, aeIcon } = aeico.tags;
346
- button(
347
- {
348
- key: name,
349
- part: name,
350
- className: "nav-btn",
351
- disabled,
352
- "aria-label": label,
353
- "@click": onClick
354
- },
355
- () => {
356
- slot({ name }, () => {
357
- aeIcon({ name: iconName });
358
- });
359
- }
360
- );
361
- }
362
- _renderSimpleMode(page, count, disabled) {
363
- this._simpleInput = aeico.tags.input({
364
- key: "page-input",
365
- part: "page-input",
366
- type: "number",
367
- min: "1",
368
- max: String(count),
369
- value: String(page),
370
- disabled,
371
- "aria-label": "Page number",
372
- "@change": this._handleSimpleInputChange
373
- });
374
- aeico.tags.span({ key: "page-total", part: "page-total", textContent: `/ ${count}` });
375
- }
376
- _renderPageItems(page, disabled) {
377
- for (const item of this._getPageItems()) {
378
- if (item === "ellipsis-start" || item === "ellipsis-end") {
379
- aeico.tags.span({
380
- key: item,
381
- part: "ellipsis",
382
- className: "ellipsis",
383
- "aria-hidden": "true",
384
- textContent: "…"
385
- });
386
- } else {
387
- const isActive = item === page;
388
- aeico.tags.button({
389
- key: `item-${item}`,
390
- part: isActive ? "item item-active" : "item",
391
- className: isActive ? "item active" : "item",
392
- disabled,
393
- "aria-current": isActive ? "page" : void 0,
394
- "aria-label": `Page ${item}`,
395
- "data-page": String(item),
396
- textContent: String(item),
397
- "@click": this._handleItemClick
398
- });
399
- }
400
- }
401
- }
402
- render() {
403
- const count = this._computedPageCount;
404
- const page = this._currentPage;
405
- const disabled = this.disabled;
406
- const isFirst = page <= 1;
407
- const isLast = page >= count;
408
- return aeico.html(({ nav }) => {
409
- nav({ part: "root", role: "navigation", "aria-label": "Pagination" }, () => {
410
- if (this.showFirstLast)
411
- this._renderNavBtn(
412
- "first",
413
- "chevrons-left",
414
- "First page",
415
- disabled || isFirst,
416
- this._handleFirstClick
417
- );
418
- this._renderNavBtn(
419
- "prev",
420
- "chevron-left",
421
- "Previous page",
422
- disabled || isFirst,
423
- this._handlePrevClick
424
- );
425
- if (this.simple) {
426
- this._renderSimpleMode(page, count, disabled);
427
- } else {
428
- this._renderPageItems(page, disabled);
429
- }
430
- this._renderNavBtn(
431
- "next",
432
- "chevron-right",
433
- "Next page",
434
- disabled || isLast,
435
- this._handleNextClick
436
- );
437
- if (this.showFirstLast)
438
- this._renderNavBtn(
439
- "last",
440
- "chevrons-right",
441
- "Last page",
442
- disabled || isLast,
443
- this._handleLastClick
444
- );
445
- });
446
- });
447
- }
448
- }
449
- _init = __decoratorStart(_a);
450
- _page = /* @__PURE__ */ new WeakMap();
451
- _pageSize = /* @__PURE__ */ new WeakMap();
452
- _total = /* @__PURE__ */ new WeakMap();
453
- _pageCount = /* @__PURE__ */ new WeakMap();
454
- _siblingCount = /* @__PURE__ */ new WeakMap();
455
- _size = /* @__PURE__ */ new WeakMap();
456
- _disabled = /* @__PURE__ */ new WeakMap();
457
- _simple = /* @__PURE__ */ new WeakMap();
458
- _showFirstLast = /* @__PURE__ */ new WeakMap();
459
- _variant = /* @__PURE__ */ new WeakMap();
460
- __decorateElement(_init, 4, "page", _page_dec, Pagination, _page);
461
- __decorateElement(_init, 4, "pageSize", _pageSize_dec, Pagination, _pageSize);
462
- __decorateElement(_init, 4, "total", _total_dec, Pagination, _total);
463
- __decorateElement(_init, 4, "pageCount", _pageCount_dec, Pagination, _pageCount);
464
- __decorateElement(_init, 4, "siblingCount", _siblingCount_dec, Pagination, _siblingCount);
465
- __decorateElement(_init, 4, "size", _size_dec, Pagination, _size);
466
- __decorateElement(_init, 4, "disabled", _disabled_dec, Pagination, _disabled);
467
- __decorateElement(_init, 4, "simple", _simple_dec, Pagination, _simple);
468
- __decorateElement(_init, 4, "showFirstLast", _showFirstLast_dec, Pagination, _showFirstLast);
469
- __decorateElement(_init, 4, "variant", _variant_dec, Pagination, _variant);
470
- __decoratorMetadata(_init, Pagination);
471
- __publicField(Pagination, "tagName", "pagination");
472
- __publicField(Pagination, "styles", [variables.variables, size.sizeCSS, paginationStyle]);
473
- Pagination.register();
474
- exports.Pagination = Pagination;
475
- //# sourceMappingURL=pagination.cjs.map