aeico-components 0.1.1

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 (174) hide show
  1. package/README.md +0 -0
  2. package/dist/index.cjs +4226 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.js +4226 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/types/aeico-component.d.ts +8 -0
  7. package/dist/types/aeico-field.d.ts +132 -0
  8. package/dist/types/alert/alert.d.ts +49 -0
  9. package/dist/types/alert/defines.d.ts +3 -0
  10. package/dist/types/alert/index.d.ts +3 -0
  11. package/dist/types/badge/badge.d.ts +34 -0
  12. package/dist/types/badge/defines.d.ts +3 -0
  13. package/dist/types/badge/index.d.ts +3 -0
  14. package/dist/types/breadcrumb/breadcrumb-item.d.ts +31 -0
  15. package/dist/types/breadcrumb/breadcrumb.d.ts +60 -0
  16. package/dist/types/breadcrumb/defines.d.ts +1 -0
  17. package/dist/types/breadcrumb/index.d.ts +5 -0
  18. package/dist/types/button/button.d.ts +60 -0
  19. package/dist/types/button/defines.d.ts +3 -0
  20. package/dist/types/button/index.d.ts +3 -0
  21. package/dist/types/button-group/button-group.d.ts +56 -0
  22. package/dist/types/button-group/index.d.ts +2 -0
  23. package/dist/types/card/card.d.ts +19 -0
  24. package/dist/types/card/defines.d.ts +2 -0
  25. package/dist/types/card/index.d.ts +3 -0
  26. package/dist/types/checkbox/checkbox.d.ts +37 -0
  27. package/dist/types/checkbox/defines.d.ts +1 -0
  28. package/dist/types/checkbox/index.d.ts +3 -0
  29. package/dist/types/detail/defines.d.ts +2 -0
  30. package/dist/types/detail/detail.d.ts +40 -0
  31. package/dist/types/detail/index.d.ts +3 -0
  32. package/dist/types/dialog/dialog.d.ts +29 -0
  33. package/dist/types/dialog/index.d.ts +2 -0
  34. package/dist/types/divider/divider.d.ts +34 -0
  35. package/dist/types/divider/index.d.ts +2 -0
  36. package/dist/types/dropdown/defines.d.ts +1 -0
  37. package/dist/types/dropdown/dropdown-button.d.ts +60 -0
  38. package/dist/types/dropdown/dropdown-item.d.ts +56 -0
  39. package/dist/types/dropdown/dropdown.d.ts +84 -0
  40. package/dist/types/dropdown/index.d.ts +7 -0
  41. package/dist/types/icon/defines.d.ts +10 -0
  42. package/dist/types/icon/icon.d.ts +21 -0
  43. package/dist/types/icon/index.d.ts +4 -0
  44. package/dist/types/icon/registry.d.ts +8 -0
  45. package/dist/types/icon-button/icon-button.d.ts +32 -0
  46. package/dist/types/icon-button/index.d.ts +2 -0
  47. package/dist/types/index.d.ts +74 -0
  48. package/dist/types/navbar/defines.d.ts +2 -0
  49. package/dist/types/navbar/index.d.ts +3 -0
  50. package/dist/types/navbar/navbar.d.ts +73 -0
  51. package/dist/types/radio-group/defines.d.ts +6 -0
  52. package/dist/types/radio-group/index.d.ts +5 -0
  53. package/dist/types/radio-group/radio-group.d.ts +41 -0
  54. package/dist/types/radio-group/radio.d.ts +47 -0
  55. package/dist/types/select/defines.d.ts +8 -0
  56. package/dist/types/select/index.d.ts +5 -0
  57. package/dist/types/select/select-option.d.ts +20 -0
  58. package/dist/types/select/select.d.ts +60 -0
  59. package/dist/types/slider/defines.d.ts +31 -0
  60. package/dist/types/slider/index.d.ts +3 -0
  61. package/dist/types/slider/slider.d.ts +45 -0
  62. package/dist/types/switch/index.d.ts +2 -0
  63. package/dist/types/switch/switch.d.ts +35 -0
  64. package/dist/types/tabs/defines.d.ts +1 -0
  65. package/dist/types/tabs/index.d.ts +3 -0
  66. package/dist/types/tabs/tab-panel.d.ts +11 -0
  67. package/dist/types/tabs/tab.d.ts +18 -0
  68. package/dist/types/tabs/tabs.d.ts +24 -0
  69. package/dist/types/tag/defines.d.ts +3 -0
  70. package/dist/types/tag/index.d.ts +3 -0
  71. package/dist/types/tag/tag.d.ts +36 -0
  72. package/dist/types/text-input/index.d.ts +2 -0
  73. package/dist/types/text-input/text-input.d.ts +26 -0
  74. package/dist/types/utils.d.ts +2 -0
  75. package/package.json +63 -0
  76. package/src/aeico-component.ts +17 -0
  77. package/src/aeico-field.ts +228 -0
  78. package/src/alert/alert.ts +107 -0
  79. package/src/alert/defines.ts +11 -0
  80. package/src/alert/index.ts +3 -0
  81. package/src/badge/badge.ts +62 -0
  82. package/src/badge/defines.ts +12 -0
  83. package/src/badge/index.ts +3 -0
  84. package/src/breadcrumb/breadcrumb-item.ts +61 -0
  85. package/src/breadcrumb/breadcrumb.ts +138 -0
  86. package/src/breadcrumb/defines.ts +10 -0
  87. package/src/breadcrumb/index.ts +5 -0
  88. package/src/button/button.ts +147 -0
  89. package/src/button/defines.ts +12 -0
  90. package/src/button/index.ts +3 -0
  91. package/src/button-group/button-group.ts +140 -0
  92. package/src/button-group/index.ts +2 -0
  93. package/src/card/card.ts +57 -0
  94. package/src/card/defines.ts +11 -0
  95. package/src/card/index.ts +3 -0
  96. package/src/checkbox/checkbox.ts +90 -0
  97. package/src/checkbox/defines.ts +1 -0
  98. package/src/checkbox/index.ts +3 -0
  99. package/src/detail/defines.ts +11 -0
  100. package/src/detail/detail.ts +122 -0
  101. package/src/detail/index.ts +3 -0
  102. package/src/dialog/dialog.ts +149 -0
  103. package/src/dialog/index.ts +2 -0
  104. package/src/divider/divider.ts +56 -0
  105. package/src/divider/index.ts +2 -0
  106. package/src/dropdown/defines.ts +13 -0
  107. package/src/dropdown/dropdown-button.ts +130 -0
  108. package/src/dropdown/dropdown-item.ts +136 -0
  109. package/src/dropdown/dropdown.ts +211 -0
  110. package/src/dropdown/index.ts +7 -0
  111. package/src/icon/defines.ts +21 -0
  112. package/src/icon/icon.ts +84 -0
  113. package/src/icon/index.ts +4 -0
  114. package/src/icon/registry.ts +25 -0
  115. package/src/icon-button/icon-button.ts +64 -0
  116. package/src/icon-button/index.ts +2 -0
  117. package/src/index.ts +85 -0
  118. package/src/navbar/defines.ts +11 -0
  119. package/src/navbar/index.ts +3 -0
  120. package/src/navbar/navbar.ts +162 -0
  121. package/src/radio-group/defines.ts +5 -0
  122. package/src/radio-group/index.ts +5 -0
  123. package/src/radio-group/radio-group.ts +227 -0
  124. package/src/radio-group/radio.ts +58 -0
  125. package/src/select/defines.ts +12 -0
  126. package/src/select/index.ts +5 -0
  127. package/src/select/select-option.ts +59 -0
  128. package/src/select/select.ts +387 -0
  129. package/src/slider/defines.ts +33 -0
  130. package/src/slider/index.ts +3 -0
  131. package/src/slider/slider.ts +364 -0
  132. package/src/styles/color.css +117 -0
  133. package/src/styles/components/alert.css +104 -0
  134. package/src/styles/components/badge.css +67 -0
  135. package/src/styles/components/breadcrumb-item.css +59 -0
  136. package/src/styles/components/breadcrumb.css +19 -0
  137. package/src/styles/components/button-group.css +25 -0
  138. package/src/styles/components/button.css +213 -0
  139. package/src/styles/components/card.css +64 -0
  140. package/src/styles/components/checkbox.css +78 -0
  141. package/src/styles/components/detail.css +127 -0
  142. package/src/styles/components/dialog.css +103 -0
  143. package/src/styles/components/divider.css +18 -0
  144. package/src/styles/components/dropdown-item.css +91 -0
  145. package/src/styles/components/dropdown.css +179 -0
  146. package/src/styles/components/icon-button.css +116 -0
  147. package/src/styles/components/icon.css +29 -0
  148. package/src/styles/components/navbar.css +250 -0
  149. package/src/styles/components/radio-group.css +360 -0
  150. package/src/styles/components/select-option.css +43 -0
  151. package/src/styles/components/select.css +222 -0
  152. package/src/styles/components/slider.css +326 -0
  153. package/src/styles/components/switch.css +117 -0
  154. package/src/styles/components/tab-panel.css +8 -0
  155. package/src/styles/components/tab.css +44 -0
  156. package/src/styles/components/tabs.css +16 -0
  157. package/src/styles/components/tag.css +107 -0
  158. package/src/styles/components/text-input.css +110 -0
  159. package/src/styles/layout.css +43 -0
  160. package/src/styles/size.css +7 -0
  161. package/src/styles/variables.css +368 -0
  162. package/src/switch/index.ts +2 -0
  163. package/src/switch/switch.ts +88 -0
  164. package/src/tabs/defines.ts +1 -0
  165. package/src/tabs/index.ts +3 -0
  166. package/src/tabs/tab-panel.ts +23 -0
  167. package/src/tabs/tab.ts +62 -0
  168. package/src/tabs/tabs.ts +134 -0
  169. package/src/tag/defines.ts +12 -0
  170. package/src/tag/index.ts +3 -0
  171. package/src/tag/tag.ts +85 -0
  172. package/src/text-input/index.ts +2 -0
  173. package/src/text-input/text-input.ts +75 -0
  174. package/src/utils.ts +6 -0
@@ -0,0 +1,84 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ import type { DropdownPlacement } from './defines';
4
+ import './dropdown-item';
5
+ /**
6
+ * Dropdown component — renders a floating menu panel anchored to a trigger slot.
7
+ *
8
+ * The trigger is provided via `slot="trigger"` (typically an `<ae-button>`).
9
+ * Menu items are provided as `<ae-dropdown-item>` default-slot children.
10
+ *
11
+ * Emits:
12
+ * - `open` — when the panel opens
13
+ * - `close` — when the panel closes
14
+ * - `select` — `{ detail: { value, label } }` when a menu item is clicked
15
+ *
16
+ * @example
17
+ * ```html
18
+ * <ae-dropdown>
19
+ * <ae-button slot="trigger">Actions</ae-button>
20
+ * <ae-dropdown-item value="edit" icon="edit">Edit</ae-dropdown-item>
21
+ * <ae-dropdown-item value="delete" danger icon="trash">Delete</ae-dropdown-item>
22
+ * </ae-dropdown>
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```html
27
+ * <!-- Inside ae-navbar -->
28
+ * <ae-navbar>
29
+ * <a slot="brand" href="/">MyApp</a>
30
+ * <ae-dropdown slot="end">
31
+ * <ae-button slot="trigger" variant="outlined" size="sm">User</ae-button>
32
+ * <ae-dropdown-item href="/profile" icon="user">Profile</ae-dropdown-item>
33
+ * <ae-dropdown-item value="logout" danger>Sign out</ae-dropdown-item>
34
+ * </ae-dropdown>
35
+ * </ae-navbar>
36
+ * ```
37
+ */
38
+ declare class Dropdown extends AeicoComponent {
39
+ static tagName: string;
40
+ protected static styles: string[];
41
+ /**
42
+ * Position of the panel relative to the trigger.
43
+ * Defaults to `'bottom-start'` (left-aligned, below trigger).
44
+ */
45
+ accessor placement: DropdownPlacement;
46
+ /**
47
+ * Whether the dropdown panel is visible. Reflects as the `open` attribute.
48
+ * Can be used for controlled open/close state.
49
+ */
50
+ accessor open: boolean;
51
+ /**
52
+ * When `true` (default), clicking a menu item automatically closes the panel.
53
+ */
54
+ accessor closeOnSelect: boolean;
55
+ /** Disables the trigger and prevents opening. */
56
+ accessor disabled: boolean;
57
+ /**
58
+ * Optional label text. When set, `ae-dropdown` renders its own trigger button
59
+ * in the shadow DOM (no `slot="trigger"` needed). Inherits `--ae-navbar-link-*`
60
+ * CSS variables so it automatically matches navbar link styles.
61
+ */
62
+ accessor label: string;
63
+ private _outsideClickHandler;
64
+ connectedCallback(): void;
65
+ disconnectedCallback(): void;
66
+ /** Opens the dropdown panel. */
67
+ show(): void;
68
+ /** Closes the dropdown panel. */
69
+ hide(): void;
70
+ /** Toggles the dropdown panel open/closed. */
71
+ toggle(): void;
72
+ private _closePanel;
73
+ private _handleTriggerClick;
74
+ private _handleItemSelect;
75
+ private _handleKeydown;
76
+ protected render(): import("aeico-view").RenderResult;
77
+ }
78
+ declare global {
79
+ interface HTMLElementTagNameMap {
80
+ 'ae-dropdown': Dropdown;
81
+ }
82
+ }
83
+ export default Dropdown;
84
+ export type DropdownProps = InferProps<typeof Dropdown>;
@@ -0,0 +1,7 @@
1
+ export { default } from './dropdown';
2
+ export { default as DropdownItem } from './dropdown-item';
3
+ export { default as DropdownButton } from './dropdown-button';
4
+ export type { DropdownProps } from './dropdown';
5
+ export type { DropdownItemProps } from './dropdown-item';
6
+ export type { DropdownButtonProps } from './dropdown-button';
7
+ export type { DropdownPlacement } from './defines';
@@ -0,0 +1,10 @@
1
+ export type IconSize = '3xs' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
2
+ export type IconColor = 'default' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';
3
+ export interface IconDefinition {
4
+ path: string;
5
+ viewBox?: string;
6
+ stroke?: boolean;
7
+ strokeWidth?: number;
8
+ }
9
+ export declare const defaultViewBox = "0 0 24 24";
10
+ export type IconRegistryData = Record<string, string | IconDefinition>;
@@ -0,0 +1,21 @@
1
+ import type { InferProps, Props } from 'aeico';
2
+ import AeicoComponent from '../aeico-component';
3
+ import type { IconSize, IconColor } from './defines';
4
+ declare class Icon extends AeicoComponent {
5
+ static tagName: string;
6
+ static props: Props;
7
+ name?: string;
8
+ size?: IconSize;
9
+ color?: IconColor;
10
+ stroke?: boolean;
11
+ strokeWidth?: number;
12
+ protected static styles: string[];
13
+ protected render(): import("aeico-view").RenderResult | undefined;
14
+ }
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ 'ae-icon': Icon;
18
+ }
19
+ }
20
+ export default Icon;
21
+ export type IconProps = InferProps<typeof Icon>;
@@ -0,0 +1,4 @@
1
+ export { default as Icon } from './icon';
2
+ export type { IconProps } from './icon';
3
+ export { default as IconRegistry } from './registry';
4
+ export type { IconSize, IconColor, IconDefinition, IconRegistryData } from './defines';
@@ -0,0 +1,8 @@
1
+ import { IconDefinition, IconRegistryData } from './defines';
2
+ declare class IconRegistry {
3
+ private static _icons;
4
+ static add(icons: IconRegistryData): void;
5
+ static get(name: string): IconDefinition | undefined;
6
+ static has(name: string): boolean;
7
+ }
8
+ export default IconRegistry;
@@ -0,0 +1,32 @@
1
+ import type { InferProps, Props } from 'aeico';
2
+ import AeicoComponent from '../aeico-component';
3
+ import type { IconColor } from '../icon/defines';
4
+ import '../button/button';
5
+ import '../icon/icon';
6
+ export type IconButtonVariant = 'filled' | 'outlined' | 'subtle' | 'text';
7
+ export type IconButtonSize = 'xs' | 'sm' | 'md' | 'lg';
8
+ /**
9
+ * @deprecated Use `<ae-button>` with an `<ae-icon>` slot instead.
10
+ *
11
+ * ```html
12
+ * <ae-button color="primary"><ae-icon name="star"></ae-icon></ae-button>
13
+ * ```
14
+ */
15
+ declare class IconButton extends AeicoComponent {
16
+ static tagName: string;
17
+ static props: Props;
18
+ icon?: string;
19
+ size?: IconButtonSize;
20
+ color?: IconColor;
21
+ variant?: IconButtonVariant;
22
+ disabled?: boolean;
23
+ protected static styles: string[];
24
+ protected render(): import("aeico-view").RenderResult;
25
+ }
26
+ declare global {
27
+ interface HTMLElementTagNameMap {
28
+ 'ae-icon-button': IconButton;
29
+ }
30
+ }
31
+ export default IconButton;
32
+ export type IconButtonProps = InferProps<typeof IconButton>;
@@ -0,0 +1,2 @@
1
+ export { default, default as IconButton } from './icon-button';
2
+ export type { IconButtonProps, IconButtonVariant, IconButtonSize } from './icon-button';
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Components module exports
3
+ *
4
+ * All Aeico Web Components are available here for on-demand registration.
5
+ * Import only the components you need to keep your bundle size small.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { SelectField, RangeField, Button } from 'aeico/components'
10
+ *
11
+ * // Manually register components
12
+ * SelectField.register()
13
+ * RangeField.register()
14
+ * Button.register()
15
+ *
16
+ * // Or use with custom names
17
+ * SelectField.register('my-select')
18
+ * ```
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // Use the static create method for programmatic creation
23
+ * import { Button } from 'aeico/components'
24
+ *
25
+ * const button = Button.create({
26
+ * variant: 'primary',
27
+ * size: 'md'
28
+ * })
29
+ * button.textContent = 'Click me'
30
+ * document.body.appendChild(button)
31
+ * ```
32
+ */
33
+ export { default as TextInput } from './text-input';
34
+ export { default as Select } from './select';
35
+ export { default as Slider } from './slider';
36
+ export { default as Checkbox } from './checkbox';
37
+ export { default as RadioGroup } from './radio-group';
38
+ export { Radio } from './radio-group';
39
+ export { default as Switch } from './switch';
40
+ export { default as Breadcrumb, BreadcrumbItem } from './breadcrumb';
41
+ export { default as Button } from './button';
42
+ export { default as Dropdown, DropdownItem, DropdownButton } from './dropdown';
43
+ export { default as ButtonGroup } from './button-group';
44
+ export { default as Badge } from './badge';
45
+ export { default as Tag } from './tag';
46
+ export { default as Alert } from './alert';
47
+ export { default as Dialog } from './dialog';
48
+ export { default as Icon } from './icon/icon';
49
+ export { default as IconRegistry } from './icon/registry';
50
+ export { default as IconButton } from './icon-button';
51
+ export { Tabs, Tab, TabPanel } from './tabs';
52
+ export { default as Divider } from './divider';
53
+ export { default as Card } from './card';
54
+ export { default as Navbar } from './navbar';
55
+ export { default as Detail } from './detail';
56
+ export type { SelectProps, SelectOption, SelectOptions, SelectOptionValue } from './select';
57
+ export type { SliderProps, SliderOption, SliderOptions, SliderOptionValue } from './slider';
58
+ export type { CheckboxProps, CheckboxVariant } from './checkbox';
59
+ export type { RadioGroupProps, RadioGroupMode, RadioGroupOption, RadioGroupOptions, } from './radio-group';
60
+ export type { RadioProps } from './radio-group';
61
+ export type { SwitchProps } from './switch';
62
+ export type { TextInputProps } from './text-input';
63
+ export type { ButtonProps, ButtonColor, ButtonSize, ButtonVariant } from './button';
64
+ export type { ButtonGroupProps } from './button-group';
65
+ export type { AlertProps, AlertColor, AlertSize, AlertVariant } from './alert';
66
+ export type { BadgeProps, BadgeColor, BadgeSize, BadgeVariant } from './badge';
67
+ export type { TagProps, TagColor, TagSize, TagVariant } from './tag';
68
+ export type { DialogProps } from './dialog';
69
+ export type { IconProps, IconSize, IconColor, IconDefinition, IconRegistryData } from './icon';
70
+ export type { IconButtonProps, IconButtonVariant, IconButtonSize } from './icon-button';
71
+ export type { DividerProps } from './divider';
72
+ export type { CardProps, CardVariant, CardColor } from './card';
73
+ export type { NavbarProps, NavbarColor, NavbarAppearance } from './navbar';
74
+ export type { DetailProps, DetailVariant, DetailColor } from './detail';
@@ -0,0 +1,2 @@
1
+ export type NavbarColor = 'default' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark';
2
+ export type NavbarAppearance = 'text' | 'block';
@@ -0,0 +1,3 @@
1
+ export { default, default as Navbar } from './navbar';
2
+ export type { NavbarProps } from './navbar';
3
+ export type { NavbarColor, NavbarAppearance } from './defines';
@@ -0,0 +1,73 @@
1
+ import type { InferProps } from 'aeico';
2
+ import AeicoComponent from '../aeico-component';
3
+ import type { NavbarColor, NavbarAppearance } from './defines';
4
+ /**
5
+ * Navbar Component
6
+ *
7
+ * A sticky top navigation bar with three slot regions and built-in
8
+ * mobile hamburger collapse.
9
+ *
10
+ * Slots:
11
+ * - `brand` — leftmost area, typically a logo or site name link
12
+ * - `start` — main navigation links / dropdowns
13
+ * - `end` — right-side actions (login button, avatar, etc.)
14
+ *
15
+ * Slotted `<a>` elements receive default link styling controlled via
16
+ * CSS custom properties. Mark the active link with `aria-current="page"`.
17
+ *
18
+ * @example
19
+ * ```html
20
+ * <ae-navbar color="primary" appearance="block">
21
+ * <a slot="brand" href="/">MyApp</a>
22
+ * <a slot="start" href="/" aria-current="page">Home</a>
23
+ * <a slot="start" href="/docs">Docs</a>
24
+ * <ae-button slot="end" size="sm" variant="outlined">Sign in</ae-button>
25
+ * </ae-navbar>
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```css
30
+ * /* Custom height and transparent background *\/
31
+ * ae-navbar {
32
+ * --ae-navbar-height: 4rem;
33
+ * --ae-navbar-bg: transparent;
34
+ * --ae-navbar-border-width: 0;
35
+ * --ae-navbar-shadow: 0 1px 8px rgba(0, 0, 0, 0.08);
36
+ * }
37
+ * ```
38
+ */
39
+ declare class Navbar extends AeicoComponent {
40
+ static tagName: string;
41
+ protected static styles: string[];
42
+ /** Background color using the design-system color token set. */
43
+ accessor color: NavbarColor | undefined;
44
+ /** When true (default), the navbar sticks to the top of the viewport while scrolling. Set to false to let it scroll with the page. */
45
+ accessor sticky: boolean;
46
+ /**
47
+ * Hover style preset for slotted `<a>` links.
48
+ * - `text` — only the font color changes on hover (default)
49
+ * - `block` — a subtle filled background block appears on hover
50
+ *
51
+ * Fine-tune further with `--ae-navbar-link-hover-color` /
52
+ * `--ae-navbar-link-hover-bg` CSS variables.
53
+ */
54
+ accessor appearance: NavbarAppearance;
55
+ /** Whether the mobile menu is expanded. Reflects as the `open` attribute. */
56
+ accessor open: boolean;
57
+ private _outsideClickHandler;
58
+ connectedCallback(): void;
59
+ disconnectedCallback(): void;
60
+ /** Toggle the mobile menu open/closed. */
61
+ toggleMenu(): void;
62
+ private _handleInnerClick;
63
+ private _toggleMenu;
64
+ private _closeMenu;
65
+ protected render(): import("aeico-view").RenderResult;
66
+ }
67
+ declare global {
68
+ interface HTMLElementTagNameMap {
69
+ 'ae-navbar': Navbar;
70
+ }
71
+ }
72
+ export default Navbar;
73
+ export type NavbarProps = InferProps<typeof Navbar>;
@@ -0,0 +1,6 @@
1
+ export type RadioGroupMode = 'default' | 'button' | 'button-group' | 'segmented';
2
+ export type RadioGroupOption = string | number | {
3
+ label: string;
4
+ value: string | number;
5
+ };
6
+ export type RadioGroupOptions = RadioGroupOption[];
@@ -0,0 +1,5 @@
1
+ export { default, default as RadioGroup } from './radio-group';
2
+ export type { RadioGroupProps } from './radio-group';
3
+ export type { RadioGroupMode, RadioGroupOption, RadioGroupOptions } from './defines';
4
+ export { default as Radio } from './radio';
5
+ export type { RadioProps } from './radio';
@@ -0,0 +1,41 @@
1
+ import AeicoField from '../aeico-field';
2
+ import type { InferProps, Props } from 'aeico';
3
+ import type { ButtonColor, ButtonVariant, ButtonSize } from '../button';
4
+ import type { RadioGroupMode, RadioGroupOptions } from './defines';
5
+ declare class RadioGroup extends AeicoField {
6
+ protected fieldElement: HTMLInputElement | null;
7
+ private _slotEl;
8
+ private _slotOptions;
9
+ private static _instanceCount;
10
+ private readonly _groupName;
11
+ static tagName: string;
12
+ static props: Props;
13
+ options?: RadioGroupOptions;
14
+ mode?: RadioGroupMode;
15
+ color?: ButtonColor;
16
+ variant?: ButtonVariant;
17
+ size?: ButtonSize;
18
+ allowEmpty?: boolean;
19
+ protected static styles: string[];
20
+ constructor();
21
+ private _optLabel;
22
+ private _optValue;
23
+ private _allOptions;
24
+ private _onSlotChange;
25
+ private _boundOnRadioClick;
26
+ private _boundOnButtonClick;
27
+ protected getValue(): string;
28
+ protected writeValue(_value: any): void;
29
+ protected onReset(): void;
30
+ protected onClear(): void;
31
+ render(): import("aeico-view").RenderResult;
32
+ private _renderRadio;
33
+ private _renderButtons;
34
+ }
35
+ declare global {
36
+ interface HTMLElementTagNameMap {
37
+ 'ae-radio-group': RadioGroup;
38
+ }
39
+ }
40
+ export default RadioGroup;
41
+ export type RadioGroupProps = InferProps<typeof RadioGroup>;
@@ -0,0 +1,47 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps, Props } from 'aeico';
3
+ /**
4
+ * AeRadio — structured option element for ae-radio-group.
5
+ *
6
+ * Replaces the native `<option>` approach with a custom element that is
7
+ * fully extensible. Current surface:
8
+ * - `value` — option value submitted / matched against radio-group value
9
+ * - `disabled` — disables this individual option (independent of the group)
10
+ * - Light DOM — label content; can be plain text or rich HTML (icons, etc.)
11
+ *
12
+ * This element has **no shadow DOM** — it is a pure data / content carrier.
13
+ * ae-radio-group reads its properties and light-DOM content, then renders
14
+ * the appropriate UI (radio input, button, segmented pill, …).
15
+ *
16
+ * @example Plain text options
17
+ * ```html
18
+ * <ae-radio-group mode="button" color="primary" value="a">
19
+ * <ae-radio value="a">Option A</ae-radio>
20
+ * <ae-radio value="b">Option B</ae-radio>
21
+ * <ae-radio value="c" disabled>Option C</ae-radio>
22
+ * </ae-radio-group>
23
+ * ```
24
+ *
25
+ * @example Rich content options (icons)
26
+ * ```html
27
+ * <ae-radio-group mode="button" color="primary" value="list">
28
+ * <ae-radio value="list"><ae-icon name="list"></ae-icon> List</ae-radio>
29
+ * <ae-radio value="grid"><ae-icon name="grid"></ae-icon> Grid</ae-radio>
30
+ * </ae-radio-group>
31
+ * ```
32
+ */
33
+ declare class Radio extends AeicoComponent {
34
+ static tagName: string;
35
+ /** No shadow DOM — this element is a transparent data/content carrier. */
36
+ static useShadowDOM: boolean;
37
+ static props: Props;
38
+ value: string;
39
+ disabled?: boolean;
40
+ }
41
+ declare global {
42
+ interface HTMLElementTagNameMap {
43
+ 'ae-radio': Radio;
44
+ }
45
+ }
46
+ export default Radio;
47
+ export type RadioProps = InferProps<typeof Radio>;
@@ -0,0 +1,8 @@
1
+ export type SelectOptionValue = string | number;
2
+ export type SelectOption = {
3
+ label: string;
4
+ value: SelectOptionValue;
5
+ };
6
+ export type SelectOptions = SelectOptionValue[] | SelectOption[];
7
+ export type SelectPosition = 'top' | 'bottom' | 'left' | 'right';
8
+ export type SelectMultiValue = SelectOptionValue[];
@@ -0,0 +1,5 @@
1
+ export { default, default as Select } from './select';
2
+ export type { SelectProps } from './select';
3
+ export { default as SelectOption } from './select-option';
4
+ export type { SelectOptionProps } from './select-option';
5
+ export type { SelectOptionValue, SelectOptions, SelectPosition } from './defines';
@@ -0,0 +1,20 @@
1
+ import AeicoComponent from '../aeico-component';
2
+ import type { InferProps } from 'aeico';
3
+ declare class SelectOption extends AeicoComponent {
4
+ static tagName: string;
5
+ accessor value: string | undefined;
6
+ accessor label: string | undefined;
7
+ accessor disabled: boolean;
8
+ accessor selected: boolean | undefined;
9
+ protected static styles: string[];
10
+ connectedCallback(): void;
11
+ private _handleClick;
12
+ render(): import("aeico-view").RenderResult;
13
+ }
14
+ declare global {
15
+ interface HTMLElementTagNameMap {
16
+ 'ae-select-option': SelectOption;
17
+ }
18
+ }
19
+ export default SelectOption;
20
+ export type SelectOptionProps = InferProps<typeof SelectOption>;
@@ -0,0 +1,60 @@
1
+ import AeicoField from '../aeico-field';
2
+ import type { InferProps } from 'aeico';
3
+ import type { SelectOptionValue, SelectOptions, SelectPosition, SelectMultiValue } from './defines';
4
+ import '../tag/tag';
5
+ /**
6
+ * Select component supporting single and multi-select modes, with options provided via both props and slots.
7
+ * - `options` prop accepts an array of strings or objects with `value` and `label` for programmatic options.
8
+ * - Slot content allows for declarative options using `<ae-select-option>` elements.
9
+ * @example
10
+ * <ae-select placeholder="Choose an option" position="bottom">
11
+ * <ae-select-option value="1" label="Option 1">Option 1</ae-select-option>
12
+ * <ae-select-option value="2" label="Option 2">Option 2</ae-select-option>
13
+ * </ae-select>
14
+ *
15
+ */
16
+ declare class Select extends AeicoField<SelectOptionValue | SelectMultiValue> {
17
+ protected fieldElement: null;
18
+ private _isOpen;
19
+ private _triggerEl;
20
+ private _dropdownEl;
21
+ private _slotEl;
22
+ private _slotOptionData;
23
+ private _selectedListEl;
24
+ static tagName: string;
25
+ accessor _expanded: boolean;
26
+ accessor options: SelectOptions | undefined;
27
+ accessor position: SelectPosition | undefined;
28
+ accessor placeholder: string | undefined;
29
+ accessor multiple: boolean;
30
+ accessor expandable: boolean;
31
+ value: SelectOptionValue | SelectMultiValue | undefined;
32
+ defaultValue: SelectOptionValue | SelectMultiValue | undefined;
33
+ protected static styles: string[];
34
+ protected writeValue(_value: SelectOptionValue | SelectMultiValue): void;
35
+ protected getValue(): any;
36
+ private _getMultiValues;
37
+ protected onDisabledChanged(_newValue: boolean): void;
38
+ protected onUpdated(_changedProps: Map<string, unknown>): void;
39
+ private _findLabel;
40
+ private _onSlotChange;
41
+ private _toggleDropdown;
42
+ private _openDropdown;
43
+ private _closeDropdown;
44
+ private _syncOpenState;
45
+ private readonly _handleOutsideClick;
46
+ private readonly _handleOptionSelect;
47
+ connectedCallback(): void;
48
+ disconnectedCallback(): void;
49
+ private _syncSlotOptionsSelected;
50
+ render(): import("aeico-view").RenderResult;
51
+ private _renderProgrammaticOptions;
52
+ private _isSelectOption;
53
+ }
54
+ declare global {
55
+ interface HTMLElementTagNameMap {
56
+ 'ae-select': Select;
57
+ }
58
+ }
59
+ export default Select;
60
+ export type SelectProps = InferProps<typeof Select>;
@@ -0,0 +1,31 @@
1
+ export type SliderOptionValue = string | number;
2
+ export type SliderOption = {
3
+ label: string;
4
+ value: SliderOptionValue;
5
+ };
6
+ export type SliderOptions = SliderOptionValue[] | SliderOption[];
7
+ export type NormalizedOption = {
8
+ label: string;
9
+ value: string;
10
+ rangeValue: number;
11
+ };
12
+ /**
13
+ * A single mark on the slider track.
14
+ * - `number` — mark at that numeric position, no label
15
+ * - `{ value, label? }` — mark at `value` with optional label
16
+ *
17
+ * Marks are purely visual; they do NOT constrain snapping.
18
+ * The slider still snaps according to `step` / `options`.
19
+ * Marks outside [min, max] are silently ignored.
20
+ */
21
+ export type MarkItem = number | {
22
+ value: number;
23
+ label?: string;
24
+ };
25
+ /**
26
+ * The `marks` prop accepts:
27
+ * - `true` — auto-generate marks (at option positions, or min+max in free mode)
28
+ * - `MarkItem[]` — custom marks at the given positions
29
+ * - `false` / omitted — no marks
30
+ */
31
+ export type SliderMarks = boolean | MarkItem[];
@@ -0,0 +1,3 @@
1
+ export { default, default as Slider } from './slider';
2
+ export type { SliderProps } from './slider';
3
+ export type { SliderOptionValue, SliderOption, SliderOptions } from './defines';
@@ -0,0 +1,45 @@
1
+ import AeicoField from '../aeico-field';
2
+ import type { InferProps } from 'aeico';
3
+ import type { SliderMarks, SliderOptions } from './defines';
4
+ declare class Slider extends AeicoField {
5
+ protected fieldElement: HTMLInputElement | null;
6
+ private _valueLabel;
7
+ private _numberInput;
8
+ private _boundOnRangeInput;
9
+ private _boundOnNumberInput;
10
+ static tagName: string;
11
+ accessor options: SliderOptions;
12
+ accessor percentage: boolean;
13
+ accessor min: number;
14
+ accessor max: number;
15
+ accessor step: number;
16
+ accessor editable: boolean;
17
+ accessor tracked: boolean;
18
+ accessor marks: SliderMarks | undefined;
19
+ protected static styles: string[];
20
+ constructor();
21
+ private _normalizeOptions;
22
+ private _getRangeAttrs;
23
+ private _toRangeValue;
24
+ private _fromRangeValue;
25
+ private _displayLabel;
26
+ private _maxValueLabelWidth;
27
+ private _updateTrackFill;
28
+ private _getMarksData;
29
+ protected writeValue(value: string): void;
30
+ protected getValue(): string;
31
+ render(): import("aeico-view").RenderResult;
32
+ private _onRangeInput;
33
+ private _onNumberInput;
34
+ clear(options?: {
35
+ silent?: boolean;
36
+ }): void;
37
+ private _isSliderOption;
38
+ }
39
+ declare global {
40
+ interface HTMLElementTagNameMap {
41
+ 'ae-slider': Slider;
42
+ }
43
+ }
44
+ export default Slider;
45
+ export type SliderProps = InferProps<typeof Slider>;
@@ -0,0 +1,2 @@
1
+ export { default, default as Switch } from './switch';
2
+ export type { SwitchProps } from './switch';
@@ -0,0 +1,35 @@
1
+ import AeicoField from '../aeico-field';
2
+ import type { InferProps, Props } from 'aeico';
3
+ declare class Switch extends AeicoField {
4
+ protected fieldElement: HTMLInputElement | null;
5
+ static tagName: string;
6
+ static props: Props;
7
+ checked?: boolean;
8
+ defaultChecked?: boolean;
9
+ protected static styles: string[];
10
+ protected getValue(): boolean;
11
+ protected writeValue(checked: boolean): void;
12
+ protected getEventPayload(checked: boolean, oldChecked: boolean, action: any): {
13
+ checked: boolean;
14
+ oldChecked: boolean;
15
+ action: any;
16
+ };
17
+ protected setValue(checked: boolean, options?: {
18
+ silent?: boolean;
19
+ action?: any;
20
+ }): void;
21
+ reset(checked?: boolean, options?: {
22
+ silent?: boolean;
23
+ }): void;
24
+ clear(options?: {
25
+ silent?: boolean;
26
+ }): void;
27
+ render(): import("aeico-view").RenderResult;
28
+ }
29
+ declare global {
30
+ interface HTMLElementTagNameMap {
31
+ 'ae-switch': Switch;
32
+ }
33
+ }
34
+ export default Switch;
35
+ export type SwitchProps = InferProps<typeof Switch>;
@@ -0,0 +1 @@
1
+ export type TabActiveIndex = number;