aeico-components 0.1.8 → 0.1.10

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 (233) hide show
  1. package/README.md +0 -0
  2. package/dist/alert.cjs +20 -29
  3. package/dist/alert.cjs.map +3 -3
  4. package/dist/alert.js +20 -29
  5. package/dist/alert.js.map +3 -3
  6. package/dist/badge.cjs +19 -28
  7. package/dist/badge.cjs.map +3 -3
  8. package/dist/badge.js +19 -28
  9. package/dist/badge.js.map +3 -3
  10. package/dist/breadcrumb.cjs +22 -33
  11. package/dist/breadcrumb.cjs.map +3 -3
  12. package/dist/breadcrumb.js +22 -33
  13. package/dist/breadcrumb.js.map +3 -3
  14. package/dist/button-group.cjs +19 -28
  15. package/dist/button-group.cjs.map +3 -3
  16. package/dist/button-group.js +19 -28
  17. package/dist/button-group.js.map +3 -3
  18. package/dist/button.cjs +19 -29
  19. package/dist/button.cjs.map +3 -3
  20. package/dist/button.js +19 -29
  21. package/dist/button.js.map +3 -3
  22. package/dist/card.cjs +19 -29
  23. package/dist/card.cjs.map +3 -3
  24. package/dist/card.js +19 -29
  25. package/dist/card.js.map +3 -3
  26. package/dist/checkbox.cjs +21 -31
  27. package/dist/checkbox.cjs.map +3 -3
  28. package/dist/checkbox.js +21 -31
  29. package/dist/checkbox.js.map +3 -3
  30. package/dist/copy-button.cjs +25 -33
  31. package/dist/copy-button.cjs.map +2 -2
  32. package/dist/copy-button.js +25 -33
  33. package/dist/copy-button.js.map +3 -3
  34. package/dist/detail-group.cjs +19 -29
  35. package/dist/detail-group.cjs.map +3 -3
  36. package/dist/detail-group.js +19 -29
  37. package/dist/detail-group.js.map +3 -3
  38. package/dist/detail.cjs +19 -29
  39. package/dist/detail.cjs.map +3 -3
  40. package/dist/detail.js +19 -29
  41. package/dist/detail.js.map +3 -3
  42. package/dist/dialog.cjs +24 -32
  43. package/dist/dialog.cjs.map +2 -2
  44. package/dist/dialog.js +24 -32
  45. package/dist/dialog.js.map +3 -3
  46. package/dist/divider.cjs +20 -30
  47. package/dist/divider.cjs.map +3 -3
  48. package/dist/divider.js +20 -30
  49. package/dist/divider.js.map +3 -3
  50. package/dist/drawer.cjs +24 -32
  51. package/dist/drawer.cjs.map +2 -2
  52. package/dist/drawer.js +24 -32
  53. package/dist/drawer.js.map +3 -3
  54. package/dist/dropdown.cjs +31 -43
  55. package/dist/dropdown.cjs.map +3 -3
  56. package/dist/dropdown.js +31 -43
  57. package/dist/dropdown.js.map +3 -3
  58. package/dist/icon-button.cjs +25 -35
  59. package/dist/icon-button.cjs.map +3 -3
  60. package/dist/icon-button.js +25 -35
  61. package/dist/icon-button.js.map +3 -3
  62. package/dist/icon.cjs +20 -26
  63. package/dist/icon.cjs.map +2 -2
  64. package/dist/icon.js +20 -26
  65. package/dist/icon.js.map +2 -2
  66. package/dist/index.cjs +75 -113
  67. package/dist/index.cjs.map +3 -3
  68. package/dist/index.js +75 -113
  69. package/dist/index.js.map +3 -3
  70. package/dist/menu.cjs +20 -31
  71. package/dist/menu.cjs.map +3 -3
  72. package/dist/menu.js +20 -31
  73. package/dist/menu.js.map +3 -3
  74. package/dist/navbar.cjs +19 -29
  75. package/dist/navbar.cjs.map +3 -3
  76. package/dist/navbar.js +19 -29
  77. package/dist/navbar.js.map +3 -3
  78. package/dist/number-input.cjs +21 -31
  79. package/dist/number-input.cjs.map +3 -3
  80. package/dist/number-input.js +21 -31
  81. package/dist/number-input.js.map +3 -3
  82. package/dist/pagination.cjs +24 -33
  83. package/dist/pagination.cjs.map +2 -2
  84. package/dist/pagination.js +24 -33
  85. package/dist/pagination.js.map +3 -3
  86. package/dist/progress-bar.cjs +19 -29
  87. package/dist/progress-bar.cjs.map +3 -3
  88. package/dist/progress-bar.js +19 -29
  89. package/dist/progress-bar.js.map +3 -3
  90. package/dist/radio-group.cjs +24 -35
  91. package/dist/radio-group.cjs.map +3 -3
  92. package/dist/radio-group.js +24 -35
  93. package/dist/radio-group.js.map +3 -3
  94. package/dist/select.cjs +23 -34
  95. package/dist/select.cjs.map +3 -3
  96. package/dist/select.js +23 -34
  97. package/dist/select.js.map +3 -3
  98. package/dist/slider.cjs +21 -32
  99. package/dist/slider.cjs.map +3 -3
  100. package/dist/slider.js +21 -32
  101. package/dist/slider.js.map +3 -3
  102. package/dist/spinner.cjs +19 -29
  103. package/dist/spinner.cjs.map +3 -3
  104. package/dist/spinner.js +19 -29
  105. package/dist/spinner.js.map +3 -3
  106. package/dist/styles/layout.cjs +1 -1
  107. package/dist/styles/layout.js +1 -1
  108. package/dist/styles/radius.cjs +1 -1
  109. package/dist/styles/radius.js +1 -1
  110. package/dist/styles/variables.cjs +1 -1
  111. package/dist/styles/variables.js +1 -1
  112. package/dist/switch.cjs +26 -35
  113. package/dist/switch.cjs.map +3 -3
  114. package/dist/switch.js +26 -35
  115. package/dist/switch.js.map +3 -3
  116. package/dist/tabs.cjs +21 -30
  117. package/dist/tabs.cjs.map +3 -3
  118. package/dist/tabs.js +21 -30
  119. package/dist/tabs.js.map +3 -3
  120. package/dist/tag.cjs +19 -28
  121. package/dist/tag.cjs.map +3 -3
  122. package/dist/tag.js +19 -28
  123. package/dist/tag.js.map +3 -3
  124. package/dist/text-input.cjs +21 -31
  125. package/dist/text-input.cjs.map +3 -3
  126. package/dist/text-input.js +21 -31
  127. package/dist/text-input.js.map +3 -3
  128. package/dist/textarea.cjs +21 -31
  129. package/dist/textarea.cjs.map +3 -3
  130. package/dist/textarea.js +21 -31
  131. package/dist/textarea.js.map +3 -3
  132. package/dist/tooltip.cjs +19 -28
  133. package/dist/tooltip.cjs.map +3 -3
  134. package/dist/tooltip.js +19 -28
  135. package/dist/tooltip.js.map +3 -3
  136. package/dist/tree.cjs +25 -35
  137. package/dist/tree.cjs.map +3 -3
  138. package/dist/tree.js +25 -35
  139. package/dist/tree.js.map +3 -3
  140. package/dist/types/aeico-component.d.ts +1 -1
  141. package/dist/types/aeico-field.d.ts +1 -1
  142. package/dist/types/breadcrumb/breadcrumb-item.d.ts +0 -1
  143. package/dist/types/breadcrumb/breadcrumb.d.ts +2 -3
  144. package/dist/types/button-group/button-group.d.ts +1 -1
  145. package/dist/types/card/card.d.ts +0 -1
  146. package/dist/types/checkbox/checkbox.d.ts +0 -1
  147. package/dist/types/detail/detail.d.ts +0 -1
  148. package/dist/types/detail-group/detail-group.d.ts +1 -2
  149. package/dist/types/divider/divider.d.ts +0 -1
  150. package/dist/types/dropdown/dropdown-button.d.ts +4 -5
  151. package/dist/types/dropdown/dropdown-item.d.ts +3 -4
  152. package/dist/types/dropdown/dropdown.d.ts +4 -5
  153. package/dist/types/icon/icon.d.ts +0 -1
  154. package/dist/types/icon/registry.d.ts +1 -1
  155. package/dist/types/icon-button/icon-button.d.ts +0 -1
  156. package/dist/types/index.d.ts +4 -4
  157. package/dist/types/menu/menu-item.d.ts +3 -4
  158. package/dist/types/menu/menu.d.ts +3 -4
  159. package/dist/types/navbar/navbar.d.ts +5 -6
  160. package/dist/types/number-input/number-input.d.ts +0 -1
  161. package/dist/types/pagination/pagination.d.ts +0 -1
  162. package/dist/types/progress-bar/progress-bar.d.ts +0 -1
  163. package/dist/types/radio-group/radio-group.d.ts +0 -1
  164. package/dist/types/radio-group/radio.d.ts +6 -7
  165. package/dist/types/select/select-option.d.ts +0 -1
  166. package/dist/types/select/select.d.ts +0 -1
  167. package/dist/types/slider/defines.d.ts +5 -5
  168. package/dist/types/slider/slider.d.ts +0 -1
  169. package/dist/types/spinner/spinner.d.ts +1 -2
  170. package/dist/types/switch/switch.d.ts +0 -1
  171. package/dist/types/text-input/text-input.d.ts +0 -1
  172. package/dist/types/textarea/textarea.d.ts +0 -1
  173. package/dist/types/tree/tree-item.d.ts +1 -2
  174. package/dist/types/tree/tree.d.ts +0 -1
  175. package/package.json +5 -3
  176. package/src/aeico-component.ts +6 -5
  177. package/src/aeico-field.ts +2 -2
  178. package/src/alert/alert.ts +2 -2
  179. package/src/badge/badge.ts +2 -2
  180. package/src/breadcrumb/breadcrumb-item.ts +2 -4
  181. package/src/breadcrumb/breadcrumb.ts +4 -6
  182. package/src/button/button.ts +2 -2
  183. package/src/button-group/button-group.ts +3 -3
  184. package/src/card/card.ts +2 -4
  185. package/src/card/defines.ts +1 -1
  186. package/src/card/index.ts +1 -1
  187. package/src/checkbox/checkbox.ts +2 -4
  188. package/src/copy-button/copy-button.ts +1 -1
  189. package/src/detail/detail.ts +2 -4
  190. package/src/detail-group/detail-group.ts +2 -4
  191. package/src/dialog/dialog.ts +2 -2
  192. package/src/divider/divider.ts +2 -4
  193. package/src/drawer/drawer.ts +2 -2
  194. package/src/dropdown/dropdown-button.ts +6 -8
  195. package/src/dropdown/dropdown-item.ts +5 -7
  196. package/src/dropdown/dropdown.ts +7 -9
  197. package/src/icon/icon.ts +2 -4
  198. package/src/icon/registry.ts +1 -1
  199. package/src/icon-button/icon-button.ts +2 -4
  200. package/src/index.ts +4 -4
  201. package/src/menu/menu-item.ts +5 -7
  202. package/src/menu/menu.ts +4 -6
  203. package/src/navbar/navbar.ts +7 -9
  204. package/src/number-input/number-input.ts +1 -3
  205. package/src/pagination/pagination.ts +1 -3
  206. package/src/progress-bar/progress-bar.ts +1 -2
  207. package/src/radio-group/radio-group.ts +5 -7
  208. package/src/radio-group/radio.ts +8 -10
  209. package/src/select/select-option.ts +2 -4
  210. package/src/select/select.ts +4 -6
  211. package/src/slider/defines.ts +5 -5
  212. package/src/slider/slider.ts +5 -8
  213. package/src/spinner/spinner.ts +2 -4
  214. package/src/styles/components/action-button.css +1 -1
  215. package/src/styles/components/alert.css +1 -1
  216. package/src/styles/components/breadcrumb-item.css +2 -2
  217. package/src/styles/components/button.css +0 -1
  218. package/src/styles/components/divider.css +1 -1
  219. package/src/styles/components/dropdown-item.css +2 -2
  220. package/src/styles/components/dropdown.css +1 -1
  221. package/src/styles/layout.css +14 -14
  222. package/src/styles/radius.css +1 -1
  223. package/src/styles/variables.css +14 -16
  224. package/src/switch/switch.ts +2 -4
  225. package/src/tabs/tab-panel.ts +2 -2
  226. package/src/tabs/tab.ts +2 -2
  227. package/src/tabs/tabs.ts +2 -2
  228. package/src/tag/tag.ts +2 -2
  229. package/src/text-input/text-input.ts +2 -4
  230. package/src/textarea/textarea.ts +1 -3
  231. package/src/tooltip/tooltip.ts +1 -1
  232. package/src/tree/tree-item.ts +3 -5
  233. package/src/tree/tree.ts +2 -4
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/aeico-field.ts", "../src/aeico-component.ts", "../src/utils.ts", "../src/text-input/text-input.ts", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/size.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/field-label.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/text-input.css"],
4
- "sourcesContent": ["\uFEFFimport type { InferProps, Props, Watchers } from 'aeico';\nimport { tags } from 'aeico';\nimport AeicoComponent from './aeico-component';\n\nexport type FieldAction = 'clear' | 'reset' | 'change';\nexport type FieldElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\nexport type ActionButtonStyle = 'standalone' | 'integrated';\n\n/**\n * Base class for form field components\n *\n * Provides common functionality for field components including:\n * - Theme support\n * - i18n integration (via Localizable mixin)\n * - Reset button management\n * - Value management\n * - Common configuration handling\n */\nclass AeicoField<TValue = string> extends AeicoComponent {\n /**\n * Define base field properties (extends AeicoElement properties)\n */\n static props: Props = {\n value: { type: String },\n defaultValue: { type: String },\n resettable: { type: Boolean },\n resetText: { type: String },\n resetTitle: { type: String },\n clearable: { type: Boolean },\n clearText: { type: String },\n clearTitle: { type: String },\n actionButtonStyle: { type: String },\n size: { type: String },\n disabled: { type: Boolean },\n label: { type: String },\n labelPlacement: { type: String },\n required: { type: Boolean },\n helperText: { type: String },\n error: { type: String },\n };\n\n /**\n * Property watchers\n */\n static watchers: Watchers = {\n disabled: 'onDisabledChanged',\n error: 'onErrorChanged',\n };\n\n private static _fieldIdCounter = 0;\n private readonly _fieldId: string;\n\n constructor() {\n super();\n this._fieldId = `ae-field-${++AeicoField._fieldIdCounter}`;\n }\n\n /**\n * The underlying form control element (input, select, etc.)\n * Subclasses should set this to their specific element\n */\n protected fieldElement: FieldElement | null = null;\n\n protected resetBtn: HTMLButtonElement | null = null;\n protected clearBtn: HTMLButtonElement | null = null;\n\n protected readonly boundOnChange = () =>\n this.setValue(this.getValue(), { silent: false, action: 'change' });\n\n protected readonly boundOnReset = () => this.onReset();\n protected readonly boundOnClear = () => this.onClear();\n\n // Declare reactive properties for TypeScript\n declare value?: TValue;\n declare defaultValue?: TValue | string;\n declare resettable?: boolean;\n declare resetText?: string;\n declare resetTitle?: string;\n declare clearable?: boolean;\n declare clearText?: string;\n declare clearTitle?: string;\n declare actionButtonStyle?: ActionButtonStyle;\n declare size?: string;\n declare disabled?: boolean;\n declare label?: string;\n declare labelPlacement?: 'top' | 'left';\n declare required?: boolean;\n declare helperText?: string;\n declare error?: string;\n\n /**\n * Lifecycle: Component connected to DOM\n */\n connectedCallback() {\n super.connectedCallback();\n }\n\n /**\n * Lifecycle: Component disconnected from DOM\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n /**\n * Render action buttons (clear/reset) using this.builder.\n * Must be called from within a build() callback.\n */\n protected renderActionButtons(force: boolean = false) {\n const style = this.actionButtonStyle || 'integrated';\n const hasActions = force || this.clearable || this.resettable;\n\n if (hasActions && style === 'integrated') {\n tags.div({ className: 'action-controls' }, () => {\n this.renderClearButton(force);\n this.renderResetButton(force);\n });\n } else {\n this.renderClearButton(force);\n this.renderResetButton(force);\n }\n }\n\n protected renderResetButton(force: boolean = false) {\n const { button } = tags;\n const style = this.actionButtonStyle || 'integrated';\n\n if (force || this.resettable) {\n const className = style === 'integrated' ? 'reset-btn action-btn' : 'reset-btn';\n this.resetBtn = button({\n className,\n textContent: this.resetText || '\u21BA',\n title: this.resetTitle || '\u21BA',\n '@click': this.boundOnReset,\n });\n }\n }\n\n protected renderClearButton(force: boolean = false) {\n const { button } = tags;\n const style = this.actionButtonStyle || 'integrated';\n\n if (force || this.clearable) {\n const className = style === 'integrated' ? 'clear-btn action-btn' : 'clear-btn';\n this.clearBtn = button({\n className,\n textContent: this.clearText || '\u2715',\n title: this.clearTitle || '\u2715',\n '@click': this.boundOnClear,\n });\n }\n }\n\n /**\n * Returns a stable unique ID for this field instance,\n * used to associate <label htmlFor> with the underlying input.\n */\n protected getFieldId(): string {\n return this._fieldId;\n }\n\n /**\n * Renders a <label> element when the `label` prop is set.\n * Call this as the first statement inside the render() html() callback.\n * @param fieldId - The id to set on the underlying form control element (pass to input via id prop)\n */\n protected renderLabel(fieldId: string): void {\n if (!this.label) return;\n const { span } = tags;\n tags.label({ id: `${fieldId}-label`, className: 'field-label', for: fieldId }, () => {\n span({ textContent: this.label! });\n if (this.required) {\n span({ className: 'field-required', 'aria-hidden': 'true', textContent: ' *' });\n }\n });\n }\n\n /**\n * Renders helper text below the field. Hidden when `error` is set.\n * Call this after the field-body div in render().\n */\n protected renderHelperText(): void {\n if (!this.helperText || this.error) return;\n const { span } = tags;\n span({ className: 'field-helper', textContent: this.helperText });\n }\n\n /**\n * Renders an error message below the field when `error` is set.\n * Call this after renderHelperText() in render().\n */\n protected renderError(): void {\n if (!this.error) return;\n const { span } = tags;\n span({ className: 'field-error', textContent: this.error });\n }\n\n /**\n * Watcher for disabled property\n */\n protected onDisabledChanged(newValue: boolean) {\n if (this.fieldElement) {\n (this.fieldElement as HTMLInputElement | HTMLSelectElement).disabled = Boolean(newValue);\n }\n }\n\n /**\n * Watcher for error property \u2014 syncs aria-invalid on the field element\n */\n protected onErrorChanged(newValue: string | undefined): void {\n if (this.fieldElement) {\n if (newValue) {\n this.fieldElement.setAttribute('aria-invalid', 'true');\n } else {\n this.fieldElement.removeAttribute('aria-invalid');\n }\n }\n }\n\n /**\n * Lifecycle: called after every render update.\n * Keeps aria-invalid on fieldElement in sync regardless of watcher timing.\n */\n protected onUpdated(_changedProps: Map<string, unknown>): void {\n if (!this.fieldElement) return;\n if (this.error) {\n this.fieldElement.setAttribute('aria-invalid', 'true');\n } else {\n this.fieldElement.removeAttribute('aria-invalid');\n }\n }\n\n /**\n * Returns true if the field passes constraint validation.\n * Delegates to the underlying fieldElement when available;\n * falls back to a manual required-check otherwise.\n */\n public checkValidity(): boolean {\n if (this.fieldElement) {\n return this.fieldElement.checkValidity();\n }\n if (this.required) {\n const v = this.value;\n return v !== undefined && v !== '' && v !== null;\n }\n return true;\n }\n\n /**\n * Reports validity, showing the browser's built-in validation UI when possible.\n */\n public reportValidity(): boolean {\n if (this.fieldElement) {\n return this.fieldElement.reportValidity();\n }\n return this.checkValidity();\n }\n\n /**\n * Render the field component\n * Override in subclass to provide custom rendering\n */\n render(): void {\n // Default implementation - subclasses can override\n }\n\n /**\n * Get current value from the field element\n * Default implementation returns the value property of fieldElement\n * Override in subclasses if needed (e.g., checkbox uses checked instead of value)\n *\n * @returns Current field value\n */\n protected getValue(): TValue {\n return (this.fieldElement?.value || '') as TValue;\n }\n\n /**\n * Write value to the underlying UI element and sync props\n * Subclasses must override this to update their specific UI element\n *\n * @param _value New value to write to the element\n */\n protected writeValue(_value: TValue): void {\n // Base implementation - subclasses override\n }\n\n /**\n * Get event payload for change events\n * Override in subclasses to customize event data (e.g., { checked, oldChecked } for checkbox)\n *\n * @param value New value\n * @param oldValue Previous value\n * @param action Action type\n * @returns Event payload object\n */\n protected getEventPayload(\n value: TValue,\n oldValue: TValue,\n action: FieldAction,\n ): Record<string, unknown> {\n return { value, oldValue, action };\n }\n\n /**\n * Update field value programmatically (internal method)\n * Subclasses should provide type-safe public wrappers (e.g., change() method)\n *\n * @param value New value\n * @param options.silent If true, won't emit change event (default: true)\n * @param options.action Action type for the event (default: 'change')\n */\n protected setValue(value: TValue, options?: { silent?: boolean; action?: FieldAction }): void {\n const oldValue = this.getValue();\n\n // Update property value\n this.value = value;\n\n // Write to UI element (DOM only)\n this.writeValue(value);\n\n // Emit event if not silent\n if (options?.silent === false) {\n const payload = this.getEventPayload(value, oldValue, options.action || 'change');\n this.emit('change', { detail: payload });\n }\n }\n\n /**\n * Reset field to specified value or default value\n *\n * @param value Value to reset to, defaults to defaultValue prop\n * @param options.silent If false, will emit reset event (default: true)\n */\n public reset(value?: TValue, options?: { silent?: boolean }): void {\n const resetValue = value !== undefined ? value : this.defaultValue;\n this.setValue(resetValue as TValue, { ...options, action: 'reset' });\n }\n\n /**\n * Clear the field value\n *\n * @param options.silent If false, will emit clear event (default: true)\n */\n public clear(options?: { silent?: boolean }): void {\n this.setValue('' as TValue, { ...options, action: 'clear' });\n }\n\n /**\n * Handle clear button click\n * Clears the field and dispatches event\n */\n protected onClear(): void {\n this.clear({ silent: false });\n }\n\n /**\n * Handle reset button click\n * Resets to default value and dispatches event\n */\n protected onReset(): void {\n this.reset(undefined, { silent: false });\n }\n}\n\nexport default AeicoField;\nexport type AeicoFieldProps = InferProps<typeof AeicoField>;\n", "\uFEFFimport { AeicoElement } from 'aeico';\nimport { toKebab } from './utils';\n\nconst TAG_NAME_PREFIX = 'ae';\n\n/**\n * AeicoComponent is the base class for all built-in Aeico components.\n */\nclass AeicoComponent extends AeicoElement {\n static register(name?: string) {\n const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;\n\n super.register(tagName);\n }\n}\n\nexport default AeicoComponent;\n", "export const SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function toKebab(str: string): string {\n const cleaned = str.replace(/^[_\\d]+/, '');\n\n return cleaned.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n", "\uFEFFimport AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport variables from '../styles/variables.css';\nimport sizeCSS from '../styles/size.css';\nimport fieldLabelCSS from '../styles/components/field-label.css';\nimport actionButtonCSS from '../styles/components/action-button.css';\nimport style from '../styles/components/text-input.css';\n\nclass TextInput extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'text-input';\n\n static props: Props = {\n placeholder: { type: String },\n type: { type: String },\n };\n\n declare placeholder?: string;\n declare type?: string;\n\n protected static styles = [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style];\n\n render() {\n return html(({ div, input }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'input-container field-body' }, () => {\n this.fieldElement = input({\n id,\n type: this.type || 'text',\n placeholder: this.placeholder || '',\n required: Boolean(this.required),\n '@input': this.boundOnChange,\n });\n\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n\n if (this.fieldElement && this.value != null) {\n this.fieldElement.value = String(this.value);\n }\n });\n }\n\n /**\n * Write value to the input element (DOM only)\n */\n protected writeValue(value: string): void {\n const strValue = String(value || '');\n\n if (this.fieldElement) {\n this.fieldElement.value = strValue;\n }\n }\n}\n\nTextInput.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-text-input': TextInput;\n }\n}\n\nexport default TextInput;\nexport type TextInputProps = InferProps<typeof TextInput>;\n", "export default \":root,\\n:host {\\n --ae-font-sans-serif: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\",\\n \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif,\\n \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\";\\n --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\\n \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace;\\n font-family: var(--ae-font-sans-serif);\\n --ae-blue: #0e639c;\\n --ae-green: #28a745;\\n --ae-red: #dc3545;\\n --ae-yellow: #ffc107;\\n --ae-cyan: #17a2b8;\\n --ae-gray: #6e6e6e;\\n --ae-slate: #64748b;\\n --ae-dark: #343a40;\\n --ae-light: #f8f9fa;\\n}\\n\\n:root,\\n:host {\\n /* Blue */\\n --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);\\n --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);\\n --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);\\n --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);\\n --ae-blue-500: var(--ae-blue);\\n --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);\\n --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);\\n --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);\\n --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);\\n\\n /* Green */\\n --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);\\n --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);\\n --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);\\n --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);\\n --ae-green-500: var(--ae-green);\\n --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);\\n --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);\\n --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);\\n --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);\\n\\n /* Red */\\n --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);\\n --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);\\n --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);\\n --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);\\n --ae-red-500: var(--ae-red);\\n --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);\\n --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);\\n --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);\\n --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);\\n\\n /* Yellow */\\n --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);\\n --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);\\n --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);\\n --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);\\n --ae-yellow-500: var(--ae-yellow);\\n --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);\\n --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);\\n --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);\\n --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);\\n\\n /* Cyan */\\n --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);\\n --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);\\n --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);\\n --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);\\n --ae-cyan-500: var(--ae-cyan);\\n --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);\\n --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);\\n --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);\\n --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);\\n\\n /* Gray (neutral \u2014 base #6e6e6e) */\\n --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);\\n --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);\\n --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);\\n --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);\\n --ae-gray-500: var(--ae-gray);\\n --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);\\n --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);\\n --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);\\n --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);\\n\\n /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */\\n --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);\\n --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);\\n --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);\\n --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);\\n --ae-slate-500: var(--ae-slate);\\n --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);\\n --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);\\n --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);\\n --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);\\n\\n /* Dark (base #343a40) */\\n --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);\\n --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);\\n --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);\\n --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);\\n --ae-dark-500: var(--ae-dark);\\n --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);\\n --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);\\n --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);\\n --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);\\n\\n /* Light (base #f8f9fa) */\\n --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);\\n --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);\\n --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);\\n --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);\\n --ae-light-500: var(--ae-light);\\n --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);\\n --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);\\n --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);\\n --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);\\n}\\n\\n:root,\\n:host {\\n /* Hover / active mix (light default \u2014 overridden in \u00A7 6 dark) */\\n --ae-color-mix-hover: black 10%;\\n --ae-color-mix-active: black 20%;\\n\\n /* Primary (Blue) */\\n --ae-color-primary: var(--ae-blue-500);\\n --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));\\n --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));\\n --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));\\n\\n /* Success (Green) */\\n --ae-color-success: var(--ae-green-500);\\n --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));\\n --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));\\n --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));\\n\\n /* Danger (Red) */\\n --ae-color-danger: var(--ae-red-500);\\n --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));\\n --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));\\n --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));\\n\\n /* Warning (Yellow) */\\n --ae-color-warning: var(--ae-yellow-500);\\n --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));\\n --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));\\n --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));\\n\\n /* Info (Cyan) */\\n --ae-color-info: var(--ae-cyan-500);\\n --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));\\n --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));\\n --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));\\n\\n /* Secondary (Slate) \u2014 base differs per theme, overridden in \u00A7 6 dark */\\n --ae-color-secondary: var(--ae-slate-500);\\n --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));\\n --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));\\n --ae-color-secondary-text: var(--ae-slate-700);\\n}\\n\\n\\n.theme-light,\\n:root[theme=\\\"light\\\"],\\n:host([theme=\\\"light\\\"]),\\n:host-context([theme=\\\"light\\\"]),\\n:where(:root),\\n:host {\\n color-scheme: light;\\n\\n /* Gray UI aliases \u2014 lighter palette steps for elements on white background */\\n --ae-color-gray-dark: var(--ae-gray-400);\\n --ae-color-gray: var(--ae-gray-300);\\n --ae-color-gray-light: var(--ae-gray-200);\\n --ae-color-gray-lighter: var(--ae-gray-100);\\n --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);\\n\\n /* Text */\\n --ae-color-text-main: var(--ae-dark-700);\\n --ae-color-text-muted: var(--ae-gray-600);\\n --ae-color-text-disabled: var(--ae-gray-300);\\n --ae-color-text-link: var(--ae-blue-500);\\n --ae-color-text-link-hover: var(--ae-blue-700);\\n\\n /* Surfaces */\\n --ae-surface-sunken: var(--ae-light-500);\\n --ae-surface-base: white;\\n --ae-surface-raised: var(--ae-light-500);\\n --ae-surface-overlay: white;\\n --ae-color-overlay: rgba(0, 0, 0, 0.4);\\n\\n /* Borders */\\n --ae-border-subtle: rgba(0, 0, 0, 0.08);\\n --ae-border-default: rgba(0, 0, 0, 0.15);\\n --ae-border-hover: rgba(0, 0, 0, 0.25);\\n --ae-border-focus: var(--ae-color-primary);\\n --ae-border-disabled: rgba(0, 0, 0, 0.06);\\n\\n /* Focus ring */\\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);\\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);\\n\\n /* Subtle intent tokens \u2014 light context */\\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);\\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);\\n --ae-color-primary-text-emphasis: var(--ae-blue-700);\\n\\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);\\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);\\n --ae-color-success-text-emphasis: var(--ae-green-700);\\n\\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);\\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);\\n --ae-color-danger-text-emphasis: var(--ae-red-700);\\n\\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);\\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);\\n --ae-color-warning-text-emphasis: var(--ae-yellow-700);\\n\\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);\\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);\\n --ae-color-info-text-emphasis: var(--ae-cyan-700);\\n\\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);\\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);\\n --ae-color-secondary-text-emphasis: var(--ae-slate-700);\\n\\n --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */\\n --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */\\n\\n --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */\\n --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */\\n\\n /* Component tokens \u2014 light defaults */\\n --ae-action-btn-bg: var(--ae-gray-200);\\n --ae-action-btn-bg-hover: var(--ae-color-primary);\\n --ae-action-btn-color: var(--ae-gray-600);\\n --ae-action-btn-color-hover: white;\\n\\n --ae-clear-btn-bg-hover: var(--ae-color-danger);\\n --ae-clear-btn-color-hover: white;\\n\\n --ae-reset-btn-border-radius: var(--ae-radius-xs);\\n --ae-reset-btn-bg: var(--ae-action-btn-bg);\\n --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);\\n --ae-reset-btn-color: var(--ae-action-btn-color);\\n --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);\\n --ae-reset-btn-transition: all 0.12s;\\n\\n --ae-clear-btn-border-radius: var(--ae-radius-xs);\\n --ae-clear-btn-bg: var(--ae-action-btn-bg);\\n --ae-clear-btn-color: var(--ae-action-btn-color);\\n --ae-clear-btn-transition: all 0.12s;\\n}\\n\\n:root,\\n:host {\\n --ae-size-scale: 1;\\n --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */\\n --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */\\n --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */\\n --ae-size-m: var(--ae-size-base); /* 16px */\\n --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */\\n --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */\\n --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */\\n --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */\\n}\\n\\n/* Border-radius tokens \u2014 shared across all components */\\n:root,\\n:host {\\n /**\\n * Unified border-radius hook for all components.\\n *\\n * Not set by default \u2014 each component falls back to its own --ae-radius-*\\n * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).\\n *\\n * Usage:\\n * :root { --ae-border-radius: 0; } // global: all components square\\n * :root { --ae-border-radius: 999px; } // global: all components pill\\n * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular\\n * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar\\n *\\n * To restore a component to its own default:\\n * ae-card { --ae-border-radius: initial; }\\n */\\n\\n --ae-radius-square: 0;\\n --ae-radius-xs: 2px;\\n --ae-radius-sm: 4px;\\n --ae-radius-md: 6px;\\n --ae-radius-lg: 8px;\\n --ae-radius-xl: 12px;\\n --ae-radius-pill: 999px;\\n --ae-radius-circle: 50%;\\n}\\n\\n/* Layout tokens \u2014 defined on :root so all light DOM elements can use them */\\n:root,\\n:host {\\n --container-max-width: 1280px;\\n --container-padding-x: 1.5rem;\\n}\\n\\n.theme-dark,\\n:root[theme=\\\"dark\\\"],\\n:host([theme=\\\"dark\\\"]),\\n:host-context([theme=\\\"dark\\\"]) {\\n color-scheme: dark;\\n\\n /* Hover / active \u2014 slightly gentler on dark backgrounds */\\n --ae-color-mix-hover: black 8%;\\n --ae-color-mix-active: black 16%;\\n\\n /* Gray UI aliases \u2014 darker palette steps for elements on dark background */\\n --ae-color-gray-dark: var(--ae-gray-800);\\n --ae-color-gray: var(--ae-gray-700);\\n --ae-color-gray-light: var(--ae-gray-600);\\n --ae-color-gray-lighter: var(--ae-gray-500);\\n --ae-color-gray-lightest: var(--ae-gray-400);\\n\\n /* Secondary \u2014 deeper base on dark background */\\n --ae-color-secondary: var(--ae-slate-700);\\n --ae-color-secondary-text: var(--ae-slate-300);\\n\\n /* Text */\\n --ae-color-text-main: white;\\n --ae-color-text-muted: var(--ae-gray-200);\\n --ae-color-text-disabled: var(--ae-gray-500);\\n --ae-color-text-link: var(--ae-blue-300);\\n --ae-color-text-link-hover: var(--ae-blue-200);\\n\\n /* Surfaces */\\n --ae-surface-sunken: var(--ae-gray-900);\\n --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);\\n --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);\\n --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);\\n --ae-color-overlay: rgba(0, 0, 0, 0.6);\\n\\n /* Borders */\\n --ae-border-subtle: rgba(255, 255, 255, 0.08);\\n --ae-border-default: rgba(255, 255, 255, 0.12);\\n --ae-border-hover: rgba(255, 255, 255, 0.20);\\n --ae-border-focus: var(--ae-color-primary);\\n --ae-border-disabled: rgba(255, 255, 255, 0.06);\\n\\n /* Focus ring */\\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);\\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);\\n\\n /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */\\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);\\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);\\n --ae-color-primary-text-emphasis: var(--ae-blue-300);\\n\\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);\\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);\\n --ae-color-success-text-emphasis: var(--ae-green-300);\\n\\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);\\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);\\n --ae-color-danger-text-emphasis: var(--ae-red-300);\\n\\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);\\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);\\n --ae-color-warning-text-emphasis: var(--ae-yellow-300);\\n\\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);\\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);\\n --ae-color-info-text-emphasis: var(--ae-cyan-300);\\n\\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);\\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);\\n --ae-color-secondary-text-emphasis: var(--ae-slate-300);\\n\\n --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);\\n --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);\\n\\n --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);\\n --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);\\n\\n /* Component tokens \u2014 dark overrides */\\n --ae-action-btn-bg: var(--ae-color-gray);\\n --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));\\n --ae-action-btn-color: var(--ae-gray-400);\\n --ae-action-btn-color-hover: var(--ae-cyan-300);\\n --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));\\n --ae-clear-btn-color-hover: var(--ae-red-300);\\n}\\n\"", "export default \":host([size=\\\"xs\\\"]) { font-size: var(--ae-size-xs); }\\n:host([size=\\\"sm\\\"]) { font-size: var(--ae-size-s); }\\n:host([size=\\\"md\\\"]) { font-size: var(--ae-size-m); }\\n:host([size=\\\"lg\\\"]) { font-size: var(--ae-size-l); }\\n:host([size=\\\"xl\\\"]) { font-size: var(--ae-size-xl); }\\n:host([size=\\\"3xs\\\"]) { font-size: var(--ae-size-3xs); }\\n:host([size=\\\"2xs\\\"]) { font-size: var(--ae-size-2xs); }\\n\"", "export default \":host {\\n --field-label-gap: 4px;\\n --field-label-col-gap: 8px;\\n --field-label-width: 100px;\\n --field-label-font-size: 0.875em;\\n --field-label-color: inherit;\\n --field-required-color: var(--ae-red, #dc3545);\\n --field-helper-color: var(--ae-color-text-muted, #6e6e6e);\\n --field-error-color: var(--ae-red, #dc3545);\\n}\\n\\n:host([label]) {\\n display: flex;\\n flex-direction: column;\\n align-items: stretch;\\n gap: var(--field-label-gap);\\n}\\n\\n:host([label][label-placement=\\\"left\\\"]) {\\n display: grid;\\n grid-template-columns: var(--field-label-width) 1fr;\\n column-gap: var(--field-label-col-gap);\\n row-gap: var(--field-label-gap);\\n align-items: center;\\n}\\n\\n:host([label][label-placement=\\\"left\\\"]) .field-label {\\n align-self: center;\\n}\\n\\n:host([label][label-placement=\\\"left\\\"]) .field-helper,\\n:host([label][label-placement=\\\"left\\\"]) .field-error {\\n grid-column: 2;\\n}\\n\\n.field-label {\\n font-size: var(--field-label-font-size);\\n color: var(--field-label-color);\\n user-select: none;\\n line-height: 1.4;\\n}\\n\\n.field-required {\\n color: var(--field-required-color);\\n margin-left: 2px;\\n}\\n\\n.field-helper {\\n font-size: 0.8em;\\n color: var(--field-helper-color);\\n line-height: 1.4;\\n}\\n\\n.field-error {\\n font-size: 0.8em;\\n color: var(--field-error-color);\\n line-height: 1.4;\\n}\\n\\n/* Action controls container (integrated style) */\\n.action-controls {\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\\n border-radius: 0 var(--field-action-border-radius, var(--ae-radius-xs)) var(--field-action-border-radius, var(--ae-radius-xs)) 0;\\n overflow: hidden;\\n flex-shrink: 0;\\n transition: border-color 0.12s;\\n background: var(--field-action-bg, var(--ae-surface-base));\\n position: relative;\\n z-index: 1;\\n align-self: stretch;\\n}\\n\\n.action-controls .action-btn {\\n border: none;\\n background: transparent;\\n color: var(--field-action-color, var(--ae-color-text-muted));\\n font-size: 0.875em;\\n line-height: 1;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 0 0.5em;\\n transition: background 0.12s;\\n}\\n\\n.action-controls .action-btn:hover:not(:disabled) {\\n background: var(--field-action-bg-hover, var(--ae-surface-raised));\\n}\\n\\n.action-controls .action-btn:active:not(:disabled) {\\n background: var(--field-action-bg-focus, var(--ae-surface-raised));\\n}\\n\\n.action-controls .action-btn:disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.action-controls .action-btn + .action-btn {\\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\\n}\\n\\n.input-container:has(input:focus) ~ .action-controls,\\n.input-container:has(input:focus) .action-controls,\\n.container:has(.trigger.open) ~ .action-controls,\\n.container:has(.trigger.open) .action-controls {\\n border-color: var(--field-action-border-color-focus, var(--ae-border-focus));\\n}\\n\\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\\n.input-container:has(input:hover:not(:focus)) .action-controls,\\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\\n border-color: var(--field-action-border-color-hover, var(--ae-border-default));\\n}\\n\"", "export default \"/* Action button base styles \u2014 shared by clear-btn and reset-btn (standalone mode) */\\n.clear-btn:not(.action-btn),\\n.reset-btn:not(.action-btn) {\\n width: 1.333em;\\n height: 1.333em;\\n border: none;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n line-height: 1;\\n}\\n\\n.clear-btn:not(.action-btn) {\\n border-radius: var(--ae-clear-btn-border-radius);\\n background: var(--ae-clear-btn-bg);\\n color: var(--ae-clear-btn-color);\\n transition: var(--ae-clear-btn-transition);\\n}\\n\\n.reset-btn:not(.action-btn) {\\n border-radius: var(--ae-reset-btn-border-radius);\\n background: var(--ae-reset-btn-bg);\\n color: var(--ae-reset-btn-color);\\n transition: var(--ae-reset-btn-transition);\\n}\\n\\n.clear-btn:not(.action-btn):hover {\\n background: var(--ae-clear-btn-bg-hover);\\n color: var(--ae-clear-btn-color-hover);\\n}\\n\\n.reset-btn:not(.action-btn):hover {\\n background: var(--ae-reset-btn-bg-hover);\\n color: var(--ae-reset-btn-color-hover);\\n}\\n\"", "export default \":host {\\n display: block;\\n flex: 1;\\n min-width: 0;\\n font-size: var(--ae-size-base);\\n --input-field-gap: 4px;\\n --input-font-size: 1em;\\n --input-padding: 0.333em 0.583em;\\n --input-border-width: 1px;\\n --input-transition: border-color 0.12s, background 0.12s;\\n}\\n\\n.input-container {\\n display: flex;\\n align-items: center;\\n gap: var(--input-field-gap);\\n width: 100%;\\n}\\n\\ninput {\\n flex: 1;\\n min-width: 0;\\n font-size: var(--input-font-size);\\n padding: var(--input-padding);\\n border: var(--input-border-width) solid var(--ae-border-subtle);\\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\\n background: var(--ae-surface-base);\\n color: var(--ae-color-text-muted);\\n transition: var(--input-transition);\\n}\\n\\ninput::placeholder {\\n color: var(--ae-color-text-disabled);\\n}\\n\\ninput:focus {\\n outline: none;\\n border-color: var(--ae-border-focus);\\n background: var(--ae-surface-raised);\\n}\\n\\ninput:hover:not(:focus) {\\n border-color: var(--ae-border-default);\\n background: var(--ae-surface-raised);\\n}\\n\\ninput:disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n:host([error]) input {\\n border-color: var(--field-error-color, var(--ae-red));\\n}\\n\\n:host([error]) input:hover:not(:focus),\\n:host([error]) input:focus {\\n border-color: var(--field-error-color, var(--ae-red));\\n}\\n\\n.input-container:has(.action-controls) input {\\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\\n}\\n\""],
5
- "mappings": "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",
3
+ "sources": ["../src/aeico-field.ts", "../src/aeico-component.ts", "../src/text-input/text-input.ts", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/variables.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/size.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/field-label.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css", "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/text-input.css"],
4
+ "sourcesContent": ["import type { InferProps, Props, Watchers } from 'aeico';\nimport { tags } from 'aeico';\nimport AeicoComponent from './aeico-component';\n\nexport type FieldAction = 'clear' | 'reset' | 'change';\nexport type FieldElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\nexport type ActionButtonStyle = 'standalone' | 'integrated';\n\n/**\n * Base class for form field components\n *\n * Provides common functionality for field components including:\n * - Theme support\n * - i18n integration (via Localizable mixin)\n * - Reset button management\n * - Value management\n * - Common configuration handling\n */\nclass AeicoField<TValue = string> extends AeicoComponent {\n /**\n * Define base field properties (extends AeicoElement properties)\n */\n static props: Props = {\n value: { type: String },\n defaultValue: { type: String },\n resettable: { type: Boolean },\n resetText: { type: String },\n resetTitle: { type: String },\n clearable: { type: Boolean },\n clearText: { type: String },\n clearTitle: { type: String },\n actionButtonStyle: { type: String },\n size: { type: String },\n disabled: { type: Boolean },\n label: { type: String },\n labelPlacement: { type: String },\n required: { type: Boolean },\n helperText: { type: String },\n error: { type: String },\n };\n\n /**\n * Property watchers\n */\n static watchers: Watchers = {\n disabled: 'onDisabledChanged',\n error: 'onErrorChanged',\n };\n\n private static _fieldIdCounter = 0;\n private readonly _fieldId: string;\n\n constructor() {\n super();\n this._fieldId = `ae-field-${++AeicoField._fieldIdCounter}`;\n }\n\n /**\n * The underlying form control element (input, select, etc.)\n * Subclasses should set this to their specific element\n */\n protected fieldElement: FieldElement | null = null;\n\n protected resetBtn: HTMLButtonElement | null = null;\n protected clearBtn: HTMLButtonElement | null = null;\n\n protected readonly boundOnChange = () =>\n this.setValue(this.getValue(), { silent: false, action: 'change' });\n\n protected readonly boundOnReset = () => this.onReset();\n protected readonly boundOnClear = () => this.onClear();\n\n // Declare reactive properties for TypeScript\n declare value?: TValue;\n declare defaultValue?: TValue | string;\n declare resettable?: boolean;\n declare resetText?: string;\n declare resetTitle?: string;\n declare clearable?: boolean;\n declare clearText?: string;\n declare clearTitle?: string;\n declare actionButtonStyle?: ActionButtonStyle;\n declare size?: string;\n declare disabled?: boolean;\n declare label?: string;\n declare labelPlacement?: 'top' | 'left';\n declare required?: boolean;\n declare helperText?: string;\n declare error?: string;\n\n /**\n * Lifecycle: Component connected to DOM\n */\n connectedCallback() {\n super.connectedCallback();\n }\n\n /**\n * Lifecycle: Component disconnected from DOM\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n /**\n * Render action buttons (clear/reset) using this.builder.\n * Must be called from within a build() callback.\n */\n protected renderActionButtons(force: boolean = false) {\n const style = this.actionButtonStyle || 'integrated';\n const hasActions = force || this.clearable || this.resettable;\n\n if (hasActions && style === 'integrated') {\n tags.div({ className: 'action-controls' }, () => {\n this.renderClearButton(force);\n this.renderResetButton(force);\n });\n } else {\n this.renderClearButton(force);\n this.renderResetButton(force);\n }\n }\n\n protected renderResetButton(force: boolean = false) {\n const { button } = tags;\n const style = this.actionButtonStyle || 'integrated';\n\n if (force || this.resettable) {\n const className = style === 'integrated' ? 'reset-btn action-btn' : 'reset-btn';\n this.resetBtn = button({\n className,\n textContent: this.resetText || '\u21BA',\n title: this.resetTitle || '\u21BA',\n '@click': this.boundOnReset,\n });\n }\n }\n\n protected renderClearButton(force: boolean = false) {\n const { button } = tags;\n const style = this.actionButtonStyle || 'integrated';\n\n if (force || this.clearable) {\n const className = style === 'integrated' ? 'clear-btn action-btn' : 'clear-btn';\n this.clearBtn = button({\n className,\n textContent: this.clearText || '\u2715',\n title: this.clearTitle || '\u2715',\n '@click': this.boundOnClear,\n });\n }\n }\n\n /**\n * Returns a stable unique ID for this field instance,\n * used to associate <label htmlFor> with the underlying input.\n */\n protected getFieldId(): string {\n return this._fieldId;\n }\n\n /**\n * Renders a <label> element when the `label` prop is set.\n * Call this as the first statement inside the render() html() callback.\n * @param fieldId - The id to set on the underlying form control element (pass to input via id prop)\n */\n protected renderLabel(fieldId: string): void {\n if (!this.label) return;\n const { span } = tags;\n tags.label({ id: `${fieldId}-label`, className: 'field-label', for: fieldId }, () => {\n span({ textContent: this.label! });\n if (this.required) {\n span({ className: 'field-required', 'aria-hidden': 'true', textContent: ' *' });\n }\n });\n }\n\n /**\n * Renders helper text below the field. Hidden when `error` is set.\n * Call this after the field-body div in render().\n */\n protected renderHelperText(): void {\n if (!this.helperText || this.error) return;\n const { span } = tags;\n span({ className: 'field-helper', textContent: this.helperText });\n }\n\n /**\n * Renders an error message below the field when `error` is set.\n * Call this after renderHelperText() in render().\n */\n protected renderError(): void {\n if (!this.error) return;\n const { span } = tags;\n span({ className: 'field-error', textContent: this.error });\n }\n\n /**\n * Watcher for disabled property\n */\n protected onDisabledChanged(newValue: boolean) {\n if (this.fieldElement) {\n (this.fieldElement as HTMLInputElement | HTMLSelectElement).disabled = Boolean(newValue);\n }\n }\n\n /**\n * Watcher for error property - syncs aria-invalid on the field element\n */\n protected onErrorChanged(newValue: string | undefined): void {\n if (this.fieldElement) {\n if (newValue) {\n this.fieldElement.setAttribute('aria-invalid', 'true');\n } else {\n this.fieldElement.removeAttribute('aria-invalid');\n }\n }\n }\n\n /**\n * Lifecycle: called after every render update.\n * Keeps aria-invalid on fieldElement in sync regardless of watcher timing.\n */\n protected onUpdated(_changedProps: Map<string, unknown>): void {\n if (!this.fieldElement) return;\n if (this.error) {\n this.fieldElement.setAttribute('aria-invalid', 'true');\n } else {\n this.fieldElement.removeAttribute('aria-invalid');\n }\n }\n\n /**\n * Returns true if the field passes constraint validation.\n * Delegates to the underlying fieldElement when available;\n * falls back to a manual required-check otherwise.\n */\n public checkValidity(): boolean {\n if (this.fieldElement) {\n return this.fieldElement.checkValidity();\n }\n if (this.required) {\n const v = this.value;\n return v !== undefined && v !== '' && v !== null;\n }\n return true;\n }\n\n /**\n * Reports validity, showing the browser's built-in validation UI when possible.\n */\n public reportValidity(): boolean {\n if (this.fieldElement) {\n return this.fieldElement.reportValidity();\n }\n return this.checkValidity();\n }\n\n /**\n * Render the field component\n * Override in subclass to provide custom rendering\n */\n render(): void {\n // Default implementation - subclasses can override\n }\n\n /**\n * Get current value from the field element\n * Default implementation returns the value property of fieldElement\n * Override in subclasses if needed (e.g., checkbox uses checked instead of value)\n *\n * @returns Current field value\n */\n protected getValue(): TValue {\n return (this.fieldElement?.value || '') as TValue;\n }\n\n /**\n * Write value to the underlying UI element and sync props\n * Subclasses must override this to update their specific UI element\n *\n * @param _value New value to write to the element\n */\n protected writeValue(_value: TValue): void {\n // Base implementation - subclasses override\n }\n\n /**\n * Get event payload for change events\n * Override in subclasses to customize event data (e.g., { checked, oldChecked } for checkbox)\n *\n * @param value New value\n * @param oldValue Previous value\n * @param action Action type\n * @returns Event payload object\n */\n protected getEventPayload(\n value: TValue,\n oldValue: TValue,\n action: FieldAction,\n ): Record<string, unknown> {\n return { value, oldValue, action };\n }\n\n /**\n * Update field value programmatically (internal method)\n * Subclasses should provide type-safe public wrappers (e.g., change() method)\n *\n * @param value New value\n * @param options.silent If true, won't emit change event (default: true)\n * @param options.action Action type for the event (default: 'change')\n */\n protected setValue(value: TValue, options?: { silent?: boolean; action?: FieldAction }): void {\n const oldValue = this.getValue();\n\n // Update property value\n this.value = value;\n\n // Write to UI element (DOM only)\n this.writeValue(value);\n\n // Emit event if not silent\n if (options?.silent === false) {\n const payload = this.getEventPayload(value, oldValue, options.action || 'change');\n this.emit('change', { detail: payload });\n }\n }\n\n /**\n * Reset field to specified value or default value\n *\n * @param value Value to reset to, defaults to defaultValue prop\n * @param options.silent If false, will emit reset event (default: true)\n */\n public reset(value?: TValue, options?: { silent?: boolean }): void {\n const resetValue = value !== undefined ? value : this.defaultValue;\n this.setValue(resetValue as TValue, { ...options, action: 'reset' });\n }\n\n /**\n * Clear the field value\n *\n * @param options.silent If false, will emit clear event (default: true)\n */\n public clear(options?: { silent?: boolean }): void {\n this.setValue('' as TValue, { ...options, action: 'clear' });\n }\n\n /**\n * Handle clear button click\n * Clears the field and dispatches event\n */\n protected onClear(): void {\n this.clear({ silent: false });\n }\n\n /**\n * Handle reset button click\n * Resets to default value and dispatches event\n */\n protected onReset(): void {\n this.reset(undefined, { silent: false });\n }\n}\n\nexport default AeicoField;\nexport type AeicoFieldProps = InferProps<typeof AeicoField>;\n", "import { AeicoElement } from 'aeico';\n\nconst TAG_NAME_PREFIX = 'ae';\n\n/**\n * AeicoComponent is the base class for all built-in Aeico components.\n */\nclass AeicoComponent extends AeicoElement {\n static define(name: string) {\n const prefix = `${TAG_NAME_PREFIX}-`;\n\n const tagName = name.startsWith(prefix) ? name : `${prefix}${name}`;\n\n super.define(tagName);\n }\n}\n\nexport default AeicoComponent;\n", "import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport variables from '../styles/variables.css';\nimport sizeCSS from '../styles/size.css';\nimport fieldLabelCSS from '../styles/components/field-label.css';\nimport actionButtonCSS from '../styles/components/action-button.css';\nimport style from '../styles/components/text-input.css';\n\nclass TextInput extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static props: Props = {\n placeholder: { type: String },\n type: { type: String },\n };\n\n declare placeholder?: string;\n declare type?: string;\n\n protected static styles = [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style];\n\n render() {\n return html(({ div, input }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'input-container field-body' }, () => {\n this.fieldElement = input({\n id,\n type: this.type || 'text',\n placeholder: this.placeholder || '',\n required: Boolean(this.required),\n '@input': this.boundOnChange,\n });\n\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n\n if (this.fieldElement && this.value != null) {\n this.fieldElement.value = String(this.value);\n }\n });\n }\n\n /**\n * Write value to the input element (DOM only)\n */\n protected writeValue(value: string): void {\n const strValue = String(value || '');\n\n if (this.fieldElement) {\n this.fieldElement.value = strValue;\n }\n }\n}\n\nTextInput.define('text-input');\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-text-input': TextInput;\n }\n}\n\nexport default TextInput;\nexport type TextInputProps = InferProps<typeof TextInput>;\n", "export default \":root,\\n:host {\\n --ae-font-sans-serif: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\",\\n \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif,\\n \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\";\\n --ae-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\\n \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace;\\n font-family: var(--ae-font-sans-serif);\\n --ae-blue: #0e639c;\\n --ae-green: #28a745;\\n --ae-red: #dc3545;\\n --ae-yellow: #ffc107;\\n --ae-cyan: #17a2b8;\\n --ae-gray: #6e6e6e;\\n --ae-slate: #64748b;\\n --ae-dark: #343a40;\\n --ae-light: #f8f9fa;\\n}\\n\\n:root,\\n:host {\\n /* Blue */\\n --ae-blue-100: color-mix(in srgb, var(--ae-blue) 20%, white);\\n --ae-blue-200: color-mix(in srgb, var(--ae-blue) 40%, white);\\n --ae-blue-300: color-mix(in srgb, var(--ae-blue) 60%, white);\\n --ae-blue-400: color-mix(in srgb, var(--ae-blue) 80%, white);\\n --ae-blue-500: var(--ae-blue);\\n --ae-blue-600: color-mix(in srgb, var(--ae-blue) 80%, black);\\n --ae-blue-700: color-mix(in srgb, var(--ae-blue) 60%, black);\\n --ae-blue-800: color-mix(in srgb, var(--ae-blue) 40%, black);\\n --ae-blue-900: color-mix(in srgb, var(--ae-blue) 20%, black);\\n\\n /* Green */\\n --ae-green-100: color-mix(in srgb, var(--ae-green) 20%, white);\\n --ae-green-200: color-mix(in srgb, var(--ae-green) 40%, white);\\n --ae-green-300: color-mix(in srgb, var(--ae-green) 60%, white);\\n --ae-green-400: color-mix(in srgb, var(--ae-green) 80%, white);\\n --ae-green-500: var(--ae-green);\\n --ae-green-600: color-mix(in srgb, var(--ae-green) 80%, black);\\n --ae-green-700: color-mix(in srgb, var(--ae-green) 60%, black);\\n --ae-green-800: color-mix(in srgb, var(--ae-green) 40%, black);\\n --ae-green-900: color-mix(in srgb, var(--ae-green) 20%, black);\\n\\n /* Red */\\n --ae-red-100: color-mix(in srgb, var(--ae-red) 20%, white);\\n --ae-red-200: color-mix(in srgb, var(--ae-red) 40%, white);\\n --ae-red-300: color-mix(in srgb, var(--ae-red) 60%, white);\\n --ae-red-400: color-mix(in srgb, var(--ae-red) 80%, white);\\n --ae-red-500: var(--ae-red);\\n --ae-red-600: color-mix(in srgb, var(--ae-red) 80%, black);\\n --ae-red-700: color-mix(in srgb, var(--ae-red) 60%, black);\\n --ae-red-800: color-mix(in srgb, var(--ae-red) 40%, black);\\n --ae-red-900: color-mix(in srgb, var(--ae-red) 20%, black);\\n\\n /* Yellow */\\n --ae-yellow-100: color-mix(in srgb, var(--ae-yellow) 20%, white);\\n --ae-yellow-200: color-mix(in srgb, var(--ae-yellow) 40%, white);\\n --ae-yellow-300: color-mix(in srgb, var(--ae-yellow) 60%, white);\\n --ae-yellow-400: color-mix(in srgb, var(--ae-yellow) 80%, white);\\n --ae-yellow-500: var(--ae-yellow);\\n --ae-yellow-600: color-mix(in srgb, var(--ae-yellow) 80%, black);\\n --ae-yellow-700: color-mix(in srgb, var(--ae-yellow) 60%, black);\\n --ae-yellow-800: color-mix(in srgb, var(--ae-yellow) 40%, black);\\n --ae-yellow-900: color-mix(in srgb, var(--ae-yellow) 20%, black);\\n\\n /* Cyan */\\n --ae-cyan-100: color-mix(in srgb, var(--ae-cyan) 20%, white);\\n --ae-cyan-200: color-mix(in srgb, var(--ae-cyan) 40%, white);\\n --ae-cyan-300: color-mix(in srgb, var(--ae-cyan) 60%, white);\\n --ae-cyan-400: color-mix(in srgb, var(--ae-cyan) 80%, white);\\n --ae-cyan-500: var(--ae-cyan);\\n --ae-cyan-600: color-mix(in srgb, var(--ae-cyan) 80%, black);\\n --ae-cyan-700: color-mix(in srgb, var(--ae-cyan) 60%, black);\\n --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);\\n --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);\\n\\n /* Gray (neutral - base #6e6e6e) */\\n --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);\\n --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);\\n --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);\\n --ae-gray-400: color-mix(in srgb, var(--ae-gray) 80%, white);\\n --ae-gray-500: var(--ae-gray);\\n --ae-gray-600: color-mix(in srgb, var(--ae-gray) 80%, black);\\n --ae-gray-700: color-mix(in srgb, var(--ae-gray) 60%, black);\\n --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);\\n --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);\\n\\n /* Slate (blue-gray - base #64748b, used for 'secondary') */\\n --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);\\n --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);\\n --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);\\n --ae-slate-400: color-mix(in srgb, var(--ae-slate) 80%, white);\\n --ae-slate-500: var(--ae-slate);\\n --ae-slate-600: color-mix(in srgb, var(--ae-slate) 80%, black);\\n --ae-slate-700: color-mix(in srgb, var(--ae-slate) 60%, black);\\n --ae-slate-800: color-mix(in srgb, var(--ae-slate) 40%, black);\\n --ae-slate-900: color-mix(in srgb, var(--ae-slate) 20%, black);\\n\\n /* Dark (base #343a40) */\\n --ae-dark-100: color-mix(in srgb, var(--ae-dark) 20%, white);\\n --ae-dark-200: color-mix(in srgb, var(--ae-dark) 40%, white);\\n --ae-dark-300: color-mix(in srgb, var(--ae-dark) 60%, white);\\n --ae-dark-400: color-mix(in srgb, var(--ae-dark) 80%, white);\\n --ae-dark-500: var(--ae-dark);\\n --ae-dark-600: color-mix(in srgb, var(--ae-dark) 80%, black);\\n --ae-dark-700: color-mix(in srgb, var(--ae-dark) 60%, black);\\n --ae-dark-800: color-mix(in srgb, var(--ae-dark) 40%, black);\\n --ae-dark-900: color-mix(in srgb, var(--ae-dark) 20%, black);\\n\\n /* Light (base #f8f9fa) */\\n --ae-light-100: color-mix(in srgb, var(--ae-light) 20%, white);\\n --ae-light-200: color-mix(in srgb, var(--ae-light) 40%, white);\\n --ae-light-300: color-mix(in srgb, var(--ae-light) 60%, white);\\n --ae-light-400: color-mix(in srgb, var(--ae-light) 80%, white);\\n --ae-light-500: var(--ae-light);\\n --ae-light-600: color-mix(in srgb, var(--ae-light) 80%, black);\\n --ae-light-700: color-mix(in srgb, var(--ae-light) 60%, black);\\n --ae-light-800: color-mix(in srgb, var(--ae-light) 40%, black);\\n --ae-light-900: color-mix(in srgb, var(--ae-light) 20%, black);\\n}\\n\\n:root,\\n:host {\\n /* Hover / active mix (light default - overridden in \u00A7 6 dark) */\\n --ae-color-mix-hover: black 10%;\\n --ae-color-mix-active: black 20%;\\n\\n /* Primary (Blue) */\\n --ae-color-primary: var(--ae-blue-500);\\n --ae-color-primary-hover: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-hover));\\n --ae-color-primary-active: color-mix(in srgb, var(--ae-color-primary), var(--ae-color-mix-active));\\n --ae-color-primary-disabled: color-mix(in srgb, var(--ae-blue) 50%, var(--ae-gray-500));\\n\\n /* Success (Green) */\\n --ae-color-success: var(--ae-green-500);\\n --ae-color-success-hover: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-hover));\\n --ae-color-success-active: color-mix(in srgb, var(--ae-color-success), var(--ae-color-mix-active));\\n --ae-color-success-disabled: color-mix(in srgb, var(--ae-green) 50%, var(--ae-gray-500));\\n\\n /* Danger (Red) */\\n --ae-color-danger: var(--ae-red-500);\\n --ae-color-danger-hover: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-hover));\\n --ae-color-danger-active: color-mix(in srgb, var(--ae-color-danger), var(--ae-color-mix-active));\\n --ae-color-danger-disabled: color-mix(in srgb, var(--ae-red) 50%, var(--ae-gray-500));\\n\\n /* Warning (Yellow) */\\n --ae-color-warning: var(--ae-yellow-500);\\n --ae-color-warning-hover: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-hover));\\n --ae-color-warning-active: color-mix(in srgb, var(--ae-color-warning), var(--ae-color-mix-active));\\n --ae-color-warning-disabled: color-mix(in srgb, var(--ae-yellow) 50%, var(--ae-gray-500));\\n\\n /* Info (Cyan) */\\n --ae-color-info: var(--ae-cyan-500);\\n --ae-color-info-hover: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-hover));\\n --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));\\n --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));\\n\\n /* Secondary (Slate) - base differs per theme, overridden in \u00A7 6 dark */\\n --ae-color-secondary: var(--ae-slate-500);\\n --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));\\n --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));\\n --ae-color-secondary-text: var(--ae-slate-700);\\n}\\n\\n\\n.theme-light,\\n:root[theme=\\\"light\\\"],\\n:host([theme=\\\"light\\\"]),\\n:host-context([theme=\\\"light\\\"]),\\n:where(:root),\\n:host {\\n color-scheme: light;\\n\\n /* Gray UI aliases - lighter palette steps for elements on white background */\\n --ae-color-gray-dark: var(--ae-gray-400);\\n --ae-color-gray: var(--ae-gray-300);\\n --ae-color-gray-light: var(--ae-gray-200);\\n --ae-color-gray-lighter: var(--ae-gray-100);\\n --ae-color-gray-lightest: color-mix(in srgb, var(--ae-gray) 10%, white);\\n\\n /* Text */\\n --ae-color-text-main: var(--ae-dark-700);\\n --ae-color-text-muted: var(--ae-gray-600);\\n --ae-color-text-disabled: var(--ae-gray-300);\\n --ae-color-text-link: var(--ae-blue-500);\\n --ae-color-text-link-hover: var(--ae-blue-700);\\n\\n /* Surfaces */\\n --ae-surface-sunken: var(--ae-light-500);\\n --ae-surface-base: white;\\n --ae-surface-raised: var(--ae-light-500);\\n --ae-surface-overlay: white;\\n --ae-color-overlay: rgba(0, 0, 0, 0.4);\\n\\n /* Borders */\\n --ae-border-subtle: rgba(0, 0, 0, 0.08);\\n --ae-border-default: rgba(0, 0, 0, 0.15);\\n --ae-border-hover: rgba(0, 0, 0, 0.25);\\n --ae-border-focus: var(--ae-color-primary);\\n --ae-border-disabled: rgba(0, 0, 0, 0.06);\\n\\n /* Focus ring */\\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);\\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);\\n\\n /* Subtle intent tokens - light context */\\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);\\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);\\n --ae-color-primary-text-emphasis: var(--ae-blue-700);\\n\\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.08);\\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.40);\\n --ae-color-success-text-emphasis: var(--ae-green-700);\\n\\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.08);\\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.40);\\n --ae-color-danger-text-emphasis: var(--ae-red-700);\\n\\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.08);\\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.40);\\n --ae-color-warning-text-emphasis: var(--ae-yellow-700);\\n\\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.08);\\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.40);\\n --ae-color-info-text-emphasis: var(--ae-cyan-700);\\n\\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.08);\\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.40);\\n --ae-color-secondary-text-emphasis: var(--ae-slate-700);\\n\\n --ae-color-light-bg-subtle: var(--ae-gray-100); /* opaque on white: ~#e2e2e2 */\\n --ae-color-light-border-subtle: var(--ae-gray-200); /* opaque on white: ~#c4c4c4 */\\n\\n --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */\\n --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */\\n\\n /* Component tokens - light defaults */\\n --ae-action-btn-bg: var(--ae-gray-200);\\n --ae-action-btn-bg-hover: var(--ae-color-primary);\\n --ae-action-btn-color: var(--ae-gray-600);\\n --ae-action-btn-color-hover: white;\\n\\n --ae-clear-btn-bg-hover: var(--ae-color-danger);\\n --ae-clear-btn-color-hover: white;\\n\\n --ae-reset-btn-border-radius: var(--ae-radius-xs);\\n --ae-reset-btn-bg: var(--ae-action-btn-bg);\\n --ae-reset-btn-bg-hover: var(--ae-action-btn-bg-hover);\\n --ae-reset-btn-color: var(--ae-action-btn-color);\\n --ae-reset-btn-color-hover: var(--ae-action-btn-color-hover);\\n --ae-reset-btn-transition: all 0.12s;\\n\\n --ae-clear-btn-border-radius: var(--ae-radius-xs);\\n --ae-clear-btn-bg: var(--ae-action-btn-bg);\\n --ae-clear-btn-color: var(--ae-action-btn-color);\\n --ae-clear-btn-transition: all 0.12s;\\n}\\n\\n:root,\\n:host {\\n --ae-size-scale: 1;\\n --ae-size-base: calc(1rem * var(--ae-size-scale)); /* 16px */\\n --ae-size-xl: round(calc(var(--ae-size-l) * 1.125), 1px); /* 23px */\\n --ae-size-l: round(calc(var(--ae-size-m) * 1.125 * 1.125), 1px); /* 20px */\\n --ae-size-m: var(--ae-size-base); /* 16px */\\n --ae-size-s: round(calc(var(--ae-size-m) / 1.125), 1px); /* 14px */\\n --ae-size-xs: round(calc(var(--ae-size-s) / 1.125), 1px); /* 12px */\\n --ae-size-2xs: round(calc(var(--ae-size-xs) / 1.125), 1px); /* 11px */\\n --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */\\n}\\n\\n/* Border-radius tokens - shared across all components */\\n:root,\\n:host {\\n /**\\n * Unified border-radius hook for all components.\\n *\\n *\\n * Usage:\\n * :root { --ae-border-radius: 0; } // global: all components square\\n * :root { --ae-border-radius: 999px; } // global: all components pill\\n * ae-button { --ae-border-radius: 50%; } // scoped: only buttons circular\\n * .sidebar { --ae-border-radius: 8px; } // scoped: everything inside .sidebar\\n *\\n * To restore a component to its own default:\\n * ae-card { --ae-border-radius: initial; }\\n */\\n\\n --ae-radius-square: 0;\\n --ae-radius-xs: 2px;\\n --ae-radius-sm: 4px;\\n --ae-radius-md: 6px;\\n --ae-radius-lg: 8px;\\n --ae-radius-xl: 12px;\\n --ae-radius-pill: 999px;\\n --ae-radius-circle: 50%;\\n}\\n\\n/* Layout tokens - defined on :root so all light DOM elements can use them */\\n:root,\\n:host {\\n --container-max-width: 1280px;\\n --container-padding-x: 1.5rem;\\n}\\n\\n.theme-dark,\\n:root[theme=\\\"dark\\\"],\\n:host([theme=\\\"dark\\\"]),\\n:host-context([theme=\\\"dark\\\"]) {\\n color-scheme: dark;\\n\\n /* Hover / active - slightly gentler on dark backgrounds */\\n --ae-color-mix-hover: black 8%;\\n --ae-color-mix-active: black 16%;\\n\\n /* Gray UI aliases - darker palette steps for elements on dark background */\\n --ae-color-gray-dark: var(--ae-gray-800);\\n --ae-color-gray: var(--ae-gray-700);\\n --ae-color-gray-light: var(--ae-gray-600);\\n --ae-color-gray-lighter: var(--ae-gray-500);\\n --ae-color-gray-lightest: var(--ae-gray-400);\\n\\n /* Secondary - deeper base on dark background */\\n --ae-color-secondary: var(--ae-slate-700);\\n --ae-color-secondary-text: var(--ae-slate-300);\\n\\n /* Text */\\n --ae-color-text-main: white;\\n --ae-color-text-muted: var(--ae-gray-200);\\n --ae-color-text-disabled: var(--ae-gray-500);\\n --ae-color-text-link: var(--ae-blue-300);\\n --ae-color-text-link-hover: var(--ae-blue-200);\\n\\n /* Surfaces */\\n --ae-surface-sunken: var(--ae-gray-900);\\n --ae-surface-base: color-mix(in srgb, var(--ae-gray) 27%, black);\\n --ae-surface-raised: color-mix(in srgb, var(--ae-gray) 34%, black);\\n --ae-surface-overlay: color-mix(in srgb, var(--ae-gray) 38%, black);\\n --ae-color-overlay: rgba(0, 0, 0, 0.6);\\n\\n /* Borders */\\n --ae-border-subtle: rgba(255, 255, 255, 0.08);\\n --ae-border-default: rgba(255, 255, 255, 0.12);\\n --ae-border-hover: rgba(255, 255, 255, 0.20);\\n --ae-border-focus: var(--ae-color-primary);\\n --ae-border-disabled: rgba(255, 255, 255, 0.06);\\n\\n /* Focus ring */\\n --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);\\n --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);\\n\\n /* Subtle intent tokens - dark context (more alpha, lighter text-emphasis) */\\n --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);\\n --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);\\n --ae-color-primary-text-emphasis: var(--ae-blue-300);\\n\\n --ae-color-success-bg-subtle: rgb(from var(--ae-green) r g b / 0.10);\\n --ae-color-success-border-subtle: rgb(from var(--ae-green) r g b / 0.30);\\n --ae-color-success-text-emphasis: var(--ae-green-300);\\n\\n --ae-color-danger-bg-subtle: rgb(from var(--ae-red) r g b / 0.10);\\n --ae-color-danger-border-subtle: rgb(from var(--ae-red) r g b / 0.30);\\n --ae-color-danger-text-emphasis: var(--ae-red-300);\\n\\n --ae-color-warning-bg-subtle: rgb(from var(--ae-yellow) r g b / 0.10);\\n --ae-color-warning-border-subtle: rgb(from var(--ae-yellow) r g b / 0.30);\\n --ae-color-warning-text-emphasis: var(--ae-yellow-300);\\n\\n --ae-color-info-bg-subtle: rgb(from var(--ae-cyan) r g b / 0.10);\\n --ae-color-info-border-subtle: rgb(from var(--ae-cyan) r g b / 0.30);\\n --ae-color-info-text-emphasis: var(--ae-cyan-300);\\n\\n --ae-color-secondary-bg-subtle: rgb(from var(--ae-slate) r g b / 0.10);\\n --ae-color-secondary-border-subtle: rgb(from var(--ae-slate) r g b / 0.30);\\n --ae-color-secondary-text-emphasis: var(--ae-slate-300);\\n\\n --ae-color-light-bg-subtle: rgb(from var(--ae-light) r g b / 0.20);\\n --ae-color-light-border-subtle: rgb(from var(--ae-light) r g b / 0.25);\\n\\n --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);\\n --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);\\n\\n /* Component tokens - dark overrides */\\n --ae-action-btn-bg: var(--ae-color-gray);\\n --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));\\n --ae-action-btn-color: var(--ae-gray-400);\\n --ae-action-btn-color-hover: var(--ae-cyan-300);\\n --ae-clear-btn-bg-hover: color-mix(in srgb, var(--ae-red) 25%, var(--ae-gray-800));\\n --ae-clear-btn-color-hover: var(--ae-red-300);\\n}\\n\"", "export default \":host([size=\\\"xs\\\"]) { font-size: var(--ae-size-xs); }\\n:host([size=\\\"sm\\\"]) { font-size: var(--ae-size-s); }\\n:host([size=\\\"md\\\"]) { font-size: var(--ae-size-m); }\\n:host([size=\\\"lg\\\"]) { font-size: var(--ae-size-l); }\\n:host([size=\\\"xl\\\"]) { font-size: var(--ae-size-xl); }\\n:host([size=\\\"3xs\\\"]) { font-size: var(--ae-size-3xs); }\\n:host([size=\\\"2xs\\\"]) { font-size: var(--ae-size-2xs); }\\n\"", "export default \":host {\\n --field-label-gap: 4px;\\n --field-label-col-gap: 8px;\\n --field-label-width: 100px;\\n --field-label-font-size: 0.875em;\\n --field-label-color: inherit;\\n --field-required-color: var(--ae-red, #dc3545);\\n --field-helper-color: var(--ae-color-text-muted, #6e6e6e);\\n --field-error-color: var(--ae-red, #dc3545);\\n}\\n\\n:host([label]) {\\n display: flex;\\n flex-direction: column;\\n align-items: stretch;\\n gap: var(--field-label-gap);\\n}\\n\\n:host([label][label-placement=\\\"left\\\"]) {\\n display: grid;\\n grid-template-columns: var(--field-label-width) 1fr;\\n column-gap: var(--field-label-col-gap);\\n row-gap: var(--field-label-gap);\\n align-items: center;\\n}\\n\\n:host([label][label-placement=\\\"left\\\"]) .field-label {\\n align-self: center;\\n}\\n\\n:host([label][label-placement=\\\"left\\\"]) .field-helper,\\n:host([label][label-placement=\\\"left\\\"]) .field-error {\\n grid-column: 2;\\n}\\n\\n.field-label {\\n font-size: var(--field-label-font-size);\\n color: var(--field-label-color);\\n user-select: none;\\n line-height: 1.4;\\n}\\n\\n.field-required {\\n color: var(--field-required-color);\\n margin-left: 2px;\\n}\\n\\n.field-helper {\\n font-size: 0.8em;\\n color: var(--field-helper-color);\\n line-height: 1.4;\\n}\\n\\n.field-error {\\n font-size: 0.8em;\\n color: var(--field-error-color);\\n line-height: 1.4;\\n}\\n\\n/* Action controls container (integrated style) */\\n.action-controls {\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n margin-left: calc(-1 * var(--field-action-gap, 4px) - 1px);\\n border: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\\n border-radius: 0 var(--field-action-border-radius, var(--ae-radius-xs)) var(--field-action-border-radius, var(--ae-radius-xs)) 0;\\n overflow: hidden;\\n flex-shrink: 0;\\n transition: border-color 0.12s;\\n background: var(--field-action-bg, var(--ae-surface-base));\\n position: relative;\\n z-index: 1;\\n align-self: stretch;\\n}\\n\\n.action-controls .action-btn {\\n border: none;\\n background: transparent;\\n color: var(--field-action-color, var(--ae-color-text-muted));\\n font-size: 0.875em;\\n line-height: 1;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 0 0.5em;\\n transition: background 0.12s;\\n}\\n\\n.action-controls .action-btn:hover:not(:disabled) {\\n background: var(--field-action-bg-hover, var(--ae-surface-raised));\\n}\\n\\n.action-controls .action-btn:active:not(:disabled) {\\n background: var(--field-action-bg-focus, var(--ae-surface-raised));\\n}\\n\\n.action-controls .action-btn:disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.action-controls .action-btn + .action-btn {\\n border-left: var(--field-action-border-width, 1px) solid var(--field-action-border-color, var(--ae-border-subtle));\\n}\\n\\n.input-container:has(input:focus) ~ .action-controls,\\n.input-container:has(input:focus) .action-controls,\\n.container:has(.trigger.open) ~ .action-controls,\\n.container:has(.trigger.open) .action-controls {\\n border-color: var(--field-action-border-color-focus, var(--ae-border-focus));\\n}\\n\\n.input-container:has(input:hover:not(:focus)) ~ .action-controls,\\n.input-container:has(input:hover:not(:focus)) .action-controls,\\n.container:has(.trigger:hover:not(.disabled)) ~ .action-controls,\\n.container:has(.trigger:hover:not(.disabled)) .action-controls {\\n border-color: var(--field-action-border-color-hover, var(--ae-border-default));\\n}\\n\"", "export default \"/* Action button base styles - shared by clear-btn and reset-btn (standalone mode) */\\n.clear-btn:not(.action-btn),\\n.reset-btn:not(.action-btn) {\\n width: 1.333em;\\n height: 1.333em;\\n border: none;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n line-height: 1;\\n}\\n\\n.clear-btn:not(.action-btn) {\\n border-radius: var(--ae-clear-btn-border-radius);\\n background: var(--ae-clear-btn-bg);\\n color: var(--ae-clear-btn-color);\\n transition: var(--ae-clear-btn-transition);\\n}\\n\\n.reset-btn:not(.action-btn) {\\n border-radius: var(--ae-reset-btn-border-radius);\\n background: var(--ae-reset-btn-bg);\\n color: var(--ae-reset-btn-color);\\n transition: var(--ae-reset-btn-transition);\\n}\\n\\n.clear-btn:not(.action-btn):hover {\\n background: var(--ae-clear-btn-bg-hover);\\n color: var(--ae-clear-btn-color-hover);\\n}\\n\\n.reset-btn:not(.action-btn):hover {\\n background: var(--ae-reset-btn-bg-hover);\\n color: var(--ae-reset-btn-color-hover);\\n}\\n\"", "export default \":host {\\n display: block;\\n flex: 1;\\n min-width: 0;\\n font-size: var(--ae-size-base);\\n --input-field-gap: 4px;\\n --input-font-size: 1em;\\n --input-padding: 0.333em 0.583em;\\n --input-border-width: 1px;\\n --input-transition: border-color 0.12s, background 0.12s;\\n}\\n\\n.input-container {\\n display: flex;\\n align-items: center;\\n gap: var(--input-field-gap);\\n width: 100%;\\n}\\n\\ninput {\\n flex: 1;\\n min-width: 0;\\n font-size: var(--input-font-size);\\n padding: var(--input-padding);\\n border: var(--input-border-width) solid var(--ae-border-subtle);\\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\\n background: var(--ae-surface-base);\\n color: var(--ae-color-text-muted);\\n transition: var(--input-transition);\\n}\\n\\ninput::placeholder {\\n color: var(--ae-color-text-disabled);\\n}\\n\\ninput:focus {\\n outline: none;\\n border-color: var(--ae-border-focus);\\n background: var(--ae-surface-raised);\\n}\\n\\ninput:hover:not(:focus) {\\n border-color: var(--ae-border-default);\\n background: var(--ae-surface-raised);\\n}\\n\\ninput:disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n:host([error]) input {\\n border-color: var(--field-error-color, var(--ae-red));\\n}\\n\\n:host([error]) input:hover:not(:focus),\\n:host([error]) input:focus {\\n border-color: var(--field-error-color, var(--ae-red));\\n}\\n\\n.input-container:has(.action-controls) input {\\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\\n}\\n\""],
5
+ "mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAf,IAAO,eAAQ;;;ACAf,IAAO,sBAAQ;;;ACAf,IAAO,wBAAQ;;;ACAf,IAAO,qBAAQ;;;ALSf,IAAM,YAAN,cAAwB,oBAAW;AAAA,EACvB,eAAwC;AAAA,EAElD,OAAO,QAAe;AAAA,IACpB,aAAa,EAAE,MAAM,OAAO;AAAA,IAC5B,MAAM,EAAE,MAAM,OAAO;AAAA,EACvB;AAAA,EAKA,OAAiB,SAAS,CAAC,mBAAW,cAAS,qBAAe,uBAAiB,kBAAK;AAAA,EAEpF,SAAS;AACP,WAAO,KAAK,CAAC,EAAE,KAAK,MAAM,MAAM;AAC9B,YAAM,KAAK,KAAK,WAAW;AAC3B,WAAK,YAAY,EAAE;AACnB,UAAI,EAAE,WAAW,6BAA6B,GAAG,MAAM;AACrD,aAAK,eAAe,MAAM;AAAA,UACxB;AAAA,UACA,MAAM,KAAK,QAAQ;AAAA,UACnB,aAAa,KAAK,eAAe;AAAA,UACjC,UAAU,QAAQ,KAAK,QAAQ;AAAA,UAC/B,UAAU,KAAK;AAAA,QACjB,CAAC;AAED,aAAK,oBAAoB;AAAA,MAC3B,CAAC;AACD,WAAK,iBAAiB;AACtB,WAAK,YAAY;AAEjB,UAAI,KAAK,gBAAgB,KAAK,SAAS,MAAM;AAC3C,aAAK,aAAa,QAAQ,OAAO,KAAK,KAAK;AAAA,MAC7C;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,OAAqB;AACxC,UAAM,WAAW,OAAO,SAAS,EAAE;AAEnC,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,QAAQ;AAAA,IAC5B;AAAA,EACF;AACF;AAEA,UAAU,OAAO,YAAY;AAQ7B,IAAOA,sBAAQ;",
6
6
  "names": ["text_input_default"]
7
7
  }
package/dist/textarea.cjs CHANGED
@@ -159,7 +159,7 @@ var require_variables = __commonJS({
159
159
  --ae-cyan-800: color-mix(in srgb, var(--ae-cyan) 40%, black);
160
160
  --ae-cyan-900: color-mix(in srgb, var(--ae-cyan) 20%, black);
161
161
 
162
- /* Gray (neutral \u2014 base #6e6e6e) */
162
+ /* Gray (neutral - base #6e6e6e) */
163
163
  --ae-gray-100: color-mix(in srgb, var(--ae-gray) 20%, white);
164
164
  --ae-gray-200: color-mix(in srgb, var(--ae-gray) 40%, white);
165
165
  --ae-gray-300: color-mix(in srgb, var(--ae-gray) 60%, white);
@@ -170,7 +170,7 @@ var require_variables = __commonJS({
170
170
  --ae-gray-800: color-mix(in srgb, var(--ae-gray) 40%, black);
171
171
  --ae-gray-900: color-mix(in srgb, var(--ae-gray) 20%, black);
172
172
 
173
- /* Slate (blue-gray \u2014 base #64748b, used for 'secondary') */
173
+ /* Slate (blue-gray - base #64748b, used for 'secondary') */
174
174
  --ae-slate-100: color-mix(in srgb, var(--ae-slate) 20%, white);
175
175
  --ae-slate-200: color-mix(in srgb, var(--ae-slate) 40%, white);
176
176
  --ae-slate-300: color-mix(in srgb, var(--ae-slate) 60%, white);
@@ -206,7 +206,7 @@ var require_variables = __commonJS({
206
206
 
207
207
  :root,
208
208
  :host {
209
- /* Hover / active mix (light default \u2014 overridden in \xA7 6 dark) */
209
+ /* Hover / active mix (light default - overridden in \xA7 6 dark) */
210
210
  --ae-color-mix-hover: black 10%;
211
211
  --ae-color-mix-active: black 20%;
212
212
 
@@ -240,7 +240,7 @@ var require_variables = __commonJS({
240
240
  --ae-color-info-active: color-mix(in srgb, var(--ae-color-info), var(--ae-color-mix-active));
241
241
  --ae-color-info-disabled: color-mix(in srgb, var(--ae-cyan) 50%, var(--ae-gray-500));
242
242
 
243
- /* Secondary (Slate) \u2014 base differs per theme, overridden in \xA7 6 dark */
243
+ /* Secondary (Slate) - base differs per theme, overridden in \xA7 6 dark */
244
244
  --ae-color-secondary: var(--ae-slate-500);
245
245
  --ae-color-secondary-hover: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-hover));
246
246
  --ae-color-secondary-active: color-mix(in srgb, var(--ae-color-secondary), var(--ae-color-mix-active));
@@ -256,7 +256,7 @@ var require_variables = __commonJS({
256
256
  :host {
257
257
  color-scheme: light;
258
258
 
259
- /* Gray UI aliases \u2014 lighter palette steps for elements on white background */
259
+ /* Gray UI aliases - lighter palette steps for elements on white background */
260
260
  --ae-color-gray-dark: var(--ae-gray-400);
261
261
  --ae-color-gray: var(--ae-gray-300);
262
262
  --ae-color-gray-light: var(--ae-gray-200);
@@ -288,7 +288,7 @@ var require_variables = __commonJS({
288
288
  --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.30);
289
289
  --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.15);
290
290
 
291
- /* Subtle intent tokens \u2014 light context */
291
+ /* Subtle intent tokens - light context */
292
292
  --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.08);
293
293
  --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.40);
294
294
  --ae-color-primary-text-emphasis: var(--ae-blue-700);
@@ -319,7 +319,7 @@ var require_variables = __commonJS({
319
319
  --ae-color-dark-bg-subtle: var(--ae-dark-100); /* opaque on white: ~#d6d8d9 */
320
320
  --ae-color-dark-border-subtle: var(--ae-dark-300); /* opaque on white: ~#85898c */
321
321
 
322
- /* Component tokens \u2014 light defaults */
322
+ /* Component tokens - light defaults */
323
323
  --ae-action-btn-bg: var(--ae-gray-200);
324
324
  --ae-action-btn-bg-hover: var(--ae-color-primary);
325
325
  --ae-action-btn-color: var(--ae-gray-600);
@@ -354,14 +354,12 @@ var require_variables = __commonJS({
354
354
  --ae-size-3xs: round(calc(var(--ae-size-2xs) / 1.125), 1px); /* 10px */
355
355
  }
356
356
 
357
- /* Border-radius tokens \u2014 shared across all components */
357
+ /* Border-radius tokens - shared across all components */
358
358
  :root,
359
359
  :host {
360
360
  /**
361
361
  * Unified border-radius hook for all components.
362
362
  *
363
- * Not set by default \u2014 each component falls back to its own --ae-radius-*
364
- * token (e.g. button \u2192 sm, card \u2192 lg, input \u2192 xs).
365
363
  *
366
364
  * Usage:
367
365
  * :root { --ae-border-radius: 0; } // global: all components square
@@ -383,7 +381,7 @@ var require_variables = __commonJS({
383
381
  --ae-radius-circle: 50%;
384
382
  }
385
383
 
386
- /* Layout tokens \u2014 defined on :root so all light DOM elements can use them */
384
+ /* Layout tokens - defined on :root so all light DOM elements can use them */
387
385
  :root,
388
386
  :host {
389
387
  --container-max-width: 1280px;
@@ -396,18 +394,18 @@ var require_variables = __commonJS({
396
394
  :host-context([theme="dark"]) {
397
395
  color-scheme: dark;
398
396
 
399
- /* Hover / active \u2014 slightly gentler on dark backgrounds */
397
+ /* Hover / active - slightly gentler on dark backgrounds */
400
398
  --ae-color-mix-hover: black 8%;
401
399
  --ae-color-mix-active: black 16%;
402
400
 
403
- /* Gray UI aliases \u2014 darker palette steps for elements on dark background */
401
+ /* Gray UI aliases - darker palette steps for elements on dark background */
404
402
  --ae-color-gray-dark: var(--ae-gray-800);
405
403
  --ae-color-gray: var(--ae-gray-700);
406
404
  --ae-color-gray-light: var(--ae-gray-600);
407
405
  --ae-color-gray-lighter: var(--ae-gray-500);
408
406
  --ae-color-gray-lightest: var(--ae-gray-400);
409
407
 
410
- /* Secondary \u2014 deeper base on dark background */
408
+ /* Secondary - deeper base on dark background */
411
409
  --ae-color-secondary: var(--ae-slate-700);
412
410
  --ae-color-secondary-text: var(--ae-slate-300);
413
411
 
@@ -436,7 +434,7 @@ var require_variables = __commonJS({
436
434
  --ae-focus-ring: rgb(from var(--ae-blue) r g b / 0.25);
437
435
  --ae-focus-ring-sm: rgb(from var(--ae-blue) r g b / 0.10);
438
436
 
439
- /* Subtle intent tokens \u2014 dark context (more alpha, lighter text-emphasis) */
437
+ /* Subtle intent tokens - dark context (more alpha, lighter text-emphasis) */
440
438
  --ae-color-primary-bg-subtle: rgb(from var(--ae-blue) r g b / 0.10);
441
439
  --ae-color-primary-border-subtle: rgb(from var(--ae-blue) r g b / 0.30);
442
440
  --ae-color-primary-text-emphasis: var(--ae-blue-300);
@@ -467,7 +465,7 @@ var require_variables = __commonJS({
467
465
  --ae-color-dark-bg-subtle: rgb(from var(--ae-dark) r g b / 0.30);
468
466
  --ae-color-dark-border-subtle: rgb(from var(--ae-dark) r g b / 0.50);
469
467
 
470
- /* Component tokens \u2014 dark overrides */
468
+ /* Component tokens - dark overrides */
471
469
  --ae-action-btn-bg: var(--ae-color-gray);
472
470
  --ae-action-btn-bg-hover: color-mix(in srgb, var(--ae-blue) 25%, var(--ae-gray-800));
473
471
  --ae-action-btn-color: var(--ae-gray-400);
@@ -496,7 +494,7 @@ var require_field_label = __commonJS({
496
494
  // css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css
497
495
  var require_action_button = __commonJS({
498
496
  "css-inline:/home/runner/work/aeico-components/aeico-components/src/styles/components/action-button.css"(exports2, module2) {
499
- module2.exports = "/* Action button base styles \u2014 shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--ae-clear-btn-border-radius);\n background: var(--ae-clear-btn-bg);\n color: var(--ae-clear-btn-color);\n transition: var(--ae-clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--ae-reset-btn-border-radius);\n background: var(--ae-reset-btn-bg);\n color: var(--ae-reset-btn-color);\n transition: var(--ae-reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--ae-clear-btn-bg-hover);\n color: var(--ae-clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--ae-reset-btn-bg-hover);\n color: var(--ae-reset-btn-color-hover);\n}\n";
497
+ module2.exports = "/* Action button base styles - shared by clear-btn and reset-btn (standalone mode) */\n.clear-btn:not(.action-btn),\n.reset-btn:not(.action-btn) {\n width: 1.333em;\n height: 1.333em;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:not(.action-btn) {\n border-radius: var(--ae-clear-btn-border-radius);\n background: var(--ae-clear-btn-bg);\n color: var(--ae-clear-btn-color);\n transition: var(--ae-clear-btn-transition);\n}\n\n.reset-btn:not(.action-btn) {\n border-radius: var(--ae-reset-btn-border-radius);\n background: var(--ae-reset-btn-bg);\n color: var(--ae-reset-btn-color);\n transition: var(--ae-reset-btn-transition);\n}\n\n.clear-btn:not(.action-btn):hover {\n background: var(--ae-clear-btn-bg-hover);\n color: var(--ae-clear-btn-color-hover);\n}\n\n.reset-btn:not(.action-btn):hover {\n background: var(--ae-reset-btn-bg-hover);\n color: var(--ae-reset-btn-color-hover);\n}\n";
500
498
  }
501
499
  });
502
500
 
@@ -519,19 +517,12 @@ var import_aeico2 = require("aeico");
519
517
 
520
518
  // src/aeico-component.ts
521
519
  var import_aeico = require("aeico");
522
-
523
- // src/utils.ts
524
- function toKebab(str) {
525
- const cleaned = str.replace(/^[_\d]+/, "");
526
- return cleaned.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
527
- }
528
-
529
- // src/aeico-component.ts
530
520
  var TAG_NAME_PREFIX = "ae";
531
521
  var AeicoComponent = class extends import_aeico.AeicoElement {
532
- static register(name) {
533
- const tagName = name || `${TAG_NAME_PREFIX}-${this.tagName || toKebab(this.name)}`;
534
- super.register(tagName);
522
+ static define(name) {
523
+ const prefix = `${TAG_NAME_PREFIX}-`;
524
+ const tagName = name.startsWith(prefix) ? name : `${prefix}${name}`;
525
+ super.define(tagName);
535
526
  }
536
527
  };
537
528
  var aeico_component_default = AeicoComponent;
@@ -686,7 +677,7 @@ var AeicoField = class _AeicoField extends aeico_component_default {
686
677
  }
687
678
  }
688
679
  /**
689
- * Watcher for error property syncs aria-invalid on the field element
680
+ * Watcher for error property - syncs aria-invalid on the field element
690
681
  */
691
682
  onErrorChanged(newValue) {
692
683
  if (this.fieldElement) {
@@ -909,8 +900,7 @@ __decorateElement(_init, 4, "minlength", _minlength_dec, Textarea, _minlength);
909
900
  __decorateElement(_init, 4, "resize", _resize_dec, Textarea, _resize);
910
901
  __decorateElement(_init, 4, "autoResize", _autoResize_dec, Textarea, _autoResize);
911
902
  __decoratorMetadata(_init, Textarea);
912
- __publicField(Textarea, "tagName", "textarea");
913
903
  __publicField(Textarea, "styles", [import_variables.default, import_size.default, import_field_label.default, import_action_button.default, import_textarea.default]);
914
- Textarea.register();
904
+ Textarea.define("textarea");
915
905
  var textarea_default = Textarea;
916
906
  //# sourceMappingURL=textarea.cjs.map