aeico-components 0.1.5 → 0.1.6

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 (284) 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 +4 -4
  8. package/dist/chunks/alert.cjs.map +1 -1
  9. package/dist/chunks/alert.js +5 -5
  10. package/dist/chunks/alert.js.map +1 -1
  11. package/dist/chunks/badge.cjs +1 -1
  12. package/dist/chunks/badge.cjs.map +1 -1
  13. package/dist/chunks/badge.js +2 -2
  14. package/dist/chunks/badge.js.map +1 -1
  15. package/dist/chunks/breadcrumb-item.cjs +2 -2
  16. package/dist/chunks/breadcrumb-item.cjs.map +1 -1
  17. package/dist/chunks/breadcrumb-item.js +3 -3
  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 +1 -1
  24. package/dist/chunks/button.cjs.map +1 -1
  25. package/dist/chunks/button.js +2 -2
  26. package/dist/chunks/button.js.map +1 -1
  27. package/dist/chunks/card.cjs +1 -1
  28. package/dist/chunks/card.cjs.map +1 -1
  29. package/dist/chunks/card.js +2 -2
  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/copy-button.cjs +168 -0
  36. package/dist/chunks/copy-button.cjs.map +1 -0
  37. package/dist/chunks/copy-button.js +169 -0
  38. package/dist/chunks/copy-button.js.map +1 -0
  39. package/dist/chunks/detail.cjs +7 -4
  40. package/dist/chunks/detail.cjs.map +1 -1
  41. package/dist/chunks/detail.js +8 -5
  42. package/dist/chunks/detail.js.map +1 -1
  43. package/dist/chunks/dialog.cjs +1 -1
  44. package/dist/chunks/dialog.cjs.map +1 -1
  45. package/dist/chunks/dialog.js +2 -2
  46. package/dist/chunks/dialog.js.map +1 -1
  47. package/dist/chunks/divider.cjs +1 -1
  48. package/dist/chunks/divider.cjs.map +1 -1
  49. package/dist/chunks/divider.js +2 -2
  50. package/dist/chunks/divider.js.map +1 -1
  51. package/dist/chunks/drawer.cjs +180 -0
  52. package/dist/chunks/drawer.cjs.map +1 -0
  53. package/dist/chunks/drawer.js +181 -0
  54. package/dist/chunks/drawer.js.map +1 -0
  55. package/dist/chunks/dropdown-button.cjs +2 -2
  56. package/dist/chunks/dropdown-button.cjs.map +1 -1
  57. package/dist/chunks/dropdown-button.js +3 -3
  58. package/dist/chunks/dropdown-button.js.map +1 -1
  59. package/dist/chunks/icon.cjs +31 -1
  60. package/dist/chunks/icon.cjs.map +1 -1
  61. package/dist/chunks/icon.js +32 -2
  62. package/dist/chunks/icon.js.map +1 -1
  63. package/dist/chunks/menu.cjs +396 -0
  64. package/dist/chunks/menu.cjs.map +1 -0
  65. package/dist/chunks/menu.js +397 -0
  66. package/dist/chunks/menu.js.map +1 -0
  67. package/dist/chunks/navbar.cjs +1 -1
  68. package/dist/chunks/navbar.cjs.map +1 -1
  69. package/dist/chunks/navbar.js +2 -2
  70. package/dist/chunks/navbar.js.map +1 -1
  71. package/dist/chunks/pagination.cjs +475 -0
  72. package/dist/chunks/pagination.cjs.map +1 -0
  73. package/dist/chunks/pagination.js +476 -0
  74. package/dist/chunks/pagination.js.map +1 -0
  75. package/dist/chunks/progress-bar.cjs +101 -0
  76. package/dist/chunks/progress-bar.cjs.map +1 -0
  77. package/dist/chunks/progress-bar.js +102 -0
  78. package/dist/chunks/progress-bar.js.map +1 -0
  79. package/dist/chunks/radio.cjs +11 -7
  80. package/dist/chunks/radio.cjs.map +1 -1
  81. package/dist/chunks/radio.js +11 -7
  82. package/dist/chunks/radio.js.map +1 -1
  83. package/dist/chunks/select.cjs +97 -66
  84. package/dist/chunks/select.cjs.map +1 -1
  85. package/dist/chunks/select.js +97 -66
  86. package/dist/chunks/select.js.map +1 -1
  87. package/dist/chunks/slider.cjs +9 -46
  88. package/dist/chunks/slider.cjs.map +1 -1
  89. package/dist/chunks/slider.js +9 -46
  90. package/dist/chunks/slider.js.map +1 -1
  91. package/dist/chunks/spinner.cjs +102 -0
  92. package/dist/chunks/spinner.cjs.map +1 -0
  93. package/dist/chunks/spinner.js +103 -0
  94. package/dist/chunks/spinner.js.map +1 -0
  95. package/dist/chunks/switch.cjs +110 -16
  96. package/dist/chunks/switch.cjs.map +1 -1
  97. package/dist/chunks/switch.js +111 -17
  98. package/dist/chunks/switch.js.map +1 -1
  99. package/dist/chunks/tab-panel.cjs +3 -3
  100. package/dist/chunks/tab-panel.cjs.map +1 -1
  101. package/dist/chunks/tab-panel.js +4 -4
  102. package/dist/chunks/tab-panel.js.map +1 -1
  103. package/dist/chunks/tag.cjs +1 -1
  104. package/dist/chunks/tag.cjs.map +1 -1
  105. package/dist/chunks/tag.js +2 -2
  106. package/dist/chunks/tag.js.map +1 -1
  107. package/dist/chunks/text-input.cjs +11 -16
  108. package/dist/chunks/text-input.cjs.map +1 -1
  109. package/dist/chunks/text-input.js +11 -16
  110. package/dist/chunks/text-input.js.map +1 -1
  111. package/dist/chunks/textarea.cjs +137 -0
  112. package/dist/chunks/textarea.cjs.map +1 -0
  113. package/dist/chunks/textarea.js +138 -0
  114. package/dist/chunks/textarea.js.map +1 -0
  115. package/dist/chunks/tooltip.cjs +293 -0
  116. package/dist/chunks/tooltip.cjs.map +1 -0
  117. package/dist/chunks/tooltip.js +294 -0
  118. package/dist/chunks/tooltip.js.map +1 -0
  119. package/dist/chunks/tree.cjs +468 -0
  120. package/dist/chunks/tree.cjs.map +1 -0
  121. package/dist/chunks/tree.js +469 -0
  122. package/dist/chunks/tree.js.map +1 -0
  123. package/dist/chunks/variables.cjs +2 -2
  124. package/dist/chunks/variables.js +2 -2
  125. package/dist/copy-button.cjs +6 -0
  126. package/dist/copy-button.cjs.map +1 -0
  127. package/dist/copy-button.js +6 -0
  128. package/dist/copy-button.js.map +1 -0
  129. package/dist/drawer.cjs +6 -0
  130. package/dist/drawer.cjs.map +1 -0
  131. package/dist/drawer.js +6 -0
  132. package/dist/drawer.js.map +1 -0
  133. package/dist/index.cjs +175 -88
  134. package/dist/index.cjs.map +1 -1
  135. package/dist/index.js +186 -99
  136. package/dist/index.js.map +1 -1
  137. package/dist/menu.cjs +6 -0
  138. package/dist/menu.cjs.map +1 -0
  139. package/dist/menu.js +6 -0
  140. package/dist/menu.js.map +1 -0
  141. package/dist/pagination.cjs +6 -0
  142. package/dist/pagination.cjs.map +1 -0
  143. package/dist/pagination.js +6 -0
  144. package/dist/pagination.js.map +1 -0
  145. package/dist/progress-bar.cjs +6 -0
  146. package/dist/progress-bar.cjs.map +1 -0
  147. package/dist/progress-bar.js +6 -0
  148. package/dist/progress-bar.js.map +1 -0
  149. package/dist/select.cjs +1 -1
  150. package/dist/select.cjs.map +1 -1
  151. package/dist/select.js +2 -2
  152. package/dist/select.js.map +1 -1
  153. package/dist/spinner.cjs +6 -0
  154. package/dist/spinner.cjs.map +1 -0
  155. package/dist/spinner.js +6 -0
  156. package/dist/spinner.js.map +1 -0
  157. package/dist/textarea.cjs +5 -0
  158. package/dist/textarea.cjs.map +1 -0
  159. package/dist/textarea.js +5 -0
  160. package/dist/textarea.js.map +1 -0
  161. package/dist/tooltip.cjs +6 -0
  162. package/dist/tooltip.cjs.map +1 -0
  163. package/dist/tooltip.js +6 -0
  164. package/dist/tooltip.js.map +1 -0
  165. package/dist/tree.cjs +6 -0
  166. package/dist/tree.cjs.map +1 -0
  167. package/dist/tree.js +6 -0
  168. package/dist/tree.js.map +1 -0
  169. package/dist/types/aeico-field.d.ts +52 -0
  170. package/dist/types/alert/alert.d.ts +1 -0
  171. package/dist/types/copy-button/copy-button.d.ts +32 -0
  172. package/dist/types/copy-button/defines.d.ts +1 -0
  173. package/dist/types/copy-button/index.d.ts +3 -0
  174. package/dist/types/detail/defines.d.ts +1 -0
  175. package/dist/types/detail/detail.d.ts +3 -1
  176. package/dist/types/detail/index.d.ts +1 -1
  177. package/dist/types/detail-group/detail-group.d.ts +39 -0
  178. package/dist/types/detail-group/index.d.ts +2 -0
  179. package/dist/types/drawer/defines.d.ts +1 -0
  180. package/dist/types/drawer/drawer.d.ts +31 -0
  181. package/dist/types/drawer/index.d.ts +3 -0
  182. package/dist/types/icon/built-in-icons.d.ts +1 -0
  183. package/dist/types/icon/icon.d.ts +1 -0
  184. package/dist/types/icon/registry.d.ts +8 -0
  185. package/dist/types/index.d.ts +17 -0
  186. package/dist/types/menu/defines.d.ts +15 -0
  187. package/dist/types/menu/index.d.ts +5 -0
  188. package/dist/types/menu/menu-item.d.ts +63 -0
  189. package/dist/types/menu/menu.d.ts +34 -0
  190. package/dist/types/number-input/index.d.ts +2 -0
  191. package/dist/types/number-input/number-input.d.ts +35 -0
  192. package/dist/types/pagination/defines.d.ts +2 -0
  193. package/dist/types/pagination/index.d.ts +3 -0
  194. package/dist/types/pagination/pagination.d.ts +77 -0
  195. package/dist/types/select/select.d.ts +2 -2
  196. package/dist/types/spinner/defines.d.ts +3 -0
  197. package/dist/types/spinner/index.d.ts +3 -0
  198. package/dist/types/spinner/spinner.d.ts +35 -0
  199. package/dist/types/switch/defines.d.ts +1 -0
  200. package/dist/types/switch/switch.d.ts +8 -4
  201. package/dist/types/text-input/text-input.d.ts +0 -4
  202. package/dist/types/textarea/index.d.ts +1 -0
  203. package/dist/types/textarea/textarea.d.ts +26 -0
  204. package/dist/types/tooltip/defines.d.ts +2 -0
  205. package/dist/types/tooltip/index.d.ts +4 -0
  206. package/dist/types/tooltip/tooltip.d.ts +48 -0
  207. package/dist/types/tree/defines.d.ts +23 -0
  208. package/dist/types/tree/index.d.ts +5 -0
  209. package/dist/types/tree/tree-item.d.ts +54 -0
  210. package/dist/types/tree/tree.d.ts +64 -0
  211. package/package.json +5 -5
  212. package/src/aeico-field.ts +142 -7
  213. package/src/alert/alert.ts +3 -2
  214. package/src/checkbox/checkbox.ts +17 -2
  215. package/src/copy-button/copy-button.ts +146 -0
  216. package/src/copy-button/defines.ts +5 -0
  217. package/src/copy-button/index.ts +3 -0
  218. package/src/detail/defines.ts +1 -0
  219. package/src/detail/detail.ts +5 -1
  220. package/src/detail/index.ts +1 -1
  221. package/src/detail-group/detail-group.ts +104 -0
  222. package/src/detail-group/index.ts +2 -0
  223. package/src/drawer/defines.ts +1 -0
  224. package/src/drawer/drawer.ts +157 -0
  225. package/src/drawer/index.ts +3 -0
  226. package/src/icon/built-in-icons.ts +21 -0
  227. package/src/icon/icon.ts +1 -0
  228. package/src/icon/registry.ts +22 -0
  229. package/src/index.ts +30 -0
  230. package/src/menu/defines.ts +17 -0
  231. package/src/menu/index.ts +5 -0
  232. package/src/menu/menu-item.ts +315 -0
  233. package/src/menu/menu.ts +81 -0
  234. package/src/number-input/index.ts +2 -0
  235. package/src/number-input/number-input.ts +137 -0
  236. package/src/pagination/defines.ts +2 -0
  237. package/src/pagination/index.ts +3 -0
  238. package/src/pagination/pagination.ts +310 -0
  239. package/src/radio-group/radio-group.ts +11 -4
  240. package/src/select/select.ts +111 -70
  241. package/src/slider/slider.ts +9 -2
  242. package/src/spinner/defines.ts +12 -0
  243. package/src/spinner/index.ts +3 -0
  244. package/src/spinner/spinner.ts +81 -0
  245. package/src/styles/components/action-button.css +37 -0
  246. package/src/styles/components/checkbox.css +4 -26
  247. package/src/styles/components/copy-button.css +119 -0
  248. package/src/styles/components/detail-group.css +10 -0
  249. package/src/styles/components/detail.css +10 -1
  250. package/src/styles/components/drawer.css +161 -0
  251. package/src/styles/components/field-label.css +120 -0
  252. package/src/styles/components/menu-item.css +168 -0
  253. package/src/styles/components/menu.css +17 -0
  254. package/src/styles/components/number-input.css +167 -0
  255. package/src/styles/components/pagination.css +205 -0
  256. package/src/styles/components/radio-group.css +0 -23
  257. package/src/styles/components/select.css +12 -39
  258. package/src/styles/components/slider.css +0 -42
  259. package/src/styles/components/spinner.css +80 -0
  260. package/src/styles/components/switch.css +68 -19
  261. package/src/styles/components/tab-panel.css +1 -1
  262. package/src/styles/components/tabs.css +1 -0
  263. package/src/styles/components/text-input.css +7 -45
  264. package/src/styles/components/textarea.css +75 -0
  265. package/src/styles/components/tooltip.css +103 -0
  266. package/src/styles/components/tree-item.css +152 -0
  267. package/src/styles/components/tree.css +10 -0
  268. package/src/styles/layout.css +457 -25
  269. package/src/switch/defines.ts +1 -0
  270. package/src/switch/switch.ts +61 -12
  271. package/src/text-input/text-input.ts +10 -15
  272. package/src/textarea/index.ts +1 -0
  273. package/src/textarea/textarea.ts +107 -0
  274. package/src/tooltip/defines.ts +11 -0
  275. package/src/tooltip/index.ts +4 -0
  276. package/src/tooltip/tooltip.ts +183 -0
  277. package/src/tree/defines.ts +26 -0
  278. package/src/tree/index.ts +5 -0
  279. package/src/tree/tree-item.ts +258 -0
  280. package/src/tree/tree.ts +237 -0
  281. package/dist/chunks/aeico-field.cjs +0 -179
  282. package/dist/chunks/aeico-field.cjs.map +0 -1
  283. package/dist/chunks/aeico-field.js +0 -180
  284. package/dist/chunks/aeico-field.js.map +0 -1
@@ -0,0 +1,476 @@
1
+ import { prop, tags, html } from "aeico";
2
+ import { A as AeicoComponent } from "./aeico-component.js";
3
+ import { v as variables } from "./variables.js";
4
+ import { s as sizeCSS } from "./size.js";
5
+ const paginationStyle = `:host {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ font-size: var(--size-m);
9
+ }
10
+
11
+ nav {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 4px;
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ button {
20
+ display: inline-flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ min-width: 2em;
24
+ height: 2em;
25
+ padding: 0 0.5em;
26
+ font-family: inherit;
27
+ font-size: inherit;
28
+ line-height: 1;
29
+ cursor: pointer;
30
+ user-select: none;
31
+ border-radius: 4px;
32
+ border: 1px solid var(--border-default);
33
+ background: transparent;
34
+ color: var(--color-text-main);
35
+ transition: background 0.15s, border-color 0.15s, color 0.15s;
36
+ outline: none;
37
+ }
38
+
39
+ button:focus-visible {
40
+ box-shadow: 0 0 0 2px var(--focus-ring);
41
+ border-color: var(--border-focus);
42
+ }
43
+
44
+ button:hover:not(:disabled) {
45
+ border-color: var(--color-primary);
46
+ color: var(--color-primary);
47
+ background: var(--color-primary-bg-subtle);
48
+ }
49
+
50
+ button:active:not(:disabled) {
51
+ background: color-mix(in srgb, var(--color-primary-bg-subtle), var(--color-primary) 10%);
52
+ }
53
+
54
+ button:disabled {
55
+ opacity: 0.45;
56
+ cursor: not-allowed;
57
+ }
58
+
59
+ button.active {
60
+ background: var(--color-primary);
61
+ border-color: var(--color-primary);
62
+ color: white;
63
+ font-weight: 600;
64
+ cursor: default;
65
+ }
66
+
67
+ button.active:hover:not(:disabled) {
68
+ background: var(--color-primary-hover);
69
+ border-color: var(--color-primary-hover);
70
+ color: white;
71
+ }
72
+
73
+ button.nav-btn {
74
+ min-width: 2em;
75
+ width: 2em;
76
+ padding: 0;
77
+ }
78
+
79
+ [part="ellipsis"] {
80
+ display: inline-flex;
81
+ align-items: flex-end;
82
+ justify-content: center;
83
+ min-width: 2em;
84
+ height: 2em;
85
+ color: var(--color-text-muted);
86
+ user-select: none;
87
+ letter-spacing: 0.1em;
88
+ padding-bottom: 0.2em;
89
+ }
90
+
91
+ input[part="page-input"] {
92
+ width: 3em;
93
+ height: 2em;
94
+ padding: 0 0.4em;
95
+ text-align: center;
96
+ border: 1px solid var(--border-subtle);
97
+ border-radius: 4px;
98
+ font-size: inherit;
99
+ font-family: inherit;
100
+ color: var(--color-text-main);
101
+ background: var(--surface-base);
102
+ box-shadow: none;
103
+ -webkit-appearance: none;
104
+ -moz-appearance: textfield;
105
+ appearance: textfield;
106
+ outline: none;
107
+ transition: border-color 0.15s, box-shadow 0.15s;
108
+ }
109
+
110
+ input[part="page-input"]:hover:not(:disabled) {
111
+ border-color: var(--border-default);
112
+ }
113
+
114
+ input[part="page-input"]::-webkit-inner-spin-button,
115
+ input[part="page-input"]::-webkit-outer-spin-button {
116
+ -webkit-appearance: none;
117
+ appearance: none;
118
+ }
119
+
120
+ input[part="page-input"]:focus {
121
+ border-color: var(--border-focus);
122
+ box-shadow: 0 0 0 2px var(--focus-ring);
123
+ }
124
+
125
+ input[part="page-input"]:disabled {
126
+ opacity: 0.45;
127
+ cursor: not-allowed;
128
+ }
129
+
130
+ [part="page-total"] {
131
+ color: var(--color-text-muted);
132
+ white-space: nowrap;
133
+ padding: 0 0.25em;
134
+ line-height: 2em;
135
+ }
136
+
137
+ /* ── Borderless variant ──────────────────────────────────────────────── */
138
+ :host([variant='borderless']) button {
139
+ border-color: transparent;
140
+ }
141
+
142
+ :host([variant='borderless']) button:hover:not(:disabled) {
143
+ border-color: transparent;
144
+ }
145
+
146
+ :host([variant='borderless']) button.active {
147
+ border-color: transparent;
148
+ }
149
+
150
+ :host([variant='borderless']) input[part='page-input'] {
151
+ border-color: transparent;
152
+ }
153
+
154
+ :host([variant='borderless']) input[part='page-input']:hover:not(:disabled) {
155
+ border-color: transparent;
156
+ }
157
+
158
+ :host([variant='borderless']) input[part='page-input']:focus {
159
+ border-color: var(--border-focus);
160
+ }
161
+
162
+ /* ── Link variant ────────────────────────────────────────────────────── */
163
+ :host([variant='link']) button {
164
+ border-color: transparent;
165
+ background: transparent;
166
+ }
167
+
168
+ :host([variant='link']) button:hover:not(:disabled) {
169
+ border-color: transparent;
170
+ background: transparent;
171
+ color: var(--color-primary);
172
+ }
173
+
174
+ :host([variant='link']) button:active:not(:disabled) {
175
+ background: transparent;
176
+ }
177
+
178
+ :host([variant='link']) button:focus-visible {
179
+ border-color: transparent;
180
+ }
181
+
182
+ :host([variant='link']) button.active {
183
+ background: transparent;
184
+ border-color: transparent;
185
+ color: var(--color-primary);
186
+ font-weight: 600;
187
+ }
188
+
189
+ :host([variant='link']) button.active:hover:not(:disabled) {
190
+ background: transparent;
191
+ color: var(--color-primary);
192
+ }
193
+
194
+ :host([variant='link']) input[part='page-input'] {
195
+ border-color: transparent;
196
+ border-bottom-color: var(--border-subtle);
197
+ border-radius: 0;
198
+ }
199
+
200
+ :host([variant='link']) input[part='page-input']:hover:not(:disabled) {
201
+ border-color: transparent;
202
+ border-bottom-color: var(--border-default);
203
+ }
204
+
205
+ :host([variant='link']) input[part='page-input']:focus {
206
+ border-color: transparent;
207
+ border-bottom-color: var(--border-focus);
208
+ box-shadow: none;
209
+ }
210
+ `;
211
+ var __create = Object.create;
212
+ var __defProp = Object.defineProperty;
213
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
214
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
215
+ var __typeError = (msg) => {
216
+ throw TypeError(msg);
217
+ };
218
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
219
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
220
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
221
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
222
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
223
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
224
+ var __runInitializers = (array, flags, self, value) => {
225
+ 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);
226
+ return value;
227
+ };
228
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
229
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
230
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
231
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
232
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
233
+ return __privateGet(this, extra);
234
+ }, set [name](x) {
235
+ return __privateSet(this, extra, x);
236
+ } }, name));
237
+ for (var i = decorators.length - 1; i >= 0; i--) {
238
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
239
+ {
240
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
241
+ access.get = (x) => x[name];
242
+ access.set = (x, y) => x[name] = y;
243
+ }
244
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
245
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
246
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
247
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
248
+ }
249
+ return desc && __defProp(target, name, desc), target;
250
+ };
251
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
252
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
253
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
254
+ 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);
255
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
256
+ 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;
257
+ class Pagination extends (_a = AeicoComponent, _page_dec = [prop({ type: Number })], _pageSize_dec = [prop({ type: Number })], _total_dec = [prop({ type: Number })], _pageCount_dec = [prop({ type: Number })], _siblingCount_dec = [prop({ type: Number })], _size_dec = [prop({ type: String })], _disabled_dec = [prop({ type: Boolean })], _simple_dec = [prop({ type: Boolean })], _showFirstLast_dec = [prop({ type: Boolean })], _variant_dec = [prop({ type: String })], _a) {
258
+ constructor() {
259
+ super(...arguments);
260
+ __privateAdd(this, _page, __runInitializers(_init, 8, this, 1)), __runInitializers(_init, 11, this);
261
+ __privateAdd(this, _pageSize, __runInitializers(_init, 12, this, 10)), __runInitializers(_init, 15, this);
262
+ __privateAdd(this, _total, __runInitializers(_init, 16, this, 0)), __runInitializers(_init, 19, this);
263
+ __privateAdd(this, _pageCount, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
264
+ __privateAdd(this, _siblingCount, __runInitializers(_init, 24, this, 1)), __runInitializers(_init, 27, this);
265
+ __privateAdd(this, _size, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
266
+ __privateAdd(this, _disabled, __runInitializers(_init, 32, this, false)), __runInitializers(_init, 35, this);
267
+ __privateAdd(this, _simple, __runInitializers(_init, 36, this, false)), __runInitializers(_init, 39, this);
268
+ __privateAdd(this, _showFirstLast, __runInitializers(_init, 40, this, false)), __runInitializers(_init, 43, this);
269
+ __privateAdd(this, _variant, __runInitializers(_init, 44, this)), __runInitializers(_init, 47, this);
270
+ __publicField(this, "_simpleInput", null);
271
+ __publicField(this, "_handleItemClick", (e) => {
272
+ const btn = e.currentTarget;
273
+ const p = Number(btn.dataset.page);
274
+ if (!isNaN(p)) this._goToPage(p);
275
+ });
276
+ __publicField(this, "_handlePrevClick", () => {
277
+ this._goToPage(this._currentPage - 1);
278
+ });
279
+ __publicField(this, "_handleNextClick", () => {
280
+ this._goToPage(this._currentPage + 1);
281
+ });
282
+ __publicField(this, "_handleFirstClick", () => {
283
+ this._goToPage(1);
284
+ });
285
+ __publicField(this, "_handleLastClick", () => {
286
+ this._goToPage(this._computedPageCount);
287
+ });
288
+ __publicField(this, "_handleSimpleInputChange", (e) => {
289
+ const input = e.target;
290
+ const val = parseInt(input.value, 10);
291
+ if (!isNaN(val)) {
292
+ this._goToPage(val);
293
+ }
294
+ input.value = String(this._currentPage);
295
+ });
296
+ }
297
+ get _computedPageCount() {
298
+ if (this.pageCount != null) return Math.max(1, this.pageCount);
299
+ const ps = this.pageSize > 0 ? this.pageSize : 10;
300
+ return Math.max(1, Math.ceil(this.total / ps));
301
+ }
302
+ get _currentPage() {
303
+ const count = this._computedPageCount;
304
+ return Math.max(1, Math.min(this.page ?? 1, count));
305
+ }
306
+ _getPageItems() {
307
+ const count = this._computedPageCount;
308
+ const page = this._currentPage;
309
+ const sc = Math.max(0, this.siblingCount ?? 1);
310
+ const rangeStart = Math.max(2, page - sc);
311
+ const rangeEnd = Math.min(count - 1, page + sc);
312
+ const showLeftEllipsis = rangeStart > 2;
313
+ const showRightEllipsis = rangeEnd < count - 1;
314
+ const items = [];
315
+ items.push(1);
316
+ if (count <= 1) return items;
317
+ if (showLeftEllipsis) {
318
+ items.push("ellipsis-start");
319
+ } else {
320
+ for (let i = 2; i < rangeStart; i++) items.push(i);
321
+ }
322
+ for (let i = rangeStart; i <= rangeEnd; i++) items.push(i);
323
+ if (showRightEllipsis) {
324
+ items.push("ellipsis-end");
325
+ } else {
326
+ for (let i = rangeEnd + 1; i < count; i++) items.push(i);
327
+ }
328
+ items.push(count);
329
+ return items;
330
+ }
331
+ _goToPage(page) {
332
+ const count = this._computedPageCount;
333
+ const next = Math.max(1, Math.min(count, page));
334
+ if (next === this._currentPage) return;
335
+ this.page = next;
336
+ this.emit("change", { detail: { page: this.page } });
337
+ }
338
+ onUpdated() {
339
+ if (this._simpleInput) {
340
+ this._simpleInput.value = String(this._currentPage);
341
+ }
342
+ }
343
+ _renderNavBtn(name, iconName, label, disabled, onClick) {
344
+ const { button, slot, aeIcon } = tags;
345
+ button(
346
+ {
347
+ key: name,
348
+ part: name,
349
+ className: "nav-btn",
350
+ disabled,
351
+ "aria-label": label,
352
+ "@click": onClick
353
+ },
354
+ () => {
355
+ slot({ name }, () => {
356
+ aeIcon({ name: iconName });
357
+ });
358
+ }
359
+ );
360
+ }
361
+ _renderSimpleMode(page, count, disabled) {
362
+ this._simpleInput = tags.input({
363
+ key: "page-input",
364
+ part: "page-input",
365
+ type: "number",
366
+ min: "1",
367
+ max: String(count),
368
+ value: String(page),
369
+ disabled,
370
+ "aria-label": "Page number",
371
+ "@change": this._handleSimpleInputChange
372
+ });
373
+ tags.span({ key: "page-total", part: "page-total", textContent: `/ ${count}` });
374
+ }
375
+ _renderPageItems(page, disabled) {
376
+ for (const item of this._getPageItems()) {
377
+ if (item === "ellipsis-start" || item === "ellipsis-end") {
378
+ tags.span({
379
+ key: item,
380
+ part: "ellipsis",
381
+ className: "ellipsis",
382
+ "aria-hidden": "true",
383
+ textContent: "…"
384
+ });
385
+ } else {
386
+ const isActive = item === page;
387
+ tags.button({
388
+ key: `item-${item}`,
389
+ part: isActive ? "item item-active" : "item",
390
+ className: isActive ? "item active" : "item",
391
+ disabled,
392
+ "aria-current": isActive ? "page" : void 0,
393
+ "aria-label": `Page ${item}`,
394
+ "data-page": String(item),
395
+ textContent: String(item),
396
+ "@click": this._handleItemClick
397
+ });
398
+ }
399
+ }
400
+ }
401
+ render() {
402
+ const count = this._computedPageCount;
403
+ const page = this._currentPage;
404
+ const disabled = this.disabled;
405
+ const isFirst = page <= 1;
406
+ const isLast = page >= count;
407
+ return html(({ nav }) => {
408
+ nav({ part: "root", role: "navigation", "aria-label": "Pagination" }, () => {
409
+ if (this.showFirstLast)
410
+ this._renderNavBtn(
411
+ "first",
412
+ "chevrons-left",
413
+ "First page",
414
+ disabled || isFirst,
415
+ this._handleFirstClick
416
+ );
417
+ this._renderNavBtn(
418
+ "prev",
419
+ "chevron-left",
420
+ "Previous page",
421
+ disabled || isFirst,
422
+ this._handlePrevClick
423
+ );
424
+ if (this.simple) {
425
+ this._renderSimpleMode(page, count, disabled);
426
+ } else {
427
+ this._renderPageItems(page, disabled);
428
+ }
429
+ this._renderNavBtn(
430
+ "next",
431
+ "chevron-right",
432
+ "Next page",
433
+ disabled || isLast,
434
+ this._handleNextClick
435
+ );
436
+ if (this.showFirstLast)
437
+ this._renderNavBtn(
438
+ "last",
439
+ "chevrons-right",
440
+ "Last page",
441
+ disabled || isLast,
442
+ this._handleLastClick
443
+ );
444
+ });
445
+ });
446
+ }
447
+ }
448
+ _init = __decoratorStart(_a);
449
+ _page = /* @__PURE__ */ new WeakMap();
450
+ _pageSize = /* @__PURE__ */ new WeakMap();
451
+ _total = /* @__PURE__ */ new WeakMap();
452
+ _pageCount = /* @__PURE__ */ new WeakMap();
453
+ _siblingCount = /* @__PURE__ */ new WeakMap();
454
+ _size = /* @__PURE__ */ new WeakMap();
455
+ _disabled = /* @__PURE__ */ new WeakMap();
456
+ _simple = /* @__PURE__ */ new WeakMap();
457
+ _showFirstLast = /* @__PURE__ */ new WeakMap();
458
+ _variant = /* @__PURE__ */ new WeakMap();
459
+ __decorateElement(_init, 4, "page", _page_dec, Pagination, _page);
460
+ __decorateElement(_init, 4, "pageSize", _pageSize_dec, Pagination, _pageSize);
461
+ __decorateElement(_init, 4, "total", _total_dec, Pagination, _total);
462
+ __decorateElement(_init, 4, "pageCount", _pageCount_dec, Pagination, _pageCount);
463
+ __decorateElement(_init, 4, "siblingCount", _siblingCount_dec, Pagination, _siblingCount);
464
+ __decorateElement(_init, 4, "size", _size_dec, Pagination, _size);
465
+ __decorateElement(_init, 4, "disabled", _disabled_dec, Pagination, _disabled);
466
+ __decorateElement(_init, 4, "simple", _simple_dec, Pagination, _simple);
467
+ __decorateElement(_init, 4, "showFirstLast", _showFirstLast_dec, Pagination, _showFirstLast);
468
+ __decorateElement(_init, 4, "variant", _variant_dec, Pagination, _variant);
469
+ __decoratorMetadata(_init, Pagination);
470
+ __publicField(Pagination, "tagName", "pagination");
471
+ __publicField(Pagination, "styles", [variables, sizeCSS, paginationStyle]);
472
+ Pagination.register();
473
+ export {
474
+ Pagination as P
475
+ };
476
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sources":["../../src/pagination/pagination.ts"],"sourcesContent":["import { html, prop, tags } from 'aeico';\nimport type { InferProps } from 'aeico';\nimport AeicoComponent from '../aeico-component';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport paginationStyle from '../styles/components/pagination.css?inline';\nimport type { PaginationSize, PaginationVariant } from './defines';\nimport '../icon/icon';\n\ntype PageItem = number | 'ellipsis-start' | 'ellipsis-end';\n\n/**\n * Pagination component for navigating between pages of content.\n *\n * @prop {number} page - Current page number (1-indexed). Default: 1.\n * @prop {number} pageSize - Number of items per page. Default: 10.\n * @prop {number} total - Total number of items. Used to compute pageCount when pageCount is not set.\n * @prop {number} pageCount - Total number of pages. Overrides total/pageSize calculation when set.\n * @prop {number} siblingCount - Number of page buttons to show on each side of the current page. Default: 1.\n * @prop {'xs'|'sm'|'md'|'lg'} size - Size variant.\n * @prop {boolean} disabled - Disables all interactive controls.\n * @prop {boolean} simple - Simple mode: shows only prev/next buttons and a page number input.\n * @prop {boolean} showFirstLast - Show dedicated first-page and last-page jump buttons.\n * @prop {'borderless'|'link'} variant - Visual variant. `borderless` removes borders; `link` renders page numbers as plain text links with no borders or backgrounds.\n *\n * @event {CustomEvent<{page: number}>} change - Fired when the page changes.\n *\n * @slot prev - Custom content for the previous-page button (default: chevron-left icon).\n * @slot next - Custom content for the next-page button (default: chevron-right icon).\n * @slot first - Custom content for the first-page button (default: chevrons-left icon). Requires showFirstLast.\n * @slot last - Custom content for the last-page button (default: chevrons-right icon). Requires showFirstLast.\n *\n * @csspart root - The outer <nav> element.\n * @csspart prev - The previous-page button.\n * @csspart next - The next-page button.\n * @csspart first - The first-page button (visible when showFirstLast).\n * @csspart last - The last-page button (visible when showFirstLast).\n * @csspart item - A page number button.\n * @csspart ellipsis - An ellipsis span between page groups.\n * @csspart page-input - The page number input in simple mode.\n * @csspart page-total - The \"/ N\" label in simple mode.\n *\n * @example\n * ```html\n * <ae-pagination total=\"100\" page-size=\"10\" page=\"1\"></ae-pagination>\n * ```\n */\nclass Pagination extends AeicoComponent {\n static tagName = 'pagination';\n\n protected static styles = [styleVariables, sizeCSS, paginationStyle];\n\n @prop({ type: Number })\n accessor page: number = 1;\n\n @prop({ type: Number })\n accessor pageSize: number = 10;\n\n @prop({ type: Number })\n accessor total: number = 0;\n\n @prop({ type: Number })\n accessor pageCount: number | undefined;\n\n @prop({ type: Number })\n accessor siblingCount: number = 1;\n\n @prop({ type: String })\n accessor size: PaginationSize | undefined;\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: Boolean })\n accessor simple: boolean = false;\n\n @prop({ type: Boolean })\n accessor showFirstLast: boolean = false;\n\n @prop({ type: String })\n accessor variant: PaginationVariant | undefined;\n\n private _simpleInput: HTMLInputElement | null = null;\n\n private get _computedPageCount(): number {\n if (this.pageCount != null) return Math.max(1, this.pageCount);\n const ps = this.pageSize > 0 ? this.pageSize : 10;\n return Math.max(1, Math.ceil(this.total / ps));\n }\n\n private get _currentPage(): number {\n const count = this._computedPageCount;\n return Math.max(1, Math.min(this.page ?? 1, count));\n }\n\n private _getPageItems(): PageItem[] {\n const count = this._computedPageCount;\n const page = this._currentPage;\n const sc = Math.max(0, this.siblingCount ?? 1);\n\n const rangeStart = Math.max(2, page - sc);\n const rangeEnd = Math.min(count - 1, page + sc);\n\n const showLeftEllipsis = rangeStart > 2;\n const showRightEllipsis = rangeEnd < count - 1;\n\n const items: PageItem[] = [];\n\n // First page always shown\n items.push(1);\n\n if (count <= 1) return items;\n\n // Left side\n if (showLeftEllipsis) {\n items.push('ellipsis-start');\n } else {\n for (let i = 2; i < rangeStart; i++) items.push(i);\n }\n\n // Sibling range (bounded to 2..count-1)\n for (let i = rangeStart; i <= rangeEnd; i++) items.push(i);\n\n // Right side\n if (showRightEllipsis) {\n items.push('ellipsis-end');\n } else {\n for (let i = rangeEnd + 1; i < count; i++) items.push(i);\n }\n\n // Last page always shown\n items.push(count);\n\n return items;\n }\n\n private _goToPage(page: number): void {\n const count = this._computedPageCount;\n const next = Math.max(1, Math.min(count, page));\n if (next === this._currentPage) return;\n this.page = next;\n this.emit('change', { detail: { page: this.page } });\n }\n\n private _handleItemClick = (e: Event): void => {\n const btn = e.currentTarget as HTMLElement;\n const p = Number(btn.dataset.page);\n if (!isNaN(p)) this._goToPage(p);\n };\n\n private _handlePrevClick = (): void => {\n this._goToPage(this._currentPage - 1);\n };\n private _handleNextClick = (): void => {\n this._goToPage(this._currentPage + 1);\n };\n private _handleFirstClick = (): void => {\n this._goToPage(1);\n };\n private _handleLastClick = (): void => {\n this._goToPage(this._computedPageCount);\n };\n\n private _handleSimpleInputChange = (e: Event): void => {\n const input = e.target as HTMLInputElement;\n const val = parseInt(input.value, 10);\n if (!isNaN(val)) {\n this._goToPage(val);\n }\n\n input.value = String(this._currentPage);\n };\n\n protected onUpdated(): void {\n if (this._simpleInput) {\n this._simpleInput.value = String(this._currentPage);\n }\n }\n\n private _renderNavBtn(\n name: 'first' | 'prev' | 'next' | 'last',\n iconName: string,\n label: string,\n disabled: boolean,\n onClick: () => void,\n ): void {\n const { button, slot, aeIcon } = tags;\n\n button(\n {\n key: name,\n part: name,\n className: 'nav-btn',\n disabled,\n 'aria-label': label,\n '@click': onClick,\n },\n () => {\n slot({ name }, () => {\n aeIcon({ name: iconName });\n });\n },\n );\n }\n\n private _renderSimpleMode(page: number, count: number, disabled: boolean): void {\n this._simpleInput = tags.input({\n key: 'page-input',\n part: 'page-input',\n type: 'number',\n min: '1',\n max: String(count),\n value: String(page),\n disabled,\n 'aria-label': 'Page number',\n '@change': this._handleSimpleInputChange,\n });\n tags.span({ key: 'page-total', part: 'page-total', textContent: `/ ${count}` });\n }\n\n private _renderPageItems(page: number, disabled: boolean): void {\n for (const item of this._getPageItems()) {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n tags.span({\n key: item,\n part: 'ellipsis',\n className: 'ellipsis',\n 'aria-hidden': 'true',\n textContent: '…',\n });\n } else {\n const isActive = item === page;\n tags.button({\n key: `item-${item}`,\n part: isActive ? 'item item-active' : 'item',\n className: isActive ? 'item active' : 'item',\n disabled,\n 'aria-current': isActive ? 'page' : undefined,\n 'aria-label': `Page ${item}`,\n 'data-page': String(item),\n textContent: String(item),\n '@click': this._handleItemClick,\n });\n }\n }\n }\n\n protected render() {\n const count = this._computedPageCount;\n const page = this._currentPage;\n const disabled = this.disabled;\n const isFirst = page <= 1;\n const isLast = page >= count;\n\n return html(({ nav }) => {\n nav({ part: 'root', role: 'navigation', 'aria-label': 'Pagination' }, () => {\n if (this.showFirstLast)\n this._renderNavBtn(\n 'first',\n 'chevrons-left',\n 'First page',\n disabled || isFirst,\n this._handleFirstClick,\n );\n\n this._renderNavBtn(\n 'prev',\n 'chevron-left',\n 'Previous page',\n disabled || isFirst,\n this._handlePrevClick,\n );\n\n if (this.simple) {\n this._renderSimpleMode(page, count, disabled);\n } else {\n this._renderPageItems(page, disabled);\n }\n\n this._renderNavBtn(\n 'next',\n 'chevron-right',\n 'Next page',\n disabled || isLast,\n this._handleNextClick,\n );\n\n if (this.showFirstLast)\n this._renderNavBtn(\n 'last',\n 'chevrons-right',\n 'Last page',\n disabled || isLast,\n this._handleLastClick,\n );\n });\n });\n }\n}\n\nPagination.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-pagination': Pagination;\n }\n}\n\nexport default Pagination;\nexport type PaginationProps = InferProps<typeof Pagination>;\n"],"names":["styleVariables"],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ const aeico = require("aeico");
3
+ const aeicoComponent = require("./aeico-component.cjs");
4
+ const variables = require("./variables.cjs");
5
+ const color = require("./color.cjs");
6
+ const style = ":host {\n display: block;\n --progress-height: 8px;\n --color-solid: var(--color-primary);\n}\n\n.progress-track {\n width: 100%;\n height: var(--progress-height);\n background: var(--border-subtle);\n border-radius: calc(var(--progress-height) / 2);\n overflow: hidden;\n}\n\n.progress-bar {\n display: block;\n height: 100%;\n border-radius: inherit;\n background: var(--progress-bar-color, var(--color-solid));\n width: 0%;\n transition: width 0.35s ease;\n position: relative;\n}\n\n/* animated: shimmer sweep on top of the solid fill */\n:host([animated]) .progress-bar::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n rgba(255, 255, 255, 0.35) 50%,\n transparent 100%\n );\n background-size: 200% 100%;\n animation: progress-shimmer 1.4s linear infinite;\n}\n\n@keyframes progress-shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n";
7
+ var __create = Object.create;
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
11
+ var __typeError = (msg) => {
12
+ throw TypeError(msg);
13
+ };
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
16
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
17
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
18
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
19
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
20
+ var __runInitializers = (array, flags, self, value) => {
21
+ 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);
22
+ return value;
23
+ };
24
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
25
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
26
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
27
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
28
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
29
+ return __privateGet(this, extra);
30
+ }, set [name](x) {
31
+ return __privateSet(this, extra, x);
32
+ } }, name));
33
+ for (var i = decorators.length - 1; i >= 0; i--) {
34
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
35
+ {
36
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
37
+ access.get = (x) => x[name];
38
+ access.set = (x, y) => x[name] = y;
39
+ }
40
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
41
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
42
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
43
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
44
+ }
45
+ return desc && __defProp(target, name, desc), target;
46
+ };
47
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
48
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
49
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
50
+ 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);
51
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
52
+ var _animated_dec, _color_dec, _label_dec, _value_dec, _a, _init, _value, _label, _color, _animated;
53
+ class ProgressBar extends (_a = aeicoComponent.AeicoComponent, _value_dec = [aeico.prop({ type: Number })], _label_dec = [aeico.prop({ type: String })], _color_dec = [aeico.prop({ type: String })], _animated_dec = [aeico.prop({ type: Boolean })], _a) {
54
+ constructor() {
55
+ super(...arguments);
56
+ __privateAdd(this, _value, __runInitializers(_init, 8, this, 0)), __runInitializers(_init, 11, this);
57
+ __privateAdd(this, _label, __runInitializers(_init, 12, this, "")), __runInitializers(_init, 15, this);
58
+ __privateAdd(this, _color, __runInitializers(_init, 16, this, "primary")), __runInitializers(_init, 19, this);
59
+ __privateAdd(this, _animated, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
60
+ }
61
+ render() {
62
+ const clamped = Math.min(100, Math.max(0, this.value));
63
+ return aeico.html(({ div, span }) => {
64
+ div({ part: "base" }, () => {
65
+ div(
66
+ {
67
+ part: "track",
68
+ className: "progress-track",
69
+ role: "progressbar",
70
+ "aria-valuenow": String(clamped),
71
+ "aria-valuemin": "0",
72
+ "aria-valuemax": "100",
73
+ ...this.label ? { "aria-label": this.label } : {}
74
+ },
75
+ () => {
76
+ span({
77
+ part: "bar",
78
+ className: "progress-bar",
79
+ style: { width: `${clamped}%` }
80
+ });
81
+ }
82
+ );
83
+ });
84
+ });
85
+ }
86
+ }
87
+ _init = __decoratorStart(_a);
88
+ _value = /* @__PURE__ */ new WeakMap();
89
+ _label = /* @__PURE__ */ new WeakMap();
90
+ _color = /* @__PURE__ */ new WeakMap();
91
+ _animated = /* @__PURE__ */ new WeakMap();
92
+ __decorateElement(_init, 4, "value", _value_dec, ProgressBar, _value);
93
+ __decorateElement(_init, 4, "label", _label_dec, ProgressBar, _label);
94
+ __decorateElement(_init, 4, "color", _color_dec, ProgressBar, _color);
95
+ __decorateElement(_init, 4, "animated", _animated_dec, ProgressBar, _animated);
96
+ __decoratorMetadata(_init, ProgressBar);
97
+ __publicField(ProgressBar, "tagName", "progress-bar");
98
+ __publicField(ProgressBar, "styles", [variables.variables, color.colorCSS, style]);
99
+ ProgressBar.register();
100
+ exports.ProgressBar = ProgressBar;
101
+ //# sourceMappingURL=progress-bar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.cjs","sources":["../../src/progress-bar/progress-bar.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport AeicoComponent from '../aeico-component';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport style from '../styles/components/progress-bar.css?inline';\nimport type { ProgressBarColor } from './defines';\n\n/**\n * Progress bars show how far along an ongoing operation is as a horizontal fill.\n * Use them for file uploads, multi-step flows, or any task with measurable progress.\n *\n * @prop {number} value - Completion percentage, automatically clamped to 0–100.\n * @prop {string} label - Accessible label applied as `aria-label` on the track.\n * @prop {'default'|'primary'|'secondary'|'success'|'danger'|'warning'|'info'} color\n * - Preset color variant driven by the shared color system.\n * @prop {boolean} animated - When set, overlays a shimmer sweep animation on the bar.\n *\n * @csspart base - The outermost wrapper `<div>`.\n * @csspart track - The background track `<div>`.\n * @csspart bar - The filled progress `<span>`.\n *\n * @cssproperty [--progress-height=8px] - Height of both the track and the bar.\n * @cssproperty [--progress-bar-color=var(--color-solid)] - Fill color of the bar.\n * When set, takes precedence over the `color` prop entirely.\n */\nclass ProgressBar extends AeicoComponent {\n static tagName = 'progress-bar';\n protected static styles = [styleVariables, colorCSS, style];\n\n @prop({ type: Number })\n accessor value: number = 0;\n\n @prop({ type: String })\n accessor label: string = '';\n\n @prop({ type: String })\n accessor color: ProgressBarColor = 'primary';\n\n @prop({ type: Boolean })\n accessor animated: boolean = false;\n\n protected render() {\n const clamped = Math.min(100, Math.max(0, this.value));\n\n return html(({ div, span }) => {\n div({ part: 'base' }, () => {\n div(\n {\n part: 'track',\n className: 'progress-track',\n role: 'progressbar',\n 'aria-valuenow': String(clamped),\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n ...(this.label ? { 'aria-label': this.label } : {}),\n },\n () => {\n span({\n part: 'bar',\n className: 'progress-bar',\n style: { width: `${clamped}%` },\n });\n },\n );\n });\n });\n }\n}\n\nProgressBar.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-progress-bar': ProgressBar;\n }\n}\n\nexport default ProgressBar;\nexport type ProgressBarProps = InferProps<typeof ProgressBar>;\n"],"names":["AeicoComponent","prop","html","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,eAAA,YAAA,YAAA,YAAA,IAAA,OAAA,QAAA,QAAA,QAAA;AA0BA,MAAM,qBAAoB,KAAAA,eAAAA,gBAIxB,aAAA,CAACC,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,aAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,aAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,gBAAA,CAACA,MAAAA,KAAK,EAAE,MAAM,QAAA,CAAS,IAbC,IAAe;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA;AAKE,iBAAA,MAAS,QAAgB,kBAAzB,OAAA,GAAA,MAAyB,CAAA,CAAA,GAAzB,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAAgB,kBAAzB,OAAA,IAAA,MAAyB,EAAA,CAAA,GAAzB,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,QAA0B,kBAAnC,OAAA,IAAA,MAAmC,SAAA,CAAA,GAAnC,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,WAAoB,kBAA7B,OAAA,IAAA,MAA6B,KAAA,CAAA,GAA7B,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,UAAM,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAErD,WAAOC,WAAK,CAAC,EAAE,KAAK,WAAW;AAC7B,UAAI,EAAE,MAAM,OAAA,GAAU,MAAM;AAC1B;AAAA,UACE;AAAA,YACE,MAAM;AAAA,YACN,WAAW;AAAA,YACX,MAAM;AAAA,YACN,iBAAiB,OAAO,OAAO;AAAA,YAC/B,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,GAAI,KAAK,QAAQ,EAAE,cAAc,KAAK,MAAA,IAAU,CAAA;AAAA,UAAC;AAAA,UAEnD,MAAM;AACJ,iBAAK;AAAA,cACH,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO,EAAE,OAAO,GAAG,OAAO,IAAA;AAAA,YAAI,CAC/B;AAAA,UACH;AAAA,QAAA;AAAA,MAEJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AA1CA,QAAA,iBAAA,EAAA;AAKW,SAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAGA,SAAA,oBAAA,QAAA;AAGA,YAAA,oBAAA,QAAA;AATT,kBAAA,OAAA,GAAS,SADT,YAJI,aAKK,MAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YAPI,aAQK,MAAA;AAGT,kBAAA,OAAA,GAAS,SADT,YAVI,aAWK,MAAA;AAGT,kBAAA,OAAA,GAAS,YADT,eAbI,aAcK,SAAA;AAdX,oBAAA,OAAM,WAAA;AACJ,cADI,aACG,WAAU,cAAA;AACjB,cAFI,aAEa,UAAS,CAACC,UAAAA,WAAgBC,MAAAA,UAAU,KAAK,CAAA;AA0C5D,YAAY,SAAA;;"}