aeico-components 0.1.4 → 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 (299) 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 +12 -15
  24. package/dist/chunks/button.cjs.map +1 -1
  25. package/dist/chunks/button.js +13 -16
  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 +6 -6
  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 +2 -3
  68. package/dist/chunks/navbar.cjs.map +1 -1
  69. package/dist/chunks/navbar.js +3 -4
  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 +6 -7
  100. package/dist/chunks/tab-panel.cjs.map +1 -1
  101. package/dist/chunks/tab-panel.js +7 -8
  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/dropdown.js +4 -4
  134. package/dist/index.cjs +186 -0
  135. package/dist/index.cjs.map +1 -1
  136. package/dist/index.js +201 -15
  137. package/dist/index.js.map +1 -1
  138. package/dist/menu.cjs +6 -0
  139. package/dist/menu.cjs.map +1 -0
  140. package/dist/menu.js +6 -0
  141. package/dist/menu.js.map +1 -0
  142. package/dist/pagination.cjs +6 -0
  143. package/dist/pagination.cjs.map +1 -0
  144. package/dist/pagination.js +6 -0
  145. package/dist/pagination.js.map +1 -0
  146. package/dist/progress-bar.cjs +6 -0
  147. package/dist/progress-bar.cjs.map +1 -0
  148. package/dist/progress-bar.js +6 -0
  149. package/dist/progress-bar.js.map +1 -0
  150. package/dist/select.cjs +1 -1
  151. package/dist/select.cjs.map +1 -1
  152. package/dist/select.js +2 -2
  153. package/dist/select.js.map +1 -1
  154. package/dist/spinner.cjs +6 -0
  155. package/dist/spinner.cjs.map +1 -0
  156. package/dist/spinner.js +6 -0
  157. package/dist/spinner.js.map +1 -0
  158. package/dist/textarea.cjs +5 -0
  159. package/dist/textarea.cjs.map +1 -0
  160. package/dist/textarea.js +5 -0
  161. package/dist/textarea.js.map +1 -0
  162. package/dist/tooltip.cjs +6 -0
  163. package/dist/tooltip.cjs.map +1 -0
  164. package/dist/tooltip.js +6 -0
  165. package/dist/tooltip.js.map +1 -0
  166. package/dist/tree.cjs +6 -0
  167. package/dist/tree.cjs.map +1 -0
  168. package/dist/tree.js +6 -0
  169. package/dist/tree.js.map +1 -0
  170. package/dist/types/aeico-field.d.ts +57 -5
  171. package/dist/types/alert/alert.d.ts +1 -0
  172. package/dist/types/button/button.d.ts +2 -1
  173. package/dist/types/checkbox/checkbox.d.ts +5 -5
  174. package/dist/types/copy-button/copy-button.d.ts +32 -0
  175. package/dist/types/copy-button/defines.d.ts +1 -0
  176. package/dist/types/copy-button/index.d.ts +3 -0
  177. package/dist/types/detail/defines.d.ts +1 -0
  178. package/dist/types/detail/detail.d.ts +3 -1
  179. package/dist/types/detail/index.d.ts +1 -1
  180. package/dist/types/detail-group/detail-group.d.ts +39 -0
  181. package/dist/types/detail-group/index.d.ts +2 -0
  182. package/dist/types/drawer/defines.d.ts +1 -0
  183. package/dist/types/drawer/drawer.d.ts +31 -0
  184. package/dist/types/drawer/index.d.ts +3 -0
  185. package/dist/types/icon/built-in-icons.d.ts +1 -0
  186. package/dist/types/icon/icon.d.ts +1 -0
  187. package/dist/types/icon/registry.d.ts +8 -0
  188. package/dist/types/index.d.ts +19 -0
  189. package/dist/types/menu/defines.d.ts +15 -0
  190. package/dist/types/menu/index.d.ts +5 -0
  191. package/dist/types/menu/menu-item.d.ts +63 -0
  192. package/dist/types/menu/menu.d.ts +34 -0
  193. package/dist/types/number-input/index.d.ts +2 -0
  194. package/dist/types/number-input/number-input.d.ts +35 -0
  195. package/dist/types/pagination/defines.d.ts +2 -0
  196. package/dist/types/pagination/index.d.ts +3 -0
  197. package/dist/types/pagination/pagination.d.ts +77 -0
  198. package/dist/types/progress-bar/defines.d.ts +1 -0
  199. package/dist/types/progress-bar/index.d.ts +3 -0
  200. package/dist/types/progress-bar/progress-bar.d.ts +37 -0
  201. package/dist/types/radio-group/radio-group.d.ts +1 -1
  202. package/dist/types/select/select.d.ts +3 -3
  203. package/dist/types/spinner/defines.d.ts +3 -0
  204. package/dist/types/spinner/index.d.ts +3 -0
  205. package/dist/types/spinner/spinner.d.ts +35 -0
  206. package/dist/types/switch/defines.d.ts +1 -0
  207. package/dist/types/switch/switch.d.ts +13 -9
  208. package/dist/types/text-input/text-input.d.ts +0 -4
  209. package/dist/types/textarea/index.d.ts +1 -0
  210. package/dist/types/textarea/textarea.d.ts +26 -0
  211. package/dist/types/tooltip/defines.d.ts +2 -0
  212. package/dist/types/tooltip/index.d.ts +4 -0
  213. package/dist/types/tooltip/tooltip.d.ts +48 -0
  214. package/dist/types/tree/defines.d.ts +23 -0
  215. package/dist/types/tree/index.d.ts +5 -0
  216. package/dist/types/tree/tree-item.d.ts +54 -0
  217. package/dist/types/tree/tree.d.ts +64 -0
  218. package/package.json +6 -6
  219. package/src/aeico-field.ts +154 -15
  220. package/src/alert/alert.ts +3 -2
  221. package/src/button/button.ts +11 -13
  222. package/src/checkbox/checkbox.ts +21 -6
  223. package/src/copy-button/copy-button.ts +146 -0
  224. package/src/copy-button/defines.ts +5 -0
  225. package/src/copy-button/index.ts +3 -0
  226. package/src/detail/defines.ts +1 -0
  227. package/src/detail/detail.ts +5 -1
  228. package/src/detail/index.ts +1 -1
  229. package/src/detail-group/detail-group.ts +104 -0
  230. package/src/detail-group/index.ts +2 -0
  231. package/src/drawer/defines.ts +1 -0
  232. package/src/drawer/drawer.ts +157 -0
  233. package/src/drawer/index.ts +3 -0
  234. package/src/icon/built-in-icons.ts +21 -0
  235. package/src/icon/icon.ts +1 -0
  236. package/src/icon/registry.ts +22 -0
  237. package/src/index.ts +32 -0
  238. package/src/menu/defines.ts +17 -0
  239. package/src/menu/index.ts +5 -0
  240. package/src/menu/menu-item.ts +315 -0
  241. package/src/menu/menu.ts +81 -0
  242. package/src/navbar/navbar.ts +1 -3
  243. package/src/number-input/index.ts +2 -0
  244. package/src/number-input/number-input.ts +137 -0
  245. package/src/pagination/defines.ts +2 -0
  246. package/src/pagination/index.ts +3 -0
  247. package/src/pagination/pagination.ts +310 -0
  248. package/src/progress-bar/defines.ts +8 -0
  249. package/src/progress-bar/index.ts +3 -0
  250. package/src/progress-bar/progress-bar.ts +80 -0
  251. package/src/radio-group/radio-group.ts +12 -5
  252. package/src/select/select.ts +112 -71
  253. package/src/slider/slider.ts +9 -2
  254. package/src/spinner/defines.ts +12 -0
  255. package/src/spinner/index.ts +3 -0
  256. package/src/spinner/spinner.ts +81 -0
  257. package/src/styles/components/action-button.css +37 -0
  258. package/src/styles/components/checkbox.css +4 -26
  259. package/src/styles/components/copy-button.css +119 -0
  260. package/src/styles/components/detail-group.css +10 -0
  261. package/src/styles/components/detail.css +10 -1
  262. package/src/styles/components/drawer.css +161 -0
  263. package/src/styles/components/field-label.css +120 -0
  264. package/src/styles/components/menu-item.css +168 -0
  265. package/src/styles/components/menu.css +17 -0
  266. package/src/styles/components/number-input.css +167 -0
  267. package/src/styles/components/pagination.css +205 -0
  268. package/src/styles/components/progress-bar.css +44 -0
  269. package/src/styles/components/radio-group.css +0 -23
  270. package/src/styles/components/select.css +12 -39
  271. package/src/styles/components/slider.css +0 -42
  272. package/src/styles/components/spinner.css +80 -0
  273. package/src/styles/components/switch.css +68 -19
  274. package/src/styles/components/tab-panel.css +1 -1
  275. package/src/styles/components/tabs.css +1 -0
  276. package/src/styles/components/text-input.css +7 -45
  277. package/src/styles/components/textarea.css +75 -0
  278. package/src/styles/components/tooltip.css +103 -0
  279. package/src/styles/components/tree-item.css +152 -0
  280. package/src/styles/components/tree.css +10 -0
  281. package/src/styles/layout.css +457 -25
  282. package/src/switch/defines.ts +1 -0
  283. package/src/switch/switch.ts +65 -16
  284. package/src/tabs/tab.ts +1 -1
  285. package/src/tabs/tabs.ts +1 -2
  286. package/src/text-input/text-input.ts +10 -15
  287. package/src/textarea/index.ts +1 -0
  288. package/src/textarea/textarea.ts +107 -0
  289. package/src/tooltip/defines.ts +11 -0
  290. package/src/tooltip/index.ts +4 -0
  291. package/src/tooltip/tooltip.ts +183 -0
  292. package/src/tree/defines.ts +26 -0
  293. package/src/tree/index.ts +5 -0
  294. package/src/tree/tree-item.ts +258 -0
  295. package/src/tree/tree.ts +237 -0
  296. package/dist/chunks/aeico-field.cjs +0 -179
  297. package/dist/chunks/aeico-field.cjs.map +0 -1
  298. package/dist/chunks/aeico-field.js +0 -180
  299. package/dist/chunks/aeico-field.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ import type { MenuIconPlacement } from './defines';
4
+ /**
5
+ * Menu item — used as a direct child of `<ae-menu>` or nested inside another
6
+ * `<ae-menu-item>` to create a two-level submenu.
7
+ *
8
+ * - **Leaf item**: omit `label`; slot contains the item text.
9
+ * - **Parent item**: set `label` to the trigger text; slot children are
10
+ * `<ae-menu-item>` elements that appear in the submenu panel/section.
11
+ *
12
+ * **Slots (parent items only)**
13
+ * - `expand` — icon shown when the submenu is closed (default: CSS triangle).
14
+ * - `collapse` — icon shown when the submenu is open (default: rotated CSS triangle).
15
+ *
16
+ * @example
17
+ * ```html
18
+ * <ae-menu-item label="Settings" icon-placement="start">
19
+ * <ae-icon name="chevron-right" slot="expand"></ae-icon>
20
+ * <ae-icon name="chevron-down" slot="collapse"></ae-icon>
21
+ * <ae-menu-item key="profile">Profile</ae-menu-item>
22
+ * </ae-menu-item>
23
+ * ```
24
+ */
25
+ declare class MenuItem extends AeicoComponent {
26
+ static tagName: string;
27
+ protected static styles: string[];
28
+ accessor key: string | undefined;
29
+ accessor label: string | undefined;
30
+ accessor disabled: boolean;
31
+ accessor href: string | undefined;
32
+ accessor selected: boolean;
33
+ accessor open: boolean;
34
+ accessor iconPlacement: MenuIconPlacement;
35
+ private _outsideClickHandler;
36
+ private _closeTimer;
37
+ connectedCallback(): void;
38
+ disconnectedCallback(): void;
39
+ private get _parentMenu();
40
+ private get _mode();
41
+ private get _orientation();
42
+ private get _trigger();
43
+ private get _isParent();
44
+ /** Compute flyout panel placement based on depth and parent orientation. */
45
+ private get _panelPlacement();
46
+ private _isHoverTrigger;
47
+ private _handleMouseEnter;
48
+ private _handleMouseLeave;
49
+ private _handleParentClick;
50
+ private _handleLeafClick;
51
+ private _handleChildSelect;
52
+ private _handleKeydown;
53
+ private _buildKeyPath;
54
+ protected render(): import("aeico-view").RenderResult;
55
+ }
56
+ declare global {
57
+ interface HTMLElementTagNameMap {
58
+ 'ae-menu-item': MenuItem;
59
+ }
60
+ }
61
+ export default MenuItem;
62
+ export type MenuItemProps = InferProps<typeof MenuItem>;
63
+ export type { MenuIconPlacement };
@@ -0,0 +1,34 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ import type { MenuMode, MenuOrientation, MenuTrigger } from './defines';
4
+ import './menu-item';
5
+ /**
6
+ * Menu navigation component. Renders a horizontal or vertical menu with
7
+ * optional two-level flyout or inline (accordion) submenus.
8
+ *
9
+ * Two modes:
10
+ * - `flyout` (default) — submenus open as floating panels (like a nav bar or
11
+ * context menu).
12
+ * - `inline` — submenus expand in-place (accordion-style sidebar).
13
+ *
14
+ * Emits:
15
+ * - `select` — `{ detail: { key, label, keyPath } }` when a leaf item is clicked.
16
+ */
17
+ declare class Menu extends AeicoComponent {
18
+ static tagName: string;
19
+ protected static styles: string[];
20
+ accessor mode: MenuMode;
21
+ accessor orientation: MenuOrientation;
22
+ accessor trigger: MenuTrigger;
23
+ accessor selectedKey: string | undefined;
24
+ connectedCallback(): void;
25
+ private _handleItemSelect;
26
+ protected render(): import("aeico-view").RenderResult;
27
+ }
28
+ declare global {
29
+ interface HTMLElementTagNameMap {
30
+ 'ae-menu': Menu;
31
+ }
32
+ }
33
+ export default Menu;
34
+ export type MenuProps = InferProps<typeof Menu>;
@@ -0,0 +1,2 @@
1
+ export { default, default as NumberInput } from './number-input';
2
+ export type { NumberInputProps } from './number-input';
@@ -0,0 +1,35 @@
1
+ import AeicoField from '../aeico-field';
2
+ import type { InferProps, Props } from 'aeico';
3
+ declare class NumberInput extends AeicoField<number> {
4
+ protected fieldElement: HTMLInputElement | null;
5
+ static tagName: string;
6
+ static props: Props;
7
+ placeholder?: string;
8
+ min?: number;
9
+ max?: number;
10
+ step?: number;
11
+ controls?: boolean;
12
+ protected static styles: string[];
13
+ render(): import("aeico-view").RenderResult;
14
+ protected readonly boundOnIncrement: () => void;
15
+ protected readonly boundOnDecrement: () => void;
16
+ /**
17
+ * Get current value as number
18
+ */
19
+ protected getValue(): number;
20
+ /**
21
+ * Write value to the input element (DOM only)
22
+ */
23
+ protected writeValue(value: number): void;
24
+ /**
25
+ * Get event payload for change events
26
+ */
27
+ protected getEventPayload(value: number, oldValue: number, action: import('../aeico-field').FieldAction): Record<string, unknown>;
28
+ }
29
+ declare global {
30
+ interface HTMLElementTagNameMap {
31
+ 'ae-number-input': NumberInput;
32
+ }
33
+ }
34
+ export default NumberInput;
35
+ export type NumberInputProps = InferProps<typeof NumberInput>;
@@ -0,0 +1,2 @@
1
+ export type PaginationSize = 'xs' | 'sm' | 'md' | 'lg';
2
+ export type PaginationVariant = 'borderless' | 'link';
@@ -0,0 +1,3 @@
1
+ export { default, default as Pagination } from './pagination';
2
+ export type { PaginationProps } from './pagination';
3
+ export type { PaginationSize, PaginationVariant } from './defines';
@@ -0,0 +1,77 @@
1
+ import type { InferProps } from 'aeico';
2
+ import AeicoComponent from '../aeico-component';
3
+ import type { PaginationSize, PaginationVariant } from './defines';
4
+ import '../icon/icon';
5
+ /**
6
+ * Pagination component for navigating between pages of content.
7
+ *
8
+ * @prop {number} page - Current page number (1-indexed). Default: 1.
9
+ * @prop {number} pageSize - Number of items per page. Default: 10.
10
+ * @prop {number} total - Total number of items. Used to compute pageCount when pageCount is not set.
11
+ * @prop {number} pageCount - Total number of pages. Overrides total/pageSize calculation when set.
12
+ * @prop {number} siblingCount - Number of page buttons to show on each side of the current page. Default: 1.
13
+ * @prop {'xs'|'sm'|'md'|'lg'} size - Size variant.
14
+ * @prop {boolean} disabled - Disables all interactive controls.
15
+ * @prop {boolean} simple - Simple mode: shows only prev/next buttons and a page number input.
16
+ * @prop {boolean} showFirstLast - Show dedicated first-page and last-page jump buttons.
17
+ * @prop {'borderless'|'link'} variant - Visual variant. `borderless` removes borders; `link` renders page numbers as plain text links with no borders or backgrounds.
18
+ *
19
+ * @event {CustomEvent<{page: number}>} change - Fired when the page changes.
20
+ *
21
+ * @slot prev - Custom content for the previous-page button (default: chevron-left icon).
22
+ * @slot next - Custom content for the next-page button (default: chevron-right icon).
23
+ * @slot first - Custom content for the first-page button (default: chevrons-left icon). Requires showFirstLast.
24
+ * @slot last - Custom content for the last-page button (default: chevrons-right icon). Requires showFirstLast.
25
+ *
26
+ * @csspart root - The outer <nav> element.
27
+ * @csspart prev - The previous-page button.
28
+ * @csspart next - The next-page button.
29
+ * @csspart first - The first-page button (visible when showFirstLast).
30
+ * @csspart last - The last-page button (visible when showFirstLast).
31
+ * @csspart item - A page number button.
32
+ * @csspart ellipsis - An ellipsis span between page groups.
33
+ * @csspart page-input - The page number input in simple mode.
34
+ * @csspart page-total - The "/ N" label in simple mode.
35
+ *
36
+ * @example
37
+ * ```html
38
+ * <ae-pagination total="100" page-size="10" page="1"></ae-pagination>
39
+ * ```
40
+ */
41
+ declare class Pagination extends AeicoComponent {
42
+ static tagName: string;
43
+ protected static styles: string[];
44
+ accessor page: number;
45
+ accessor pageSize: number;
46
+ accessor total: number;
47
+ accessor pageCount: number | undefined;
48
+ accessor siblingCount: number;
49
+ accessor size: PaginationSize | undefined;
50
+ accessor disabled: boolean;
51
+ accessor simple: boolean;
52
+ accessor showFirstLast: boolean;
53
+ accessor variant: PaginationVariant | undefined;
54
+ private _simpleInput;
55
+ private get _computedPageCount();
56
+ private get _currentPage();
57
+ private _getPageItems;
58
+ private _goToPage;
59
+ private _handleItemClick;
60
+ private _handlePrevClick;
61
+ private _handleNextClick;
62
+ private _handleFirstClick;
63
+ private _handleLastClick;
64
+ private _handleSimpleInputChange;
65
+ protected onUpdated(): void;
66
+ private _renderNavBtn;
67
+ private _renderSimpleMode;
68
+ private _renderPageItems;
69
+ protected render(): import("aeico-view").RenderResult;
70
+ }
71
+ declare global {
72
+ interface HTMLElementTagNameMap {
73
+ 'ae-pagination': Pagination;
74
+ }
75
+ }
76
+ export default Pagination;
77
+ export type PaginationProps = InferProps<typeof Pagination>;
@@ -0,0 +1 @@
1
+ export type ProgressBarColor = 'default' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';
@@ -0,0 +1,3 @@
1
+ export { default, default as ProgressBar } from './progress-bar';
2
+ export type { ProgressBarProps } from './progress-bar';
3
+ export type { ProgressBarColor } from './defines';
@@ -0,0 +1,37 @@
1
+ import type { InferProps } from 'aeico';
2
+ import AeicoComponent from '../aeico-component';
3
+ import type { ProgressBarColor } from './defines';
4
+ /**
5
+ * Progress bars show how far along an ongoing operation is as a horizontal fill.
6
+ * Use them for file uploads, multi-step flows, or any task with measurable progress.
7
+ *
8
+ * @prop {number} value - Completion percentage, automatically clamped to 0–100.
9
+ * @prop {string} label - Accessible label applied as `aria-label` on the track.
10
+ * @prop {'default'|'primary'|'secondary'|'success'|'danger'|'warning'|'info'} color
11
+ * - Preset color variant driven by the shared color system.
12
+ * @prop {boolean} animated - When set, overlays a shimmer sweep animation on the bar.
13
+ *
14
+ * @csspart base - The outermost wrapper `<div>`.
15
+ * @csspart track - The background track `<div>`.
16
+ * @csspart bar - The filled progress `<span>`.
17
+ *
18
+ * @cssproperty [--progress-height=8px] - Height of both the track and the bar.
19
+ * @cssproperty [--progress-bar-color=var(--color-solid)] - Fill color of the bar.
20
+ * When set, takes precedence over the `color` prop entirely.
21
+ */
22
+ declare class ProgressBar extends AeicoComponent {
23
+ static tagName: string;
24
+ protected static styles: string[];
25
+ accessor value: number;
26
+ accessor label: string;
27
+ accessor color: ProgressBarColor;
28
+ accessor animated: boolean;
29
+ protected render(): import("aeico-view").RenderResult;
30
+ }
31
+ declare global {
32
+ interface HTMLElementTagNameMap {
33
+ 'ae-progress-bar': ProgressBar;
34
+ }
35
+ }
36
+ export default ProgressBar;
37
+ export type ProgressBarProps = InferProps<typeof ProgressBar>;
@@ -25,7 +25,7 @@ declare class RadioGroup extends AeicoField {
25
25
  private _boundOnRadioClick;
26
26
  private _boundOnButtonClick;
27
27
  protected getValue(): string;
28
- protected writeValue(_value: any): void;
28
+ protected writeValue(_value: string): void;
29
29
  protected onReset(): void;
30
30
  protected onClear(): void;
31
31
  render(): import("aeico-view").RenderResult;
@@ -14,7 +14,7 @@ import '../tag/tag';
14
14
  *
15
15
  */
16
16
  declare class Select extends AeicoField<SelectOptionValue | SelectMultiValue> {
17
- protected fieldElement: null;
17
+ protected fieldElement: HTMLInputElement | null;
18
18
  private _isOpen;
19
19
  private _triggerEl;
20
20
  private _dropdownEl;
@@ -32,10 +32,10 @@ declare class Select extends AeicoField<SelectOptionValue | SelectMultiValue> {
32
32
  defaultValue: SelectOptionValue | SelectMultiValue | undefined;
33
33
  protected static styles: string[];
34
34
  protected writeValue(_value: SelectOptionValue | SelectMultiValue): void;
35
- protected getValue(): any;
35
+ protected getValue(): SelectOptionValue | SelectMultiValue;
36
36
  private _getMultiValues;
37
37
  protected onDisabledChanged(_newValue: boolean): void;
38
- protected onUpdated(_changedProps: Map<string, unknown>): void;
38
+ protected onUpdated(changedProps: Map<string, unknown>): void;
39
39
  private _findLabel;
40
40
  private _onSlotChange;
41
41
  private _toggleDropdown;
@@ -0,0 +1,3 @@
1
+ export type SpinnerVariant = 'border' | 'dots';
2
+ export type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg';
3
+ export type SpinnerColor = 'default' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark';
@@ -0,0 +1,3 @@
1
+ export { default, default as Spinner } from './spinner';
2
+ export type { SpinnerProps } from './spinner';
3
+ export type { SpinnerColor, SpinnerSize, SpinnerVariant } from './defines';
@@ -0,0 +1,35 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ import type { SpinnerColor, SpinnerSize, SpinnerVariant } from './defines';
4
+ /**
5
+ * Spinner — animated loading indicator.
6
+ *
7
+ * Supports two visual variants: a rotating ring (`border`, default) and
8
+ * three bouncing dots (`dots`). Size and colour are driven by the shared
9
+ * design-token system.
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <ae-spinner></ae-spinner>
14
+ * <ae-spinner variant="dots" color="primary" size="lg"></ae-spinner>
15
+ * <ae-spinner color="success" speed="0.5s" label="Saving…"></ae-spinner>
16
+ * ```
17
+ */
18
+ declare class Spinner extends AeicoComponent {
19
+ static tagName: string;
20
+ accessor variant: SpinnerVariant;
21
+ accessor size: SpinnerSize;
22
+ accessor color: SpinnerColor;
23
+ accessor label: string;
24
+ accessor speed: string | undefined;
25
+ protected static styles: string[];
26
+ connectedCallback(): void;
27
+ protected render(): import("aeico-view").RenderResult;
28
+ }
29
+ declare global {
30
+ interface HTMLElementTagNameMap {
31
+ 'ae-spinner': Spinner;
32
+ }
33
+ }
34
+ export default Spinner;
35
+ export type SpinnerProps = InferProps<typeof Spinner>;
@@ -0,0 +1 @@
1
+ export type SwitchIconPlacement = 'knob' | 'track';
@@ -1,22 +1,26 @@
1
- import AeicoField from '../aeico-field';
2
- import type { InferProps, Props } from 'aeico';
3
- declare class Switch extends AeicoField {
1
+ import AeicoField, { type FieldAction } from '../aeico-field';
2
+ import type { InferProps } from 'aeico';
3
+ import type { SwitchIconPlacement } from './defines';
4
+ import '../icon/icon';
5
+ declare class Switch extends AeicoField<boolean> {
4
6
  protected fieldElement: HTMLInputElement | null;
5
7
  static tagName: string;
6
- static props: Props;
7
- checked?: boolean;
8
- defaultChecked?: boolean;
8
+ accessor checked: boolean | undefined;
9
+ accessor defaultChecked: boolean | undefined;
10
+ accessor icon: string | undefined;
11
+ accessor iconChecked: string | undefined;
12
+ accessor iconPlacement: SwitchIconPlacement | undefined;
9
13
  protected static styles: string[];
10
14
  protected getValue(): boolean;
11
15
  protected writeValue(checked: boolean): void;
12
- protected getEventPayload(checked: boolean, oldChecked: boolean, action: any): {
16
+ protected getEventPayload(checked: boolean, oldChecked: boolean, action: FieldAction): {
13
17
  checked: boolean;
14
18
  oldChecked: boolean;
15
- action: any;
19
+ action: FieldAction;
16
20
  };
17
21
  protected setValue(checked: boolean, options?: {
18
22
  silent?: boolean;
19
- action?: any;
23
+ action?: FieldAction;
20
24
  }): void;
21
25
  reset(checked?: boolean, options?: {
22
26
  silent?: boolean;
@@ -8,10 +8,6 @@ declare class TextInput extends AeicoField {
8
8
  type?: string;
9
9
  protected static styles: string[];
10
10
  render(): import("aeico-view").RenderResult;
11
- /**
12
- * Update clear button visibility based on input value
13
- */
14
- private updateClearButtonVisibility;
15
11
  /**
16
12
  * Write value to the input element (DOM only)
17
13
  */
@@ -0,0 +1 @@
1
+ export { default, type TextareaProps, type TextareaResize } from './textarea';
@@ -0,0 +1,26 @@
1
+ import AeicoField from '../aeico-field';
2
+ import type { InferProps } from 'aeico';
3
+ export type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
4
+ declare class Textarea extends AeicoField {
5
+ protected fieldElement: HTMLTextAreaElement | null;
6
+ static tagName: string;
7
+ accessor placeholder: string | undefined;
8
+ accessor rows: number | undefined;
9
+ accessor maxlength: number | undefined;
10
+ accessor minlength: number | undefined;
11
+ accessor resize: TextareaResize | undefined;
12
+ accessor autoResize: boolean;
13
+ protected static styles: string[];
14
+ private readonly _boundOnInput;
15
+ render(): import("aeico-view").RenderResult;
16
+ private _syncAutoResize;
17
+ private _updateClearButtonVisibility;
18
+ protected writeValue(value: string): void;
19
+ }
20
+ declare global {
21
+ interface HTMLElementTagNameMap {
22
+ 'ae-textarea': Textarea;
23
+ }
24
+ }
25
+ export default Textarea;
26
+ export type TextareaProps = InferProps<typeof Textarea>;
@@ -0,0 +1,2 @@
1
+ export type TooltipPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
2
+ export type TooltipTrigger = 'hover' | 'click';
@@ -0,0 +1,4 @@
1
+ export { default } from './tooltip';
2
+ export { default as Tooltip } from './tooltip';
3
+ export type { TooltipProps } from './tooltip';
4
+ export type { TooltipPlacement, TooltipTrigger } from './defines';
@@ -0,0 +1,48 @@
1
+ import type { InferProps } from 'aeico';
2
+ import AeicoComponent from '../aeico-component';
3
+ import type { TooltipPlacement, TooltipTrigger } from './defines';
4
+ /**
5
+ * Tooltip Component
6
+ *
7
+ * A floating label that appears on hover or focus around its trigger content.
8
+ * Wrap any element in `<ae-tooltip>` and provide content via the `content`
9
+ * attribute (plain text) or the `tooltip` named slot (rich HTML).
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <ae-tooltip content="Save file">
14
+ * <ae-button>Save</ae-button>
15
+ * </ae-tooltip>
16
+ *
17
+ * <ae-tooltip placement="bottom-start">
18
+ * <span slot="tooltip"><strong>Bold</strong> tip</span>
19
+ * <ae-icon-button name="info"></ae-icon-button>
20
+ * </ae-tooltip>
21
+ * ```
22
+ */
23
+ declare class Tooltip extends AeicoComponent {
24
+ protected static styles: string[];
25
+ accessor content: string | undefined;
26
+ accessor placement: TooltipPlacement;
27
+ accessor disabled: boolean;
28
+ accessor trigger: TooltipTrigger;
29
+ accessor open: boolean;
30
+ private _outsideClickHandler;
31
+ connectedCallback(): void;
32
+ disconnectedCallback(): void;
33
+ private _handleMouseEnter;
34
+ private _handleMouseLeave;
35
+ private _handleFocusin;
36
+ private _handleFocusout;
37
+ private _handleClick;
38
+ private _updatePosition;
39
+ protected onUpdated(changedProps: Map<string, unknown>): void;
40
+ protected render(): import("aeico-view").RenderResult;
41
+ }
42
+ declare global {
43
+ interface HTMLElementTagNameMap {
44
+ 'ae-tooltip': Tooltip;
45
+ }
46
+ }
47
+ export type TooltipProps = InferProps<typeof Tooltip>;
48
+ export default Tooltip;
@@ -0,0 +1,23 @@
1
+ /** Minimal interface used by tree-item to read config from its parent ae-tree. */
2
+ export interface ParentTreeLike extends Element {
3
+ checkable?: boolean;
4
+ multiple?: boolean;
5
+ showLine?: boolean;
6
+ defaultExpandAll?: boolean;
7
+ icon?: string;
8
+ }
9
+ export interface TreeSelectDetail {
10
+ key: string;
11
+ selected: boolean;
12
+ selectedKeys: string[];
13
+ }
14
+ export interface TreeExpandDetail {
15
+ key: string;
16
+ expanded: boolean;
17
+ expandedKeys: string[];
18
+ }
19
+ export interface TreeCheckDetail {
20
+ key: string;
21
+ checked: boolean;
22
+ checkedKeys: string[];
23
+ }
@@ -0,0 +1,5 @@
1
+ export { default as Tree } from './tree';
2
+ export { default as TreeItem } from './tree-item';
3
+ export type { TreeProps } from './tree';
4
+ export type { TreeItemProps } from './tree-item';
5
+ export type { TreeSelectDetail, TreeExpandDetail, TreeCheckDetail } from './defines';
@@ -0,0 +1,54 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ import '../icon';
4
+ /**
5
+ * Tree item — used as a direct child of `<ae-tree>` or nested inside another
6
+ * `<ae-tree-item>` to create a multi-level tree.
7
+ *
8
+ * - **Parent item**: nest `<ae-tree-item>` children inside; an expand toggle is shown.
9
+ * - **Leaf item**: no `<ae-tree-item>` children; no expand toggle is shown.
10
+ *
11
+ * @prop {string} key - Unique identifier for this item.
12
+ * @prop {string} icon - Icon name (uses `<ae-icon>`). Optional.
13
+ * @prop {boolean} disabled - Disables interaction.
14
+ * @prop {boolean} expanded - Whether children are visible.
15
+ * @prop {boolean} selected - Whether this item is visually selected.
16
+ * @prop {boolean} checked - Checkbox state (checkable mode).
17
+ * @prop {boolean} indeterminate - Checkbox partial state (checkable mode, JS-only).
18
+ *
19
+ * @slot default - Child `<ae-tree-item>` elements.
20
+ * @slot label - Custom label content (falls back to the `label` attribute text).
21
+ */
22
+ declare class TreeItem extends AeicoComponent {
23
+ static tagName: string;
24
+ protected static styles: string[];
25
+ accessor key: string | undefined;
26
+ accessor icon: string | undefined;
27
+ /** Stable auto-generated key used when `key` prop is not set. */
28
+ private readonly _autoKey;
29
+ private get _effectiveKey();
30
+ accessor disabled: boolean;
31
+ accessor expanded: boolean;
32
+ accessor selected: boolean;
33
+ accessor checked: boolean;
34
+ accessor indeterminate: boolean;
35
+ private _checkboxEl;
36
+ connectedCallback(): void;
37
+ protected onMounted(): void;
38
+ private get _parentTree();
39
+ private get _isCheckable();
40
+ private get _hasChildren();
41
+ private _handleExpandClick;
42
+ private _handleLabelClick;
43
+ private _handleCheckChange;
44
+ private _handleKeydown;
45
+ protected onUpdated(): void;
46
+ protected render(): import("aeico-view").RenderResult;
47
+ }
48
+ declare global {
49
+ interface HTMLElementTagNameMap {
50
+ 'ae-tree-item': TreeItem;
51
+ }
52
+ }
53
+ export default TreeItem;
54
+ export type TreeItemProps = InferProps<typeof TreeItem>;
@@ -0,0 +1,64 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ import './tree-item';
4
+ /**
5
+ * Tree component. Renders a hierarchical tree of `<ae-tree-item>` elements.
6
+ *
7
+ * @prop {boolean} checkable - Enable checkbox selection mode with parent-child sync.
8
+ * @prop {boolean} multiple - Allow multi-select (click to toggle). Ignored when checkable.
9
+ * @prop {boolean} showLine - Show dashed connecting lines between items.
10
+ * @prop {boolean} defaultExpandAll - Expand all items on initial connect.
11
+ * @prop {string} selectedKey - Currently selected key (single-select convenience prop).
12
+ *
13
+ * @property {string[]} selectedKeys - Currently selected keys (multi-select).
14
+ * @property {string[]} checkedKeys - Currently checked keys (checkable mode).
15
+ * @property {string[]} expandedKeys - Currently expanded keys.
16
+ *
17
+ * @event {CustomEvent<TreeSelectDetail>} select - Fires when an item is selected/deselected.
18
+ * @event {CustomEvent<TreeExpandDetail>} expand - Fires when an item is expanded/collapsed.
19
+ * @event {CustomEvent<TreeCheckDetail>} check - Fires when an item checkbox changes.
20
+ *
21
+ * @example
22
+ * ```html
23
+ * <ae-tree>
24
+ * <ae-tree-item key="1" label="Parent">
25
+ * <ae-tree-item key="1-1" label="Child A"></ae-tree-item>
26
+ * <ae-tree-item key="1-2" label="Child B"></ae-tree-item>
27
+ * </ae-tree-item>
28
+ * </ae-tree>
29
+ * ```
30
+ */
31
+ declare class Tree extends AeicoComponent {
32
+ static tagName: string;
33
+ protected static styles: string[];
34
+ accessor checkable: boolean;
35
+ accessor multiple: boolean;
36
+ accessor showLine: boolean;
37
+ accessor defaultExpandAll: boolean;
38
+ accessor selectedKey: string | undefined;
39
+ /** Icon name used for the expand/collapse toggle on all items (overridable per item). */
40
+ accessor icon: string | undefined;
41
+ /** Currently selected keys (multi-select). Set programmatically. */
42
+ selectedKeys: string[];
43
+ /** Currently checked keys (checkable mode). Set programmatically. */
44
+ checkedKeys: string[];
45
+ /** Currently expanded keys. Set programmatically. */
46
+ expandedKeys: string[];
47
+ connectedCallback(): void;
48
+ private _getAllItems;
49
+ private _getDirectChildren;
50
+ private _computeCheckedKeys;
51
+ private _handleItemToggleExpand;
52
+ private _handleItemSelect;
53
+ private _handleItemCheck;
54
+ private _setCheckedRecursive;
55
+ private _syncAncestors;
56
+ protected render(): import("aeico-view").RenderResult;
57
+ }
58
+ declare global {
59
+ interface HTMLElementTagNameMap {
60
+ 'ae-tree': Tree;
61
+ }
62
+ }
63
+ export default Tree;
64
+ export type TreeProps = InferProps<typeof Tree>;