aeico-components 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +0 -0
- package/dist/chunks/action-button.cjs +296 -0
- package/dist/chunks/action-button.cjs.map +1 -0
- package/dist/chunks/action-button.js +297 -0
- package/dist/chunks/action-button.js.map +1 -0
- package/dist/chunks/alert.cjs +4 -4
- package/dist/chunks/alert.cjs.map +1 -1
- package/dist/chunks/alert.js +5 -5
- package/dist/chunks/alert.js.map +1 -1
- package/dist/chunks/badge.cjs +1 -1
- package/dist/chunks/badge.cjs.map +1 -1
- package/dist/chunks/badge.js +2 -2
- package/dist/chunks/badge.js.map +1 -1
- package/dist/chunks/breadcrumb-item.cjs +2 -2
- package/dist/chunks/breadcrumb-item.cjs.map +1 -1
- package/dist/chunks/breadcrumb-item.js +3 -3
- package/dist/chunks/breadcrumb-item.js.map +1 -1
- package/dist/chunks/button-group.cjs +1 -1
- package/dist/chunks/button-group.cjs.map +1 -1
- package/dist/chunks/button-group.js +2 -2
- package/dist/chunks/button-group.js.map +1 -1
- package/dist/chunks/button.cjs +12 -15
- package/dist/chunks/button.cjs.map +1 -1
- package/dist/chunks/button.js +13 -16
- package/dist/chunks/button.js.map +1 -1
- package/dist/chunks/card.cjs +1 -1
- package/dist/chunks/card.cjs.map +1 -1
- package/dist/chunks/card.js +2 -2
- package/dist/chunks/card.js.map +1 -1
- package/dist/chunks/checkbox.cjs +18 -5
- package/dist/chunks/checkbox.cjs.map +1 -1
- package/dist/chunks/checkbox.js +18 -5
- package/dist/chunks/checkbox.js.map +1 -1
- package/dist/chunks/copy-button.cjs +168 -0
- package/dist/chunks/copy-button.cjs.map +1 -0
- package/dist/chunks/copy-button.js +169 -0
- package/dist/chunks/copy-button.js.map +1 -0
- package/dist/chunks/detail.cjs +7 -4
- package/dist/chunks/detail.cjs.map +1 -1
- package/dist/chunks/detail.js +8 -5
- package/dist/chunks/detail.js.map +1 -1
- package/dist/chunks/dialog.cjs +1 -1
- package/dist/chunks/dialog.cjs.map +1 -1
- package/dist/chunks/dialog.js +2 -2
- package/dist/chunks/dialog.js.map +1 -1
- package/dist/chunks/divider.cjs +1 -1
- package/dist/chunks/divider.cjs.map +1 -1
- package/dist/chunks/divider.js +2 -2
- package/dist/chunks/divider.js.map +1 -1
- package/dist/chunks/drawer.cjs +180 -0
- package/dist/chunks/drawer.cjs.map +1 -0
- package/dist/chunks/drawer.js +181 -0
- package/dist/chunks/drawer.js.map +1 -0
- package/dist/chunks/dropdown-button.cjs +2 -2
- package/dist/chunks/dropdown-button.cjs.map +1 -1
- package/dist/chunks/dropdown-button.js +6 -6
- package/dist/chunks/dropdown-button.js.map +1 -1
- package/dist/chunks/icon.cjs +31 -1
- package/dist/chunks/icon.cjs.map +1 -1
- package/dist/chunks/icon.js +32 -2
- package/dist/chunks/icon.js.map +1 -1
- package/dist/chunks/menu.cjs +396 -0
- package/dist/chunks/menu.cjs.map +1 -0
- package/dist/chunks/menu.js +397 -0
- package/dist/chunks/menu.js.map +1 -0
- package/dist/chunks/navbar.cjs +2 -3
- package/dist/chunks/navbar.cjs.map +1 -1
- package/dist/chunks/navbar.js +3 -4
- package/dist/chunks/navbar.js.map +1 -1
- package/dist/chunks/pagination.cjs +475 -0
- package/dist/chunks/pagination.cjs.map +1 -0
- package/dist/chunks/pagination.js +476 -0
- package/dist/chunks/pagination.js.map +1 -0
- package/dist/chunks/progress-bar.cjs +101 -0
- package/dist/chunks/progress-bar.cjs.map +1 -0
- package/dist/chunks/progress-bar.js +102 -0
- package/dist/chunks/progress-bar.js.map +1 -0
- package/dist/chunks/radio.cjs +11 -7
- package/dist/chunks/radio.cjs.map +1 -1
- package/dist/chunks/radio.js +11 -7
- package/dist/chunks/radio.js.map +1 -1
- package/dist/chunks/select.cjs +97 -66
- package/dist/chunks/select.cjs.map +1 -1
- package/dist/chunks/select.js +97 -66
- package/dist/chunks/select.js.map +1 -1
- package/dist/chunks/slider.cjs +9 -46
- package/dist/chunks/slider.cjs.map +1 -1
- package/dist/chunks/slider.js +9 -46
- package/dist/chunks/slider.js.map +1 -1
- package/dist/chunks/spinner.cjs +102 -0
- package/dist/chunks/spinner.cjs.map +1 -0
- package/dist/chunks/spinner.js +103 -0
- package/dist/chunks/spinner.js.map +1 -0
- package/dist/chunks/switch.cjs +110 -16
- package/dist/chunks/switch.cjs.map +1 -1
- package/dist/chunks/switch.js +111 -17
- package/dist/chunks/switch.js.map +1 -1
- package/dist/chunks/tab-panel.cjs +6 -7
- package/dist/chunks/tab-panel.cjs.map +1 -1
- package/dist/chunks/tab-panel.js +7 -8
- package/dist/chunks/tab-panel.js.map +1 -1
- package/dist/chunks/tag.cjs +1 -1
- package/dist/chunks/tag.cjs.map +1 -1
- package/dist/chunks/tag.js +2 -2
- package/dist/chunks/tag.js.map +1 -1
- package/dist/chunks/text-input.cjs +11 -16
- package/dist/chunks/text-input.cjs.map +1 -1
- package/dist/chunks/text-input.js +11 -16
- package/dist/chunks/text-input.js.map +1 -1
- package/dist/chunks/textarea.cjs +137 -0
- package/dist/chunks/textarea.cjs.map +1 -0
- package/dist/chunks/textarea.js +138 -0
- package/dist/chunks/textarea.js.map +1 -0
- package/dist/chunks/tooltip.cjs +293 -0
- package/dist/chunks/tooltip.cjs.map +1 -0
- package/dist/chunks/tooltip.js +294 -0
- package/dist/chunks/tooltip.js.map +1 -0
- package/dist/chunks/tree.cjs +468 -0
- package/dist/chunks/tree.cjs.map +1 -0
- package/dist/chunks/tree.js +469 -0
- package/dist/chunks/tree.js.map +1 -0
- package/dist/chunks/variables.cjs +2 -2
- package/dist/chunks/variables.js +2 -2
- package/dist/copy-button.cjs +6 -0
- package/dist/copy-button.cjs.map +1 -0
- package/dist/copy-button.js +6 -0
- package/dist/copy-button.js.map +1 -0
- package/dist/drawer.cjs +6 -0
- package/dist/drawer.cjs.map +1 -0
- package/dist/drawer.js +6 -0
- package/dist/drawer.js.map +1 -0
- package/dist/dropdown.js +4 -4
- package/dist/index.cjs +186 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +201 -15
- package/dist/index.js.map +1 -1
- package/dist/menu.cjs +6 -0
- package/dist/menu.cjs.map +1 -0
- package/dist/menu.js +6 -0
- package/dist/menu.js.map +1 -0
- package/dist/pagination.cjs +6 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.js +6 -0
- package/dist/pagination.js.map +1 -0
- package/dist/progress-bar.cjs +6 -0
- package/dist/progress-bar.cjs.map +1 -0
- package/dist/progress-bar.js +6 -0
- package/dist/progress-bar.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.cjs.map +1 -1
- package/dist/select.js +2 -2
- package/dist/select.js.map +1 -1
- package/dist/spinner.cjs +6 -0
- package/dist/spinner.cjs.map +1 -0
- package/dist/spinner.js +6 -0
- package/dist/spinner.js.map +1 -0
- package/dist/textarea.cjs +5 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.js +5 -0
- package/dist/textarea.js.map +1 -0
- package/dist/tooltip.cjs +6 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.js +6 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree.cjs +6 -0
- package/dist/tree.cjs.map +1 -0
- package/dist/tree.js +6 -0
- package/dist/tree.js.map +1 -0
- package/dist/types/aeico-field.d.ts +57 -5
- package/dist/types/alert/alert.d.ts +1 -0
- package/dist/types/button/button.d.ts +2 -1
- package/dist/types/checkbox/checkbox.d.ts +5 -5
- package/dist/types/copy-button/copy-button.d.ts +32 -0
- package/dist/types/copy-button/defines.d.ts +1 -0
- package/dist/types/copy-button/index.d.ts +3 -0
- package/dist/types/detail/defines.d.ts +1 -0
- package/dist/types/detail/detail.d.ts +3 -1
- package/dist/types/detail/index.d.ts +1 -1
- package/dist/types/detail-group/detail-group.d.ts +39 -0
- package/dist/types/detail-group/index.d.ts +2 -0
- package/dist/types/drawer/defines.d.ts +1 -0
- package/dist/types/drawer/drawer.d.ts +31 -0
- package/dist/types/drawer/index.d.ts +3 -0
- package/dist/types/icon/built-in-icons.d.ts +1 -0
- package/dist/types/icon/icon.d.ts +1 -0
- package/dist/types/icon/registry.d.ts +8 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/menu/defines.d.ts +15 -0
- package/dist/types/menu/index.d.ts +5 -0
- package/dist/types/menu/menu-item.d.ts +63 -0
- package/dist/types/menu/menu.d.ts +34 -0
- package/dist/types/number-input/index.d.ts +2 -0
- package/dist/types/number-input/number-input.d.ts +35 -0
- package/dist/types/pagination/defines.d.ts +2 -0
- package/dist/types/pagination/index.d.ts +3 -0
- package/dist/types/pagination/pagination.d.ts +77 -0
- package/dist/types/progress-bar/defines.d.ts +1 -0
- package/dist/types/progress-bar/index.d.ts +3 -0
- package/dist/types/progress-bar/progress-bar.d.ts +37 -0
- package/dist/types/radio-group/radio-group.d.ts +1 -1
- package/dist/types/select/select.d.ts +3 -3
- package/dist/types/spinner/defines.d.ts +3 -0
- package/dist/types/spinner/index.d.ts +3 -0
- package/dist/types/spinner/spinner.d.ts +35 -0
- package/dist/types/switch/defines.d.ts +1 -0
- package/dist/types/switch/switch.d.ts +13 -9
- package/dist/types/text-input/text-input.d.ts +0 -4
- package/dist/types/textarea/index.d.ts +1 -0
- package/dist/types/textarea/textarea.d.ts +26 -0
- package/dist/types/tooltip/defines.d.ts +2 -0
- package/dist/types/tooltip/index.d.ts +4 -0
- package/dist/types/tooltip/tooltip.d.ts +48 -0
- package/dist/types/tree/defines.d.ts +23 -0
- package/dist/types/tree/index.d.ts +5 -0
- package/dist/types/tree/tree-item.d.ts +54 -0
- package/dist/types/tree/tree.d.ts +64 -0
- package/package.json +6 -6
- package/src/aeico-field.ts +154 -15
- package/src/alert/alert.ts +3 -2
- package/src/button/button.ts +11 -13
- package/src/checkbox/checkbox.ts +21 -6
- package/src/copy-button/copy-button.ts +146 -0
- package/src/copy-button/defines.ts +5 -0
- package/src/copy-button/index.ts +3 -0
- package/src/detail/defines.ts +1 -0
- package/src/detail/detail.ts +5 -1
- package/src/detail/index.ts +1 -1
- package/src/detail-group/detail-group.ts +104 -0
- package/src/detail-group/index.ts +2 -0
- package/src/drawer/defines.ts +1 -0
- package/src/drawer/drawer.ts +157 -0
- package/src/drawer/index.ts +3 -0
- package/src/icon/built-in-icons.ts +21 -0
- package/src/icon/icon.ts +1 -0
- package/src/icon/registry.ts +22 -0
- package/src/index.ts +32 -0
- package/src/menu/defines.ts +17 -0
- package/src/menu/index.ts +5 -0
- package/src/menu/menu-item.ts +315 -0
- package/src/menu/menu.ts +81 -0
- package/src/navbar/navbar.ts +1 -3
- package/src/number-input/index.ts +2 -0
- package/src/number-input/number-input.ts +137 -0
- package/src/pagination/defines.ts +2 -0
- package/src/pagination/index.ts +3 -0
- package/src/pagination/pagination.ts +310 -0
- package/src/progress-bar/defines.ts +8 -0
- package/src/progress-bar/index.ts +3 -0
- package/src/progress-bar/progress-bar.ts +80 -0
- package/src/radio-group/radio-group.ts +12 -5
- package/src/select/select.ts +112 -71
- package/src/slider/slider.ts +9 -2
- package/src/spinner/defines.ts +12 -0
- package/src/spinner/index.ts +3 -0
- package/src/spinner/spinner.ts +81 -0
- package/src/styles/components/action-button.css +37 -0
- package/src/styles/components/checkbox.css +4 -26
- package/src/styles/components/copy-button.css +119 -0
- package/src/styles/components/detail-group.css +10 -0
- package/src/styles/components/detail.css +10 -1
- package/src/styles/components/drawer.css +161 -0
- package/src/styles/components/field-label.css +120 -0
- package/src/styles/components/menu-item.css +168 -0
- package/src/styles/components/menu.css +17 -0
- package/src/styles/components/number-input.css +167 -0
- package/src/styles/components/pagination.css +205 -0
- package/src/styles/components/progress-bar.css +44 -0
- package/src/styles/components/radio-group.css +0 -23
- package/src/styles/components/select.css +12 -39
- package/src/styles/components/slider.css +0 -42
- package/src/styles/components/spinner.css +80 -0
- package/src/styles/components/switch.css +68 -19
- package/src/styles/components/tab-panel.css +1 -1
- package/src/styles/components/tabs.css +1 -0
- package/src/styles/components/text-input.css +7 -45
- package/src/styles/components/textarea.css +75 -0
- package/src/styles/components/tooltip.css +103 -0
- package/src/styles/components/tree-item.css +152 -0
- package/src/styles/components/tree.css +10 -0
- package/src/styles/layout.css +457 -25
- package/src/switch/defines.ts +1 -0
- package/src/switch/switch.ts +65 -16
- package/src/tabs/tab.ts +1 -1
- package/src/tabs/tabs.ts +1 -2
- package/src/text-input/text-input.ts +10 -15
- package/src/textarea/index.ts +1 -0
- package/src/textarea/textarea.ts +107 -0
- package/src/tooltip/defines.ts +11 -0
- package/src/tooltip/index.ts +4 -0
- package/src/tooltip/tooltip.ts +183 -0
- package/src/tree/defines.ts +26 -0
- package/src/tree/index.ts +5 -0
- package/src/tree/tree-item.ts +258 -0
- package/src/tree/tree.ts +237 -0
- package/dist/chunks/aeico-field.cjs +0 -179
- package/dist/chunks/aeico-field.cjs.map +0 -1
- package/dist/chunks/aeico-field.js +0 -180
- package/dist/chunks/aeico-field.js.map +0 -1
package/dist/chunks/button.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { v as variables } from "./variables.js";
|
|
2
2
|
import { s as sizeCSS } from "./size.js";
|
|
3
3
|
import { c as colorCSS } from "./color.js";
|
|
4
4
|
import { A as AeicoComponent } from "./aeico-component.js";
|
|
@@ -262,12 +262,12 @@ class Button extends (_a = AeicoComponent, _color_dec = [prop({ type: String })]
|
|
|
262
262
|
__publicField(this, "type", __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
|
|
263
263
|
__publicField(this, "active", __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
|
|
264
264
|
__publicField(this, "block", __runInitializers(_init, 32, this)), __runInitializers(_init, 35, this);
|
|
265
|
-
__publicField(this, "
|
|
265
|
+
__publicField(this, "_buttonElement", null);
|
|
266
|
+
__publicField(this, "_slotElement", null);
|
|
266
267
|
__publicField(this, "_autoAriaLabel", false);
|
|
267
268
|
__publicField(this, "_handleSlotChange", () => {
|
|
268
269
|
var _a2;
|
|
269
|
-
const
|
|
270
|
-
const nodes = (slot == null ? void 0 : slot.assignedNodes()) ?? [];
|
|
270
|
+
const nodes = ((_a2 = this._slotElement) == null ? void 0 : _a2.assignedNodes()) ?? [];
|
|
271
271
|
const elements = nodes.filter((n) => n.nodeType === Node.ELEMENT_NODE);
|
|
272
272
|
const hasText = nodes.some(
|
|
273
273
|
(n) => n.nodeType === Node.TEXT_NODE && n.textContent.trim() !== ""
|
|
@@ -289,14 +289,11 @@ class Button extends (_a = AeicoComponent, _color_dec = [prop({ type: String })]
|
|
|
289
289
|
});
|
|
290
290
|
}
|
|
291
291
|
onMounted() {
|
|
292
|
-
var _a2;
|
|
293
|
-
const slot = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector("slot:not([name])");
|
|
294
|
-
if (slot) this.listen(slot, "slotchange", this._handleSlotChange);
|
|
295
292
|
this._handleSlotChange();
|
|
296
293
|
}
|
|
297
294
|
render() {
|
|
298
295
|
return html(({ button, slot }) => {
|
|
299
|
-
this.
|
|
296
|
+
this._buttonElement = button(
|
|
300
297
|
{
|
|
301
298
|
type: this.type || "button",
|
|
302
299
|
disabled: this.disabled,
|
|
@@ -305,7 +302,7 @@ class Button extends (_a = AeicoComponent, _color_dec = [prop({ type: String })]
|
|
|
305
302
|
"aria-disabled": this.disabled
|
|
306
303
|
},
|
|
307
304
|
() => {
|
|
308
|
-
slot();
|
|
305
|
+
this._slotElement = slot({ "@slotchange": this._handleSlotChange });
|
|
309
306
|
}
|
|
310
307
|
);
|
|
311
308
|
});
|
|
@@ -314,24 +311,24 @@ class Button extends (_a = AeicoComponent, _color_dec = [prop({ type: String })]
|
|
|
314
311
|
* Programmatically click the button
|
|
315
312
|
*/
|
|
316
313
|
click() {
|
|
317
|
-
if (!this.disabled && this.
|
|
318
|
-
this.
|
|
314
|
+
if (!this.disabled && this._buttonElement) {
|
|
315
|
+
this._buttonElement.click();
|
|
319
316
|
}
|
|
320
317
|
}
|
|
321
318
|
/**
|
|
322
319
|
* Focus the button
|
|
323
320
|
*/
|
|
324
321
|
focus() {
|
|
325
|
-
if (this.
|
|
326
|
-
this.
|
|
322
|
+
if (this._buttonElement) {
|
|
323
|
+
this._buttonElement.focus();
|
|
327
324
|
}
|
|
328
325
|
}
|
|
329
326
|
/**
|
|
330
327
|
* Blur the button
|
|
331
328
|
*/
|
|
332
329
|
blur() {
|
|
333
|
-
if (this.
|
|
334
|
-
this.
|
|
330
|
+
if (this._buttonElement) {
|
|
331
|
+
this._buttonElement.blur();
|
|
335
332
|
}
|
|
336
333
|
}
|
|
337
334
|
}
|
|
@@ -344,7 +341,7 @@ __decorateElement(_init, 5, "type", _type_dec, Button);
|
|
|
344
341
|
__decorateElement(_init, 5, "active", _active_dec, Button);
|
|
345
342
|
__decorateElement(_init, 5, "block", _block_dec, Button);
|
|
346
343
|
__decoratorMetadata(_init, Button);
|
|
347
|
-
__publicField(Button, "styles", [
|
|
344
|
+
__publicField(Button, "styles", [variables, sizeCSS, colorCSS, buttonStyle]);
|
|
348
345
|
Button.register();
|
|
349
346
|
export {
|
|
350
347
|
Button as B
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sources":["../../src/button/button.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport buttonStyle from '../styles/components/button.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { ButtonColor, ButtonSize, ButtonVariant } from './defines';\nimport { prop } from 'aeico';\n\n/**\n * Button Component\n *\n * A customizable button component with multiple variants and sizes.\n * Supports theme and internationalization through mixins.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const button = Button.create({\n * variant: 'primary',\n * size: 'md'\n * })\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-button variant=\"primary\" size=\"md\">Save</ae-button>\n * <ae-button variant=\"danger\" size=\"sm\">Delete</ae-button>\n * <ae-button variant=\"subtle\">Cancel</ae-button>\n * ```\n */\nclass Button extends AeicoComponent {\n protected static styles = [styleVariables, sizeCSS, colorCSS, buttonStyle];\n\n @prop({ type: String })\n color?: ButtonColor;\n\n @prop({ type: String })\n variant?: ButtonVariant;\n\n @prop({ type: String })\n size?: ButtonSize;\n\n @prop({ type: Boolean })\n disabled?: boolean;\n\n @prop({ type: String })\n type?: 'button' | 'submit' | 'reset';\n\n @prop({ type: Boolean })\n active?: boolean;\n\n @prop({ type: Boolean })\n block?: boolean;\n\n private
|
|
1
|
+
{"version":3,"file":"button.js","sources":["../../src/button/button.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport buttonStyle from '../styles/components/button.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { ButtonColor, ButtonSize, ButtonVariant } from './defines';\nimport { prop } from 'aeico';\n\n/**\n * Button Component\n *\n * A customizable button component with multiple variants and sizes.\n * Supports theme and internationalization through mixins.\n *\n * @example\n * ```typescript\n * // Using the static create method\n * const button = Button.create({\n * variant: 'primary',\n * size: 'md'\n * })\n * ```\n *\n * @example\n * ```html\n * <!-- Using as Web Component -->\n * <ae-button variant=\"primary\" size=\"md\">Save</ae-button>\n * <ae-button variant=\"danger\" size=\"sm\">Delete</ae-button>\n * <ae-button variant=\"subtle\">Cancel</ae-button>\n * ```\n */\nclass Button extends AeicoComponent {\n protected static styles = [styleVariables, sizeCSS, colorCSS, buttonStyle];\n\n @prop({ type: String })\n color?: ButtonColor;\n\n @prop({ type: String })\n variant?: ButtonVariant;\n\n @prop({ type: String })\n size?: ButtonSize;\n\n @prop({ type: Boolean })\n disabled?: boolean;\n\n @prop({ type: String })\n type?: 'button' | 'submit' | 'reset';\n\n @prop({ type: Boolean })\n active?: boolean;\n\n @prop({ type: Boolean })\n block?: boolean;\n\n private _buttonElement: HTMLButtonElement | null = null;\n private _slotElement: HTMLSlotElement | null = null;\n private _autoAriaLabel = false;\n\n protected onMounted() {\n this._handleSlotChange();\n }\n\n private _handleSlotChange = () => {\n const nodes = this._slotElement?.assignedNodes() ?? [];\n // Icon-only: exactly one element (ae-icon) and no meaningful text nodes\n const elements = nodes.filter((n): n is Element => n.nodeType === Node.ELEMENT_NODE);\n const hasText = nodes.some(\n (n) => n.nodeType === Node.TEXT_NODE && n.textContent!.trim() !== '',\n );\n const isIconOnly =\n !hasText && elements.length === 1 && elements[0].tagName.toLowerCase() === 'ae-icon';\n\n if (isIconOnly) {\n this.setAttribute('icon-only', '');\n if (!this.hasAttribute('aria-label') || this._autoAriaLabel) {\n this.setAttribute('aria-label', elements[0].getAttribute('name') ?? '');\n this._autoAriaLabel = true;\n }\n } else {\n this.removeAttribute('icon-only');\n if (this._autoAriaLabel) {\n this.removeAttribute('aria-label');\n this._autoAriaLabel = false;\n }\n }\n };\n\n protected render() {\n return html(({ button, slot }) => {\n this._buttonElement = button(\n {\n type: this.type || 'button',\n disabled: this.disabled,\n part: 'button',\n 'aria-pressed': this.active,\n 'aria-disabled': this.disabled,\n },\n () => {\n this._slotElement = slot({ '@slotchange': this._handleSlotChange });\n },\n );\n });\n }\n\n /**\n * Programmatically click the button\n */\n click() {\n if (!this.disabled && this._buttonElement) {\n this._buttonElement.click();\n }\n }\n\n /**\n * Focus the button\n */\n focus() {\n if (this._buttonElement) {\n this._buttonElement.focus();\n }\n }\n\n /**\n * Blur the button\n */\n blur() {\n if (this._buttonElement) {\n this._buttonElement.blur();\n }\n }\n}\n\nButton.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-button': Button;\n }\n}\n\nexport default Button;\nexport type ButtonProps = InferProps<typeof Button>;\n"],"names":["_a","styleVariables"],"mappings":"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"}
|
package/dist/chunks/card.cjs
CHANGED
|
@@ -87,7 +87,7 @@ __decorateElement(_init, 4, "color", _color_dec, Card, _color);
|
|
|
87
87
|
__decorateElement(_init, 4, "variant", _variant_dec, Card, _variant);
|
|
88
88
|
__decoratorMetadata(_init, Card);
|
|
89
89
|
__publicField(Card, "tagName", "card");
|
|
90
|
-
__publicField(Card, "styles", [variables.
|
|
90
|
+
__publicField(Card, "styles", [variables.variables, color.colorCSS, cardStyle]);
|
|
91
91
|
Card.register();
|
|
92
92
|
exports.Card = Card;
|
|
93
93
|
//# sourceMappingURL=card.cjs.map
|
package/dist/chunks/card.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.cjs","sources":["../../src/card/card.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport cardStyle from '../styles/components/card.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { CardVariant, CardColor } from './defines';\nimport { prop } from 'aeico';\n\nclass Card extends AeicoComponent {\n static tagName = 'card';\n\n protected static styles = [styleVariables, colorCSS, cardStyle];\n\n @prop({ type: String })\n accessor color: CardColor = 'default';\n\n @prop({ type: String })\n accessor variant: CardVariant = 'filled';\n\n protected render() {\n return html(({ div, header, footer, slot }) => {\n div({ className: 'card', part: 'card' }, () => {\n header({ className: 'header', part: 'header' }, () => {\n slot({ name: 'header', '@slotchange': (e: Event) => this._onHeaderSlotChange(e) });\n });\n div({ className: 'body', part: 'body' }, () => {\n slot();\n });\n footer({ className: 'footer', part: 'footer' }, () => {\n slot({ name: 'footer', '@slotchange': (e: Event) => this._onFooterSlotChange(e) });\n });\n });\n });\n }\n\n private _onHeaderSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-header', slot.assignedNodes({ flatten: true }).length > 0);\n }\n\n private _onFooterSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-footer', slot.assignedNodes({ flatten: true }).length > 0);\n }\n}\n\nCard.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-card': Card;\n }\n}\n\nexport default Card;\nexport type CardProps = InferProps<typeof Card>;\n"],"names":["AeicoComponent","prop","html","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,YAAA,IAAA,OAAA,QAAA;AASA,MAAM,cAAa,KAAAA,+BAKjB,aAAA,CAACC,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,eAAA,CAACA,WAAK,EAAE,MAAM,OAAA,CAAQ,IARL,IAAe;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAME,iBAAA,MAAS,QAAmB,kBAA5B,OAAA,GAAA,MAA4B,SAAA,CAAA,GAA5B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,UAAuB,kBAAhC,OAAA,IAAA,MAAgC,QAAA,CAAA,GAAhC,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,WAAOC,MAAAA,KAAK,CAAC,EAAE,KAAK,QAAQ,QAAQ,WAAW;AAC7C,UAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AACD,YAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAA;AAAA,QACF,CAAC;AACD,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AACF;AApCA,QAAA,iBAAA,EAAA;AAMW,SAAA,oBAAA,QAAA;AAGA,WAAA,oBAAA,QAAA;AAHT,kBAAA,OAAA,GAAS,SADT,YALI,MAMK,MAAA;AAGT,kBAAA,OAAA,GAAS,WADT,cARI,MASK,QAAA;AATX,oBAAA,OAAM,IAAA;AACJ,cADI,MACG,WAAU,MAAA;AAEjB,cAHI,MAGa,UAAS,CAACC,UAAAA,
|
|
1
|
+
{"version":3,"file":"card.cjs","sources":["../../src/card/card.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport cardStyle from '../styles/components/card.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { CardVariant, CardColor } from './defines';\nimport { prop } from 'aeico';\n\nclass Card extends AeicoComponent {\n static tagName = 'card';\n\n protected static styles = [styleVariables, colorCSS, cardStyle];\n\n @prop({ type: String })\n accessor color: CardColor = 'default';\n\n @prop({ type: String })\n accessor variant: CardVariant = 'filled';\n\n protected render() {\n return html(({ div, header, footer, slot }) => {\n div({ className: 'card', part: 'card' }, () => {\n header({ className: 'header', part: 'header' }, () => {\n slot({ name: 'header', '@slotchange': (e: Event) => this._onHeaderSlotChange(e) });\n });\n div({ className: 'body', part: 'body' }, () => {\n slot();\n });\n footer({ className: 'footer', part: 'footer' }, () => {\n slot({ name: 'footer', '@slotchange': (e: Event) => this._onFooterSlotChange(e) });\n });\n });\n });\n }\n\n private _onHeaderSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-header', slot.assignedNodes({ flatten: true }).length > 0);\n }\n\n private _onFooterSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-footer', slot.assignedNodes({ flatten: true }).length > 0);\n }\n}\n\nCard.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-card': Card;\n }\n}\n\nexport default Card;\nexport type CardProps = InferProps<typeof Card>;\n"],"names":["AeicoComponent","prop","html","styleVariables","colorCSS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,YAAA,IAAA,OAAA,QAAA;AASA,MAAM,cAAa,KAAAA,+BAKjB,aAAA,CAACC,MAAAA,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,eAAA,CAACA,WAAK,EAAE,MAAM,OAAA,CAAQ,IARL,IAAe;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAME,iBAAA,MAAS,QAAmB,kBAA5B,OAAA,GAAA,MAA4B,SAAA,CAAA,GAA5B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,UAAuB,kBAAhC,OAAA,IAAA,MAAgC,QAAA,CAAA,GAAhC,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,WAAOC,MAAAA,KAAK,CAAC,EAAE,KAAK,QAAQ,QAAQ,WAAW;AAC7C,UAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AACD,YAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAA;AAAA,QACF,CAAC;AACD,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AACF;AApCA,QAAA,iBAAA,EAAA;AAMW,SAAA,oBAAA,QAAA;AAGA,WAAA,oBAAA,QAAA;AAHT,kBAAA,OAAA,GAAS,SADT,YALI,MAMK,MAAA;AAGT,kBAAA,OAAA,GAAS,WADT,cARI,MASK,QAAA;AATX,oBAAA,OAAM,IAAA;AACJ,cADI,MACG,WAAU,MAAA;AAEjB,cAHI,MAGa,UAAS,CAACC,UAAAA,WAAgBC,MAAAA,UAAU,SAAS,CAAA;AAmChE,KAAK,SAAA;;"}
|
package/dist/chunks/card.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { v as variables } from "./variables.js";
|
|
2
2
|
import { c as colorCSS } from "./color.js";
|
|
3
3
|
import { A as AeicoComponent } from "./aeico-component.js";
|
|
4
4
|
import { prop, html } from "aeico";
|
|
@@ -86,7 +86,7 @@ __decorateElement(_init, 4, "color", _color_dec, Card, _color);
|
|
|
86
86
|
__decorateElement(_init, 4, "variant", _variant_dec, Card, _variant);
|
|
87
87
|
__decoratorMetadata(_init, Card);
|
|
88
88
|
__publicField(Card, "tagName", "card");
|
|
89
|
-
__publicField(Card, "styles", [
|
|
89
|
+
__publicField(Card, "styles", [variables, colorCSS, cardStyle]);
|
|
90
90
|
Card.register();
|
|
91
91
|
export {
|
|
92
92
|
Card as C
|
package/dist/chunks/card.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../src/card/card.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport cardStyle from '../styles/components/card.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { CardVariant, CardColor } from './defines';\nimport { prop } from 'aeico';\n\nclass Card extends AeicoComponent {\n static tagName = 'card';\n\n protected static styles = [styleVariables, colorCSS, cardStyle];\n\n @prop({ type: String })\n accessor color: CardColor = 'default';\n\n @prop({ type: String })\n accessor variant: CardVariant = 'filled';\n\n protected render() {\n return html(({ div, header, footer, slot }) => {\n div({ className: 'card', part: 'card' }, () => {\n header({ className: 'header', part: 'header' }, () => {\n slot({ name: 'header', '@slotchange': (e: Event) => this._onHeaderSlotChange(e) });\n });\n div({ className: 'body', part: 'body' }, () => {\n slot();\n });\n footer({ className: 'footer', part: 'footer' }, () => {\n slot({ name: 'footer', '@slotchange': (e: Event) => this._onFooterSlotChange(e) });\n });\n });\n });\n }\n\n private _onHeaderSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-header', slot.assignedNodes({ flatten: true }).length > 0);\n }\n\n private _onFooterSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-footer', slot.assignedNodes({ flatten: true }).length > 0);\n }\n}\n\nCard.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-card': Card;\n }\n}\n\nexport default Card;\nexport type CardProps = InferProps<typeof Card>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,YAAA,IAAA,OAAA,QAAA;AASA,MAAM,cAAa,KAAA,gBAKjB,aAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,eAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,IARL,IAAe;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAME,iBAAA,MAAS,QAAmB,kBAA5B,OAAA,GAAA,MAA4B,SAAA,CAAA,GAA5B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,UAAuB,kBAAhC,OAAA,IAAA,MAAgC,QAAA,CAAA,GAAhC,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,QAAQ,WAAW;AAC7C,UAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AACD,YAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAA;AAAA,QACF,CAAC;AACD,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AACF;AApCA,QAAA,iBAAA,EAAA;AAMW,SAAA,oBAAA,QAAA;AAGA,WAAA,oBAAA,QAAA;AAHT,kBAAA,OAAA,GAAS,SADT,YALI,MAMK,MAAA;AAGT,kBAAA,OAAA,GAAS,WADT,cARI,MASK,QAAA;AATX,oBAAA,OAAM,IAAA;AACJ,cADI,MACG,WAAU,MAAA;AAEjB,cAHI,MAGa,UAAS,
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../src/card/card.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport cardStyle from '../styles/components/card.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type { CardVariant, CardColor } from './defines';\nimport { prop } from 'aeico';\n\nclass Card extends AeicoComponent {\n static tagName = 'card';\n\n protected static styles = [styleVariables, colorCSS, cardStyle];\n\n @prop({ type: String })\n accessor color: CardColor = 'default';\n\n @prop({ type: String })\n accessor variant: CardVariant = 'filled';\n\n protected render() {\n return html(({ div, header, footer, slot }) => {\n div({ className: 'card', part: 'card' }, () => {\n header({ className: 'header', part: 'header' }, () => {\n slot({ name: 'header', '@slotchange': (e: Event) => this._onHeaderSlotChange(e) });\n });\n div({ className: 'body', part: 'body' }, () => {\n slot();\n });\n footer({ className: 'footer', part: 'footer' }, () => {\n slot({ name: 'footer', '@slotchange': (e: Event) => this._onFooterSlotChange(e) });\n });\n });\n });\n }\n\n private _onHeaderSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-header', slot.assignedNodes({ flatten: true }).length > 0);\n }\n\n private _onFooterSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this.toggleAttribute('has-footer', slot.assignedNodes({ flatten: true }).length > 0);\n }\n}\n\nCard.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-card': Card;\n }\n}\n\nexport default Card;\nexport type CardProps = InferProps<typeof Card>;\n"],"names":["styleVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,YAAA,IAAA,OAAA,QAAA;AASA,MAAM,cAAa,KAAA,gBAKjB,aAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,eAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,IARL,IAAe;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAME,iBAAA,MAAS,QAAmB,kBAA5B,OAAA,GAAA,MAA4B,SAAA,CAAA,GAA5B,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,UAAuB,kBAAhC,OAAA,IAAA,MAAgC,QAAA,CAAA,GAAhC,kBAAA,OAAA,IAAA,IAAA;AAAA,EAAA;AAAA,EAEU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,QAAQ,WAAW;AAC7C,UAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AACD,YAAI,EAAE,WAAW,QAAQ,MAAM,OAAA,GAAU,MAAM;AAC7C,eAAA;AAAA,QACF,CAAC;AACD,eAAO,EAAE,WAAW,UAAU,MAAM,SAAA,GAAY,MAAM;AACpD,eAAK,EAAE,MAAM,UAAU,eAAe,CAAC,MAAa,KAAK,oBAAoB,CAAC,GAAG;AAAA,QACnF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AAAA,EAEQ,oBAAoB,GAAU;AACpC,UAAM,OAAO,EAAE;AACf,SAAK,gBAAgB,cAAc,KAAK,cAAc,EAAE,SAAS,KAAA,CAAM,EAAE,SAAS,CAAC;AAAA,EACrF;AACF;AApCA,QAAA,iBAAA,EAAA;AAMW,SAAA,oBAAA,QAAA;AAGA,WAAA,oBAAA,QAAA;AAHT,kBAAA,OAAA,GAAS,SADT,YALI,MAMK,MAAA;AAGT,kBAAA,OAAA,GAAS,WADT,cARI,MASK,QAAA;AATX,oBAAA,OAAM,IAAA;AACJ,cADI,MACG,WAAU,MAAA;AAEjB,cAHI,MAGa,UAAS,CAACA,WAAgB,UAAU,SAAS,CAAA;AAmChE,KAAK,SAAA;"}
|
package/dist/chunks/checkbox.cjs
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
const
|
|
5
|
+
const actionButton = require("./action-button.cjs");
|
|
6
6
|
const aeico = require("aeico");
|
|
7
7
|
const variables = require("./variables.cjs");
|
|
8
8
|
const size = require("./size.cjs");
|
|
9
9
|
const color = require("./color.cjs");
|
|
10
|
-
const styles = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/*
|
|
11
|
-
class Checkbox extends
|
|
10
|
+
const styles = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Error state */\n:host([error]) .field-input {\n outline: 2px solid var(--field-error-color, var(--red));\n outline-offset: 1px;\n}\n";
|
|
11
|
+
class Checkbox extends actionButton.AeicoField {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
__publicField(this, "fieldElement", null);
|
|
@@ -46,18 +46,24 @@ class Checkbox extends aeicoField.AeicoField {
|
|
|
46
46
|
}
|
|
47
47
|
render() {
|
|
48
48
|
return aeico.html(({ div, input }) => {
|
|
49
|
-
|
|
49
|
+
const id = this.getFieldId();
|
|
50
|
+
this.renderLabel(id);
|
|
51
|
+
div({ className: "checkbox-container field-body", variant: this.variant }, () => {
|
|
50
52
|
div({ className: "checkbox-wrapper" }, () => {
|
|
51
53
|
this.fieldElement = input({
|
|
54
|
+
id,
|
|
52
55
|
type: "checkbox",
|
|
53
56
|
className: "field-input",
|
|
54
57
|
checked: Boolean(this.checked),
|
|
55
58
|
disabled: Boolean(this.disabled),
|
|
59
|
+
required: Boolean(this.required),
|
|
56
60
|
"@change": this.boundOnChange
|
|
57
61
|
});
|
|
58
62
|
});
|
|
59
63
|
this.renderActionButtons();
|
|
60
64
|
});
|
|
65
|
+
this.renderHelperText();
|
|
66
|
+
this.renderError();
|
|
61
67
|
});
|
|
62
68
|
}
|
|
63
69
|
}
|
|
@@ -67,7 +73,14 @@ __publicField(Checkbox, "props", {
|
|
|
67
73
|
defaultChecked: { type: Boolean },
|
|
68
74
|
variant: { type: String }
|
|
69
75
|
});
|
|
70
|
-
__publicField(Checkbox, "styles", [
|
|
76
|
+
__publicField(Checkbox, "styles", [
|
|
77
|
+
variables.variables,
|
|
78
|
+
size.sizeCSS,
|
|
79
|
+
color.colorCSS,
|
|
80
|
+
actionButton.fieldLabelCSS,
|
|
81
|
+
actionButton.actionButtonCSS,
|
|
82
|
+
styles
|
|
83
|
+
]);
|
|
71
84
|
Checkbox.register();
|
|
72
85
|
exports.Checkbox = Checkbox;
|
|
73
86
|
//# sourceMappingURL=checkbox.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.cjs","sources":["../../src/checkbox/checkbox.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport styles from '../styles/components/checkbox.css?inline';\nimport { CheckboxVariant } from './defines';\n\nclass Checkbox extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'checkbox';\n\n static props: Props = {\n checked: { type: Boolean },\n defaultChecked: { type: Boolean },\n variant: { type: String },\n };\n\n declare checked?: boolean;\n declare defaultChecked?: boolean;\n declare variant?: CheckboxVariant;\n\n protected static styles = [styleVariables
|
|
1
|
+
{"version":3,"file":"checkbox.cjs","sources":["../../src/checkbox/checkbox.ts"],"sourcesContent":["import AeicoField, { type FieldAction } from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport styles from '../styles/components/checkbox.css?inline';\nimport { CheckboxVariant } from './defines';\n\nclass Checkbox extends AeicoField<boolean> {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'checkbox';\n\n static props: Props = {\n checked: { type: Boolean },\n defaultChecked: { type: Boolean },\n variant: { type: String },\n };\n\n declare checked?: boolean;\n declare defaultChecked?: boolean;\n declare variant?: CheckboxVariant;\n\n protected static styles = [\n styleVariables,\n sizeCSS,\n colorCSS,\n fieldLabelCSS,\n actionButtonCSS,\n styles,\n ];\n\n protected getValue(): boolean {\n return this.fieldElement?.checked ?? false;\n }\n\n protected writeValue(checked: boolean): void {\n if (this.fieldElement) {\n this.fieldElement.checked = Boolean(checked);\n }\n }\n\n protected getEventPayload(checked: boolean, oldChecked: boolean, action: FieldAction) {\n return { checked, oldChecked, action };\n }\n\n protected setValue(checked: boolean, options?: { silent?: boolean; action?: FieldAction }): void {\n const oldChecked = this.getValue();\n this.checked = checked;\n this.writeValue(checked);\n if (options?.silent === false) {\n this.emit('change', {\n detail: this.getEventPayload(checked, oldChecked, options.action || 'change'),\n });\n }\n }\n\n public reset(checked?: boolean, options?: { silent?: boolean }): void {\n this.setValue(checked !== undefined ? checked : (this.defaultChecked ?? false), {\n ...options,\n action: 'reset',\n });\n }\n\n public clear(options?: { silent?: boolean }): void {\n this.setValue(false, { ...options, action: 'clear' });\n }\n\n render() {\n return html(({ div, input }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'checkbox-container field-body', variant: this.variant }, () => {\n div({ className: 'checkbox-wrapper' }, () => {\n this.fieldElement = input({\n id,\n type: 'checkbox',\n className: 'field-input',\n checked: Boolean(this.checked),\n disabled: Boolean(this.disabled),\n required: Boolean(this.required),\n '@change': this.boundOnChange,\n });\n });\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n });\n }\n}\n\nCheckbox.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-checkbox': Checkbox;\n }\n}\n\nexport default Checkbox;\nexport type CheckboxProps = InferProps<typeof Checkbox>;\n"],"names":["AeicoField","html","styleVariables","sizeCSS","colorCSS","fieldLabelCSS","actionButtonCSS"],"mappings":";;;;;;;;;;AAWA,MAAM,iBAAiBA,aAAAA,WAAoB;AAAA,EAA3C;AAAA;AACY,wCAAwC;AAAA;AAAA,EAuBxC,WAAoB;;AAC5B,aAAO,UAAK,iBAAL,mBAAmB,YAAW;AAAA,EACvC;AAAA,EAEU,WAAW,SAAwB;AAC3C,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,UAAU,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EAEU,gBAAgB,SAAkB,YAAqB,QAAqB;AACpF,WAAO,EAAE,SAAS,YAAY,OAAA;AAAA,EAChC;AAAA,EAEU,SAAS,SAAkB,SAA4D;AAC/F,UAAM,aAAa,KAAK,SAAA;AACxB,SAAK,UAAU;AACf,SAAK,WAAW,OAAO;AACvB,SAAI,mCAAS,YAAW,OAAO;AAC7B,WAAK,KAAK,UAAU;AAAA,QAClB,QAAQ,KAAK,gBAAgB,SAAS,YAAY,QAAQ,UAAU,QAAQ;AAAA,MAAA,CAC7E;AAAA,IACH;AAAA,EACF;AAAA,EAEO,MAAM,SAAmB,SAAsC;AACpE,SAAK,SAAS,YAAY,SAAY,UAAW,KAAK,kBAAkB,OAAQ;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ;AAAA,IAAA,CACT;AAAA,EACH;AAAA,EAEO,MAAM,SAAsC;AACjD,SAAK,SAAS,OAAO,EAAE,GAAG,SAAS,QAAQ,SAAS;AAAA,EACtD;AAAA,EAEA,SAAS;AACP,WAAOC,WAAK,CAAC,EAAE,KAAK,YAAY;AAC9B,YAAM,KAAK,KAAK,WAAA;AAChB,WAAK,YAAY,EAAE;AACnB,UAAI,EAAE,WAAW,iCAAiC,SAAS,KAAK,QAAA,GAAW,MAAM;AAC/E,YAAI,EAAE,WAAW,mBAAA,GAAsB,MAAM;AAC3C,eAAK,eAAe,MAAM;AAAA,YACxB;AAAA,YACA,MAAM;AAAA,YACN,WAAW;AAAA,YACX,SAAS,QAAQ,KAAK,OAAO;AAAA,YAC7B,UAAU,QAAQ,KAAK,QAAQ;AAAA,YAC/B,UAAU,QAAQ,KAAK,QAAQ;AAAA,YAC/B,WAAW,KAAK;AAAA,UAAA,CACjB;AAAA,QACH,CAAC;AACD,aAAK,oBAAA;AAAA,MACP,CAAC;AACD,WAAK,iBAAA;AACL,WAAK,YAAA;AAAA,IACP,CAAC;AAAA,EACH;AACF;AA/EE,cAHI,UAGG,WAAU;AAEjB,cALI,UAKG,SAAe;AAAA,EACpB,SAAS,EAAE,MAAM,QAAA;AAAA,EACjB,gBAAgB,EAAE,MAAM,QAAA;AAAA,EACxB,SAAS,EAAE,MAAM,OAAA;AAAO;AAO1B,cAfI,UAea,UAAS;AAAA,EACxBC,UAAAA;AAAAA,EACAC,KAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAC,aAAAA;AAAAA,EACAC,aAAAA;AAAAA,EACA;AAAA;AA+DJ,SAAS,SAAA;;"}
|
package/dist/chunks/checkbox.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { A as AeicoField } from "./
|
|
4
|
+
import { A as AeicoField, f as fieldLabelCSS, a as actionButtonCSS } from "./action-button.js";
|
|
5
5
|
import { html } from "aeico";
|
|
6
|
-
import {
|
|
6
|
+
import { v as variables } from "./variables.js";
|
|
7
7
|
import { s as sizeCSS } from "./size.js";
|
|
8
8
|
import { c as colorCSS } from "./color.js";
|
|
9
|
-
const styles = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/*
|
|
9
|
+
const styles = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Error state */\n:host([error]) .field-input {\n outline: 2px solid var(--field-error-color, var(--red));\n outline-offset: 1px;\n}\n";
|
|
10
10
|
class Checkbox extends AeicoField {
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
@@ -45,18 +45,24 @@ class Checkbox extends AeicoField {
|
|
|
45
45
|
}
|
|
46
46
|
render() {
|
|
47
47
|
return html(({ div, input }) => {
|
|
48
|
-
|
|
48
|
+
const id = this.getFieldId();
|
|
49
|
+
this.renderLabel(id);
|
|
50
|
+
div({ className: "checkbox-container field-body", variant: this.variant }, () => {
|
|
49
51
|
div({ className: "checkbox-wrapper" }, () => {
|
|
50
52
|
this.fieldElement = input({
|
|
53
|
+
id,
|
|
51
54
|
type: "checkbox",
|
|
52
55
|
className: "field-input",
|
|
53
56
|
checked: Boolean(this.checked),
|
|
54
57
|
disabled: Boolean(this.disabled),
|
|
58
|
+
required: Boolean(this.required),
|
|
55
59
|
"@change": this.boundOnChange
|
|
56
60
|
});
|
|
57
61
|
});
|
|
58
62
|
this.renderActionButtons();
|
|
59
63
|
});
|
|
64
|
+
this.renderHelperText();
|
|
65
|
+
this.renderError();
|
|
60
66
|
});
|
|
61
67
|
}
|
|
62
68
|
}
|
|
@@ -66,7 +72,14 @@ __publicField(Checkbox, "props", {
|
|
|
66
72
|
defaultChecked: { type: Boolean },
|
|
67
73
|
variant: { type: String }
|
|
68
74
|
});
|
|
69
|
-
__publicField(Checkbox, "styles", [
|
|
75
|
+
__publicField(Checkbox, "styles", [
|
|
76
|
+
variables,
|
|
77
|
+
sizeCSS,
|
|
78
|
+
colorCSS,
|
|
79
|
+
fieldLabelCSS,
|
|
80
|
+
actionButtonCSS,
|
|
81
|
+
styles
|
|
82
|
+
]);
|
|
70
83
|
Checkbox.register();
|
|
71
84
|
export {
|
|
72
85
|
Checkbox as C
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sources":["../../src/checkbox/checkbox.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport styles from '../styles/components/checkbox.css?inline';\nimport { CheckboxVariant } from './defines';\n\nclass Checkbox extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'checkbox';\n\n static props: Props = {\n checked: { type: Boolean },\n defaultChecked: { type: Boolean },\n variant: { type: String },\n };\n\n declare checked?: boolean;\n declare defaultChecked?: boolean;\n declare variant?: CheckboxVariant;\n\n protected static styles = [styleVariables
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../src/checkbox/checkbox.ts"],"sourcesContent":["import AeicoField, { type FieldAction } from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport styles from '../styles/components/checkbox.css?inline';\nimport { CheckboxVariant } from './defines';\n\nclass Checkbox extends AeicoField<boolean> {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'checkbox';\n\n static props: Props = {\n checked: { type: Boolean },\n defaultChecked: { type: Boolean },\n variant: { type: String },\n };\n\n declare checked?: boolean;\n declare defaultChecked?: boolean;\n declare variant?: CheckboxVariant;\n\n protected static styles = [\n styleVariables,\n sizeCSS,\n colorCSS,\n fieldLabelCSS,\n actionButtonCSS,\n styles,\n ];\n\n protected getValue(): boolean {\n return this.fieldElement?.checked ?? false;\n }\n\n protected writeValue(checked: boolean): void {\n if (this.fieldElement) {\n this.fieldElement.checked = Boolean(checked);\n }\n }\n\n protected getEventPayload(checked: boolean, oldChecked: boolean, action: FieldAction) {\n return { checked, oldChecked, action };\n }\n\n protected setValue(checked: boolean, options?: { silent?: boolean; action?: FieldAction }): void {\n const oldChecked = this.getValue();\n this.checked = checked;\n this.writeValue(checked);\n if (options?.silent === false) {\n this.emit('change', {\n detail: this.getEventPayload(checked, oldChecked, options.action || 'change'),\n });\n }\n }\n\n public reset(checked?: boolean, options?: { silent?: boolean }): void {\n this.setValue(checked !== undefined ? checked : (this.defaultChecked ?? false), {\n ...options,\n action: 'reset',\n });\n }\n\n public clear(options?: { silent?: boolean }): void {\n this.setValue(false, { ...options, action: 'clear' });\n }\n\n render() {\n return html(({ div, input }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'checkbox-container field-body', variant: this.variant }, () => {\n div({ className: 'checkbox-wrapper' }, () => {\n this.fieldElement = input({\n id,\n type: 'checkbox',\n className: 'field-input',\n checked: Boolean(this.checked),\n disabled: Boolean(this.disabled),\n required: Boolean(this.required),\n '@change': this.boundOnChange,\n });\n });\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n });\n }\n}\n\nCheckbox.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-checkbox': Checkbox;\n }\n}\n\nexport default Checkbox;\nexport type CheckboxProps = InferProps<typeof Checkbox>;\n"],"names":["styleVariables"],"mappings":";;;;;;;;;AAWA,MAAM,iBAAiB,WAAoB;AAAA,EAA3C;AAAA;AACY,wCAAwC;AAAA;AAAA,EAuBxC,WAAoB;;AAC5B,aAAO,UAAK,iBAAL,mBAAmB,YAAW;AAAA,EACvC;AAAA,EAEU,WAAW,SAAwB;AAC3C,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,UAAU,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EAEU,gBAAgB,SAAkB,YAAqB,QAAqB;AACpF,WAAO,EAAE,SAAS,YAAY,OAAA;AAAA,EAChC;AAAA,EAEU,SAAS,SAAkB,SAA4D;AAC/F,UAAM,aAAa,KAAK,SAAA;AACxB,SAAK,UAAU;AACf,SAAK,WAAW,OAAO;AACvB,SAAI,mCAAS,YAAW,OAAO;AAC7B,WAAK,KAAK,UAAU;AAAA,QAClB,QAAQ,KAAK,gBAAgB,SAAS,YAAY,QAAQ,UAAU,QAAQ;AAAA,MAAA,CAC7E;AAAA,IACH;AAAA,EACF;AAAA,EAEO,MAAM,SAAmB,SAAsC;AACpE,SAAK,SAAS,YAAY,SAAY,UAAW,KAAK,kBAAkB,OAAQ;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ;AAAA,IAAA,CACT;AAAA,EACH;AAAA,EAEO,MAAM,SAAsC;AACjD,SAAK,SAAS,OAAO,EAAE,GAAG,SAAS,QAAQ,SAAS;AAAA,EACtD;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAC9B,YAAM,KAAK,KAAK,WAAA;AAChB,WAAK,YAAY,EAAE;AACnB,UAAI,EAAE,WAAW,iCAAiC,SAAS,KAAK,QAAA,GAAW,MAAM;AAC/E,YAAI,EAAE,WAAW,mBAAA,GAAsB,MAAM;AAC3C,eAAK,eAAe,MAAM;AAAA,YACxB;AAAA,YACA,MAAM;AAAA,YACN,WAAW;AAAA,YACX,SAAS,QAAQ,KAAK,OAAO;AAAA,YAC7B,UAAU,QAAQ,KAAK,QAAQ;AAAA,YAC/B,UAAU,QAAQ,KAAK,QAAQ;AAAA,YAC/B,WAAW,KAAK;AAAA,UAAA,CACjB;AAAA,QACH,CAAC;AACD,aAAK,oBAAA;AAAA,MACP,CAAC;AACD,WAAK,iBAAA;AACL,WAAK,YAAA;AAAA,IACP,CAAC;AAAA,EACH;AACF;AA/EE,cAHI,UAGG,WAAU;AAEjB,cALI,UAKG,SAAe;AAAA,EACpB,SAAS,EAAE,MAAM,QAAA;AAAA,EACjB,gBAAgB,EAAE,MAAM,QAAA;AAAA,EACxB,SAAS,EAAE,MAAM,OAAA;AAAO;AAO1B,cAfI,UAea,UAAS;AAAA,EACxBA;AAAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AA+DJ,SAAS,SAAA;"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const variables = require("./variables.cjs");
|
|
3
|
+
const size = require("./size.cjs");
|
|
4
|
+
const color = require("./color.cjs");
|
|
5
|
+
const aeicoComponent = require("./aeico-component.cjs");
|
|
6
|
+
const aeico = require("aeico");
|
|
7
|
+
const copyButtonStyle = ':host {\n display: inline-block;\n --btn-solid-bg: var(--color-solid);\n --btn-solid-bg-hover: var(--color-solid-hover);\n --btn-solid-bg-active: var(--color-solid-active);\n --btn-solid-color: var(--color-on-solid);\n --btn-solid-color-hover: var(--color-on-solid-hover);\n --btn-border: var(--color-border);\n --btn-border-hover: var(--color-border-hover);\n --btn-accent: var(--color-accent);\n --btn-accent-hover: var(--color-accent-hover);\n --btn-subtle-bg: var(--color-subtle);\n --btn-subtle-bg-hover: var(--color-subtle-hover);\n}\n\nbutton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-family: inherit;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n outline: none;\n position: relative;\n padding: 0.429em 0.571em;\n font-size: 1em;\n line-height: 1.5;\n border-radius: 4px;\n height: 2.286em;\n width: 2.286em;\n min-width: unset;\n\n background: var(--btn-solid-bg);\n border: 1px solid var(--btn-solid-bg);\n color: var(--btn-solid-color);\n}\n\nbutton:focus { outline: none; }\nbutton:active { transform: translateY(1px); }\n\nbutton:hover:not(:disabled) {\n background: var(--btn-solid-bg-hover);\n border-color: var(--btn-border-hover);\n color: var(--btn-solid-color-hover, var(--btn-solid-color));\n}\n\nbutton:active:not(:disabled) { background: var(--btn-solid-bg-active); }\n\nbutton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Hide the fallback-text slot */\nslot { display: none; }\n\n/* Icon visibility */\n.icon-copy,\n.icon-check {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.15s ease, transform 0.15s ease;\n}\n\n.icon-copy { opacity: 1; transform: scale(1); }\n.icon-check { opacity: 0; transform: scale(0.6); }\n\n:host([copied]) .icon-copy { opacity: 0; transform: scale(0.6); }\n:host([copied]) .icon-check { opacity: 1; transform: scale(1); }\n\n/* Variants */\n:host([variant="outlined"]) button {\n background: transparent;\n border-color: var(--btn-border);\n color: var(--btn-accent);\n}\n:host([variant="outlined"]) button:hover:not(:disabled) {\n background: var(--btn-subtle-bg);\n border-color: var(--btn-border-hover);\n color: var(--btn-accent-hover);\n}\n\n:host([variant="faint"]) button {\n background: var(--btn-subtle-bg);\n border-color: transparent;\n color: var(--btn-accent);\n}\n:host([variant="faint"]) button:hover:not(:disabled) {\n background: var(--btn-subtle-bg-hover);\n color: var(--btn-accent-hover);\n}\n\n:host([variant="subtle"]) button {\n background: transparent;\n border-color: transparent;\n color: var(--btn-accent);\n}\n:host([variant="subtle"]) button:hover:not(:disabled) {\n background: var(--btn-subtle-bg);\n color: var(--btn-accent-hover);\n}\n\n:host([variant="text"]) button {\n background: transparent;\n border-color: transparent;\n color: var(--btn-accent);\n}\n:host([variant="text"]) button:hover:not(:disabled) {\n color: var(--btn-accent-hover);\n}\n';
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
12
|
+
var __typeError = (msg) => {
|
|
13
|
+
throw TypeError(msg);
|
|
14
|
+
};
|
|
15
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
16
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
17
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
18
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
19
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
20
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
21
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
22
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
26
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
27
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
28
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
29
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
30
|
+
return __privateGet(this, extra);
|
|
31
|
+
}, set [name](x) {
|
|
32
|
+
return __privateSet(this, extra, x);
|
|
33
|
+
} }, name));
|
|
34
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
35
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
36
|
+
{
|
|
37
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
38
|
+
access.get = (x) => x[name];
|
|
39
|
+
access.set = (x, y) => x[name] = y;
|
|
40
|
+
}
|
|
41
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
42
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
43
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
44
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
45
|
+
}
|
|
46
|
+
return desc && __defProp(target, name, desc), target;
|
|
47
|
+
};
|
|
48
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
49
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
50
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
51
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
52
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
53
|
+
var _tooltipPlacement_dec, _tooltipCopied_dec, _tooltip_dec, _duration_dec, _disabled_dec, _size_dec, _variant_dec, _color_dec, _text_dec, _a, _init, _text, _color, _variant, _size, _disabled, _duration, _tooltip, _tooltipCopied, _tooltipPlacement;
|
|
54
|
+
class CopyButton extends (_a = aeicoComponent.AeicoComponent, _text_dec = [aeico.prop({ type: String })], _color_dec = [aeico.prop({ type: String })], _variant_dec = [aeico.prop({ type: String })], _size_dec = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _duration_dec = [aeico.prop({ type: Number })], _tooltip_dec = [aeico.prop({ type: String })], _tooltipCopied_dec = [aeico.prop({ type: String })], _tooltipPlacement_dec = [aeico.prop({ type: String })], _a) {
|
|
55
|
+
constructor() {
|
|
56
|
+
super(...arguments);
|
|
57
|
+
__privateAdd(this, _text, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
|
|
58
|
+
__privateAdd(this, _color, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
|
|
59
|
+
__privateAdd(this, _variant, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
|
|
60
|
+
__privateAdd(this, _size, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
|
|
61
|
+
__privateAdd(this, _disabled, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
|
|
62
|
+
__privateAdd(this, _duration, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
|
|
63
|
+
__privateAdd(this, _tooltip, __runInitializers(_init, 32, this, "Copy")), __runInitializers(_init, 35, this);
|
|
64
|
+
__privateAdd(this, _tooltipCopied, __runInitializers(_init, 36, this, "Copied!")), __runInitializers(_init, 39, this);
|
|
65
|
+
__privateAdd(this, _tooltipPlacement, __runInitializers(_init, 40, this, "top")), __runInitializers(_init, 43, this);
|
|
66
|
+
__publicField(this, "_slotElement", null);
|
|
67
|
+
__publicField(this, "_tooltipEl", null);
|
|
68
|
+
__publicField(this, "_resetTimer", null);
|
|
69
|
+
__publicField(this, "_handleClick", () => {
|
|
70
|
+
if (this.disabled) return;
|
|
71
|
+
const textToCopy = this._getTextToCopy();
|
|
72
|
+
void navigator.clipboard.writeText(textToCopy).then(() => {
|
|
73
|
+
this.setAttribute("copied", "");
|
|
74
|
+
if (this._tooltipEl) {
|
|
75
|
+
this._tooltipEl.content = this.tooltipCopied;
|
|
76
|
+
this._tooltipEl.open = true;
|
|
77
|
+
}
|
|
78
|
+
if (this._resetTimer !== null) {
|
|
79
|
+
clearTimeout(this._resetTimer);
|
|
80
|
+
}
|
|
81
|
+
const duration = this.duration ?? 2e3;
|
|
82
|
+
this._resetTimer = setTimeout(() => {
|
|
83
|
+
this.removeAttribute("copied");
|
|
84
|
+
if (this._tooltipEl) {
|
|
85
|
+
this._tooltipEl.content = this.tooltip;
|
|
86
|
+
this._tooltipEl.open = false;
|
|
87
|
+
}
|
|
88
|
+
this._resetTimer = null;
|
|
89
|
+
}, duration);
|
|
90
|
+
this.dispatchEvent(
|
|
91
|
+
new CustomEvent("copy", {
|
|
92
|
+
bubbles: true,
|
|
93
|
+
composed: true,
|
|
94
|
+
detail: { text: textToCopy }
|
|
95
|
+
})
|
|
96
|
+
);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
_getTextToCopy() {
|
|
101
|
+
var _a2;
|
|
102
|
+
if (this.text != null) return this.text;
|
|
103
|
+
const nodes = ((_a2 = this._slotElement) == null ? void 0 : _a2.assignedNodes({ flatten: true })) ?? [];
|
|
104
|
+
return nodes.filter((n) => n.nodeType === Node.TEXT_NODE).map((n) => n.textContent ?? "").join("").trim();
|
|
105
|
+
}
|
|
106
|
+
onUnmounted() {
|
|
107
|
+
if (this._resetTimer !== null) {
|
|
108
|
+
clearTimeout(this._resetTimer);
|
|
109
|
+
this._resetTimer = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
render() {
|
|
113
|
+
return aeico.html(({ aeTooltip, button, span, slot, aeIcon }) => {
|
|
114
|
+
this._tooltipEl = aeTooltip(
|
|
115
|
+
{
|
|
116
|
+
content: this.tooltip,
|
|
117
|
+
placement: this.tooltipPlacement,
|
|
118
|
+
disabled: this.disabled
|
|
119
|
+
},
|
|
120
|
+
() => {
|
|
121
|
+
button(
|
|
122
|
+
{
|
|
123
|
+
type: "button",
|
|
124
|
+
disabled: this.disabled,
|
|
125
|
+
part: "button",
|
|
126
|
+
"aria-label": this.tooltip,
|
|
127
|
+
"aria-disabled": this.disabled,
|
|
128
|
+
"@click": this._handleClick
|
|
129
|
+
},
|
|
130
|
+
() => {
|
|
131
|
+
span({ className: "icon-copy" }, () => {
|
|
132
|
+
aeIcon({ name: "copy" });
|
|
133
|
+
});
|
|
134
|
+
span({ className: "icon-check" }, () => {
|
|
135
|
+
aeIcon({ name: "check" });
|
|
136
|
+
});
|
|
137
|
+
this._slotElement = slot();
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
_init = __decoratorStart(_a);
|
|
146
|
+
_text = /* @__PURE__ */ new WeakMap();
|
|
147
|
+
_color = /* @__PURE__ */ new WeakMap();
|
|
148
|
+
_variant = /* @__PURE__ */ new WeakMap();
|
|
149
|
+
_size = /* @__PURE__ */ new WeakMap();
|
|
150
|
+
_disabled = /* @__PURE__ */ new WeakMap();
|
|
151
|
+
_duration = /* @__PURE__ */ new WeakMap();
|
|
152
|
+
_tooltip = /* @__PURE__ */ new WeakMap();
|
|
153
|
+
_tooltipCopied = /* @__PURE__ */ new WeakMap();
|
|
154
|
+
_tooltipPlacement = /* @__PURE__ */ new WeakMap();
|
|
155
|
+
__decorateElement(_init, 4, "text", _text_dec, CopyButton, _text);
|
|
156
|
+
__decorateElement(_init, 4, "color", _color_dec, CopyButton, _color);
|
|
157
|
+
__decorateElement(_init, 4, "variant", _variant_dec, CopyButton, _variant);
|
|
158
|
+
__decorateElement(_init, 4, "size", _size_dec, CopyButton, _size);
|
|
159
|
+
__decorateElement(_init, 4, "disabled", _disabled_dec, CopyButton, _disabled);
|
|
160
|
+
__decorateElement(_init, 4, "duration", _duration_dec, CopyButton, _duration);
|
|
161
|
+
__decorateElement(_init, 4, "tooltip", _tooltip_dec, CopyButton, _tooltip);
|
|
162
|
+
__decorateElement(_init, 4, "tooltipCopied", _tooltipCopied_dec, CopyButton, _tooltipCopied);
|
|
163
|
+
__decorateElement(_init, 4, "tooltipPlacement", _tooltipPlacement_dec, CopyButton, _tooltipPlacement);
|
|
164
|
+
__decoratorMetadata(_init, CopyButton);
|
|
165
|
+
__publicField(CopyButton, "styles", [variables.variables, size.sizeCSS, color.colorCSS, copyButtonStyle]);
|
|
166
|
+
CopyButton.register();
|
|
167
|
+
exports.CopyButton = CopyButton;
|
|
168
|
+
//# sourceMappingURL=copy-button.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-button.cjs","sources":["../../src/copy-button/copy-button.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport copyButtonStyle from '../styles/components/copy-button.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { prop } from 'aeico';\n// Ensure ae-icon and ae-tooltip are registered\nimport '../icon/icon';\nimport '../tooltip/tooltip';\nimport type Tooltip from '../tooltip/tooltip';\nimport type { TooltipPlacement } from '../tooltip/defines';\nimport type { CopyButtonColor, CopyButtonSize, CopyButtonVariant } from './defines';\n\nclass CopyButton extends AeicoComponent {\n protected static styles = [styleVariables, sizeCSS, colorCSS, copyButtonStyle];\n\n @prop({ type: String })\n accessor text: string | undefined;\n\n @prop({ type: String })\n accessor color: CopyButtonColor | undefined;\n\n @prop({ type: String })\n accessor variant: CopyButtonVariant | undefined;\n\n @prop({ type: String })\n accessor size: CopyButtonSize | undefined;\n\n @prop({ type: Boolean })\n accessor disabled: boolean | undefined;\n\n @prop({ type: Number })\n accessor duration: number | undefined;\n\n @prop({ type: String })\n accessor tooltip: string = 'Copy';\n\n @prop({ type: String })\n accessor tooltipCopied: string = 'Copied!';\n\n @prop({ type: String })\n accessor tooltipPlacement: TooltipPlacement = 'top';\n\n private _slotElement: HTMLSlotElement | null = null;\n private _tooltipEl: Tooltip | null = null;\n private _resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n private _getTextToCopy(): string {\n if (this.text != null) return this.text;\n const nodes = this._slotElement?.assignedNodes({ flatten: true }) ?? [];\n return nodes\n .filter((n) => n.nodeType === Node.TEXT_NODE)\n .map((n) => n.textContent ?? '')\n .join('')\n .trim();\n }\n\n private _handleClick = () => {\n if (this.disabled) return;\n\n const textToCopy = this._getTextToCopy();\n\n void navigator.clipboard.writeText(textToCopy).then(() => {\n this.setAttribute('copied', '');\n\n if (this._tooltipEl) {\n this._tooltipEl.content = this.tooltipCopied;\n this._tooltipEl.open = true;\n }\n\n if (this._resetTimer !== null) {\n clearTimeout(this._resetTimer);\n }\n const duration = this.duration ?? 2000;\n this._resetTimer = setTimeout(() => {\n this.removeAttribute('copied');\n if (this._tooltipEl) {\n this._tooltipEl.content = this.tooltip;\n this._tooltipEl.open = false;\n }\n this._resetTimer = null;\n }, duration);\n\n this.dispatchEvent(\n new CustomEvent('copy', {\n bubbles: true,\n composed: true,\n detail: { text: textToCopy },\n }),\n );\n });\n };\n\n protected onUnmounted() {\n if (this._resetTimer !== null) {\n clearTimeout(this._resetTimer);\n this._resetTimer = null;\n }\n }\n\n protected render() {\n return html(({ aeTooltip, button, span, slot, aeIcon }) => {\n this._tooltipEl = aeTooltip(\n {\n content: this.tooltip,\n placement: this.tooltipPlacement,\n disabled: this.disabled,\n },\n () => {\n button(\n {\n type: 'button',\n disabled: this.disabled,\n part: 'button',\n 'aria-label': this.tooltip,\n 'aria-disabled': this.disabled,\n '@click': this._handleClick,\n },\n () => {\n span({ className: 'icon-copy' }, () => {\n aeIcon({ name: 'copy' });\n });\n span({ className: 'icon-check' }, () => {\n aeIcon({ name: 'check' });\n });\n this._slotElement = slot();\n },\n );\n },\n );\n });\n }\n}\n\nCopyButton.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-copy-button': CopyButton;\n }\n}\n\nexport default CopyButton;\nexport type CopyButtonProps = InferProps<typeof CopyButton>;\n"],"names":["AeicoComponent","prop","_a","html","styleVariables","sizeCSS","colorCSS"],"mappings":"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"}
|