labx-components 1.0.0 → 1.1.0
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/angular-lib/ng-package.json +7 -0
- package/angular-lib/package.json +8 -0
- package/angular-lib/src/lib/angular-component-lib/utils.ts +65 -0
- package/angular-lib/src/lib/components.ts +94 -0
- package/{dist-angular/index.js → angular-lib/src/lib/index.ts} +5 -3
- package/angular-lib/src/lib/text-value-accessor.ts +24 -0
- package/angular-lib/src/lib/value-accessor.ts +39 -0
- package/angular-lib/src/public-api.ts +2 -0
- package/angular-lib/tsconfig.lib.json +24 -0
- package/dist/labx-components/index-DYSVGjqR.js +4585 -0
- package/dist/labx-components/index-DYSVGjqR.js.map +1 -0
- package/dist/labx-components/index.esm.js +18 -1
- package/dist/labx-components/index.esm.js.map +1 -0
- package/dist/labx-components/labx-button.entry.js +34 -0
- package/dist/labx-components/labx-button.entry.js.map +1 -0
- package/dist/labx-components/labx-components.css +67 -1
- package/dist/labx-components/labx-components.esm.js +50 -1
- package/dist/labx-components/labx-components.esm.js.map +1 -0
- package/dist/labx-components/labx-icon.entry.js +24 -0
- package/dist/labx-components/labx-icon.entry.js.map +1 -0
- package/dist/{esm/labx-button_3.entry.js → labx-components/labx-input.entry.js} +6 -49
- package/dist/labx-components/labx-input.entry.js.map +1 -0
- package/dist-angular/fesm2022/labx-components-angular.mjs +170 -0
- package/dist-angular/fesm2022/labx-components-angular.mjs.map +1 -0
- package/dist-angular/types/labx-components-angular.d.ts +46 -0
- package/dist-angular/types/labx-components-angular.d.ts.map +1 -0
- package/package.json +11 -7
- package/dist/cjs/index-eATbt1kz.js +0 -1519
- package/dist/cjs/index.cjs.js +0 -7
- package/dist/cjs/labx-button_3.cjs.entry.js +0 -104
- package/dist/cjs/labx-components.cjs.js +0 -24
- package/dist/cjs/loader.cjs.js +0 -12
- package/dist/collection/collection-manifest.json +0 -15
- package/dist/collection/components/labx-button/labx-button.css +0 -74
- package/dist/collection/components/labx-button/labx-button.js +0 -135
- package/dist/collection/components/labx-icon/labx-icon.css +0 -26
- package/dist/collection/components/labx-icon/labx-icon.js +0 -87
- package/dist/collection/components/labx-input/labx-input.css +0 -117
- package/dist/collection/components/labx-input/labx-input.js +0 -183
- package/dist/collection/index.js +0 -10
- package/dist/collection/utils/utils.js +0 -3
- package/dist/collection/utils/utils.unit.test.js +0 -16
- package/dist/components/index.js +0 -1
- package/dist/components/labx-button.js +0 -1
- package/dist/components/labx-icon.js +0 -1
- package/dist/components/labx-input.js +0 -1
- package/dist/components/p-Dv2D1yhm.js +0 -1
- package/dist/esm/index-ByAEYo1n.js +0 -1510
- package/dist/esm/index.js +0 -5
- package/dist/esm/labx-components.js +0 -20
- package/dist/esm/loader.js +0 -10
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/labx-components/p-42d69adf.entry.js +0 -1
- package/dist/labx-components/p-ByAEYo1n.js +0 -2
- package/dist-angular/angular-component-lib/utils.d.ts +0 -9
- package/dist-angular/angular-component-lib/utils.js +0 -58
- package/dist-angular/components.d.ts +0 -33
- package/dist-angular/components.js +0 -92
- package/dist-angular/index.d.ts +0 -2
- package/dist-angular/text-value-accessor.d.ts +0 -5
- package/dist-angular/text-value-accessor.js +0 -31
- package/dist-angular/value-accessor.d.ts +0 -15
- package/dist-angular/value-accessor.js +0 -44
package/dist/cjs/index.cjs.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-eATbt1kz.js');
|
|
4
|
-
|
|
5
|
-
const labxButtonCss = () => `:host{display:inline-block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border:2px solid transparent;border-radius:8px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease}.btn:focus-visible{outline:3px solid var(--color-primary-light);outline-offset:2px}.btn--primary{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-bg-surface)}.btn--primary:hover:not(:disabled){background-color:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn--secondary{background-color:transparent;border-color:var(--color-primary);color:var(--color-primary)}.btn--secondary:hover:not(:disabled){background-color:var(--color-primary-light)}.btn--danger{background-color:var(--color-danger);border-color:var(--color-danger);color:var(--color-bg-surface)}.btn--danger:hover:not(:disabled){background-color:var(--color-danger-light);border-color:var(--color-danger);color:var(--color-danger)}.btn:disabled{background-color:var(--color-bg-subtle);border-color:var(--color-border);color:var(--color-disabled);cursor:not-allowed}`;
|
|
6
|
-
|
|
7
|
-
const LabxButton = class {
|
|
8
|
-
constructor(hostRef) {
|
|
9
|
-
index.registerInstance(this, hostRef);
|
|
10
|
-
this.labxClick = index.createEvent(this, "labxClick");
|
|
11
|
-
}
|
|
12
|
-
/** Texto del botón */
|
|
13
|
-
label = 'Button';
|
|
14
|
-
/** Estilo visual: primary | secondary | danger */
|
|
15
|
-
variant = 'primary';
|
|
16
|
-
/** Deshabilita el botón */
|
|
17
|
-
disabled = false;
|
|
18
|
-
/** Tipo HTML del botón */
|
|
19
|
-
type = 'button';
|
|
20
|
-
/** Se emite cuando el botón es clickeado */
|
|
21
|
-
labxClick;
|
|
22
|
-
handleClick() {
|
|
23
|
-
if (!this.disabled) {
|
|
24
|
-
this.labxClick.emit();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
render() {
|
|
28
|
-
return (index.h(index.Host, { key: '76d607e0f7612ef141b30d884166181402e4e6a0' }, index.h("button", { key: 'cd3204b93d8791529784d04ccf80a566221aab74', type: this.type, disabled: this.disabled, class: `btn btn--${this.variant}`, onClick: () => this.handleClick() }, this.label)));
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
LabxButton.style = labxButtonCss();
|
|
32
|
-
|
|
33
|
-
const labxIconCss = () => `:host{display:inline-flex;align-items:center;justify-content:center;color:inherit}.icon{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:inherit;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;font-variation-settings:'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20}.icon--filled{font-variation-settings:'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 20}`;
|
|
34
|
-
|
|
35
|
-
const LabxIcon = class {
|
|
36
|
-
constructor(hostRef) {
|
|
37
|
-
index.registerInstance(this, hostRef);
|
|
38
|
-
}
|
|
39
|
-
/** Nombre del ícono de Material Symbols (ej: "email", "search", "close") */
|
|
40
|
-
name;
|
|
41
|
-
/** Tamaño en px */
|
|
42
|
-
size = 20;
|
|
43
|
-
/** Filled (true) u Outlined (false) */
|
|
44
|
-
filled = false;
|
|
45
|
-
render() {
|
|
46
|
-
return (index.h(index.Host, { key: '30e38c191019432490921f13c23fc91f96952e90', style: { fontSize: `${this.size}px` } }, index.h("span", { key: '9ff64363cdb1fcb0f0eec24e13a2fc623506972f', class: { 'icon': true, 'icon--filled': this.filled } }, this.name)));
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
LabxIcon.style = labxIconCss();
|
|
50
|
-
|
|
51
|
-
const labxInputCss = () => `:host{display:block}.input-wrapper{position:relative;display:flex;align-items:center;background-color:var(--color-bg-surface);border:2px solid var(--color-border);border-radius:8px;transition:border-color 0.2s ease}.input-wrapper--focused{border-color:var(--color-primary)}.input-wrapper--error{border-color:var(--color-danger)}.input-wrapper--disabled{background-color:var(--color-bg-subtle);cursor:not-allowed}.input{width:100%;padding:20px 14px 6px 14px;border:none;outline:none;background:transparent;font-family:inherit;font-size:14px;color:var(--color-text-default);cursor:inherit}.input:disabled{color:var(--color-disabled);cursor:not-allowed}.input-wrapper--icon-left .input{padding-left:40px}.input-wrapper--icon-right .input{padding-right:40px}.input-label{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--color-text-muted);pointer-events:none;transition:top 0.2s ease, font-size 0.2s ease, color 0.2s ease}.input-label--floating{top:7px;transform:none;font-size:11px;color:var(--color-primary)}.input-wrapper--error .input-label--floating{color:var(--color-danger)}.input-wrapper--icon-left .input-label{left:40px}.input-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--color-text-muted);pointer-events:none}.input-icon--left{left:12px}.input-icon--right{right:12px}.input-error{display:block;margin-top:4px;padding-left:4px;font-size:12px;color:var(--color-danger)}`;
|
|
52
|
-
|
|
53
|
-
const LabxInput = class {
|
|
54
|
-
constructor(hostRef) {
|
|
55
|
-
index.registerInstance(this, hostRef);
|
|
56
|
-
this.labxChange = index.createEvent(this, "labxChange");
|
|
57
|
-
}
|
|
58
|
-
/** Texto del label flotante */
|
|
59
|
-
label;
|
|
60
|
-
/** Valor del input */
|
|
61
|
-
value = '';
|
|
62
|
-
/** Type HTML del input */
|
|
63
|
-
type = 'text';
|
|
64
|
-
/** Deshabilita el input */
|
|
65
|
-
disabled = false;
|
|
66
|
-
/** Mensaje de error */
|
|
67
|
-
error;
|
|
68
|
-
/** El input tiene foco actualmente */
|
|
69
|
-
focused = false;
|
|
70
|
-
/** true si el slot icon-left tiene contenido */
|
|
71
|
-
hasIconLeft = false;
|
|
72
|
-
/** true si el slot icon-right tiene contenido */
|
|
73
|
-
hasIconRight = false;
|
|
74
|
-
/** Se emite cuando el valor cambia */
|
|
75
|
-
labxChange;
|
|
76
|
-
handleInput(e) {
|
|
77
|
-
this.value = e.target.value;
|
|
78
|
-
this.labxChange.emit(this.value);
|
|
79
|
-
}
|
|
80
|
-
onSlotChange(side, e) {
|
|
81
|
-
const slot = e.target;
|
|
82
|
-
const hasContent = slot.assignedNodes().length > 0;
|
|
83
|
-
if (side === 'left')
|
|
84
|
-
this.hasIconLeft = hasContent;
|
|
85
|
-
else
|
|
86
|
-
this.hasIconRight = hasContent;
|
|
87
|
-
}
|
|
88
|
-
render() {
|
|
89
|
-
const isFloating = this.focused || this.value?.length > 0;
|
|
90
|
-
return (index.h(index.Host, { key: '357eb1c2b3c395801c8d7249c3e649f5ddd33bda' }, index.h("div", { key: '1bc8515582f79c560196c7631cef3de31344234e', class: {
|
|
91
|
-
'input-wrapper': true,
|
|
92
|
-
'input-wrapper--focused': this.focused,
|
|
93
|
-
'input-wrapper--error': !!this.error,
|
|
94
|
-
'input-wrapper--disabled': this.disabled,
|
|
95
|
-
'input-wrapper--icon-left': this.hasIconLeft,
|
|
96
|
-
'input-wrapper--icon-right': this.hasIconRight,
|
|
97
|
-
} }, index.h("span", { key: 'd3da76f5d96c55179870583faf5931c6008188ec', class: "input-icon input-icon--left" }, index.h("slot", { key: 'eeea94735ef34585bd88eef2e6d753f58733aeb7', name: "icon-left", onSlotchange: (e) => this.onSlotChange('left', e) })), index.h("input", { key: '2792b2634677fe2ebe272248bd75fbd0e993080a', class: "input", type: this.type, value: this.value, disabled: this.disabled, onInput: (e) => this.handleInput(e), onFocus: () => (this.focused = true), onBlur: () => (this.focused = false) }), this.label && (index.h("label", { key: '0d1ae4db30645f2a4a1927f0495b053620d5a3d5', class: { 'input-label': true, 'input-label--floating': isFloating } }, this.label)), index.h("span", { key: '4e25bc9f95998d3d94f36306a353859fa67fc5f3', class: "input-icon input-icon--right" }, index.h("slot", { key: '2492d04ec309a636128fd7da1729875e2c0c93d5', name: "icon-right", onSlotchange: (e) => this.onSlotChange('right', e) }))), this.error && index.h("span", { key: 'bfde298513f8d55f4b36b51afee6565d312f52d3', class: "input-error" }, this.error)));
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
LabxInput.style = labxInputCss();
|
|
101
|
-
|
|
102
|
-
exports.labx_button = LabxButton;
|
|
103
|
-
exports.labx_icon = LabxIcon;
|
|
104
|
-
exports.labx_input = LabxInput;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-eATbt1kz.js');
|
|
4
|
-
|
|
5
|
-
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
6
|
-
/*
|
|
7
|
-
Stencil Client Patch Browser v4.43.3 | MIT Licensed | https://stenciljs.com
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
var patchBrowser = () => {
|
|
11
|
-
const importMeta = (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('labx-components.cjs.js', document.baseURI).href));
|
|
12
|
-
const opts = {};
|
|
13
|
-
if (importMeta !== "") {
|
|
14
|
-
opts.resourcesUrl = new URL(".", importMeta).href;
|
|
15
|
-
}
|
|
16
|
-
return index.promiseResolve(opts);
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
patchBrowser().then(async (options) => {
|
|
20
|
-
await index.globalScripts();
|
|
21
|
-
return index.bootstrapLazy([["labx-button_3.cjs",[[513,"labx-button",{"label":[1],"variant":[1],"disabled":[4],"type":[1]}],[513,"labx-icon",{"name":[1],"size":[2],"filled":[4]}],[769,"labx-input",{"label":[1],"value":[1537],"type":[1],"disabled":[4],"error":[1],"focused":[32],"hasIconLeft":[32],"hasIconRight":[32]}]]]], options);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
exports.setNonce = index.setNonce;
|
package/dist/cjs/loader.cjs.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-eATbt1kz.js');
|
|
4
|
-
|
|
5
|
-
const defineCustomElements = async (win, options) => {
|
|
6
|
-
if (typeof window === 'undefined') return undefined;
|
|
7
|
-
await index.globalScripts();
|
|
8
|
-
return index.bootstrapLazy([["labx-button_3.cjs",[[513,"labx-button",{"label":[1],"variant":[1],"disabled":[4],"type":[1]}],[513,"labx-icon",{"name":[1],"size":[2],"filled":[4]}],[769,"labx-input",{"label":[1],"value":[1537],"type":[1],"disabled":[4],"error":[1],"focused":[32],"hasIconLeft":[32],"hasIconRight":[32]}]]]], options);
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
exports.setNonce = index.setNonce;
|
|
12
|
-
exports.defineCustomElements = defineCustomElements;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"entries": [
|
|
3
|
-
"components/labx-button/labx-button.js",
|
|
4
|
-
"components/labx-icon/labx-icon.js",
|
|
5
|
-
"components/labx-input/labx-input.js"
|
|
6
|
-
],
|
|
7
|
-
"mixins": [],
|
|
8
|
-
"compiler": {
|
|
9
|
-
"name": "@stencil/core",
|
|
10
|
-
"version": "4.43.3",
|
|
11
|
-
"typescriptVersion": "5.8.3"
|
|
12
|
-
},
|
|
13
|
-
"collections": [],
|
|
14
|
-
"bundles": []
|
|
15
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
:host {
|
|
2
|
-
display: inline-block;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
/* ─── Base ───────────────────────────────────────────── */
|
|
6
|
-
.btn {
|
|
7
|
-
display: inline-flex;
|
|
8
|
-
align-items: center;
|
|
9
|
-
justify-content: center;
|
|
10
|
-
gap: 8px;
|
|
11
|
-
|
|
12
|
-
padding: 10px 20px;
|
|
13
|
-
border: 2px solid transparent;
|
|
14
|
-
border-radius: 8px;
|
|
15
|
-
cursor: pointer;
|
|
16
|
-
|
|
17
|
-
font-family: inherit;
|
|
18
|
-
font-size: 14px;
|
|
19
|
-
font-weight: 600;
|
|
20
|
-
line-height: 1;
|
|
21
|
-
text-decoration: none;
|
|
22
|
-
white-space: nowrap;
|
|
23
|
-
|
|
24
|
-
transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.btn:focus-visible {
|
|
28
|
-
outline: 3px solid var(--color-primary-light);
|
|
29
|
-
outline-offset: 2px;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/* ─── Variant: Primary ───────────────────────────────── */
|
|
33
|
-
.btn--primary {
|
|
34
|
-
background-color: var(--color-primary);
|
|
35
|
-
border-color: var(--color-primary);
|
|
36
|
-
color: var(--color-bg-surface);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.btn--primary:hover:not(:disabled) {
|
|
40
|
-
background-color: var(--color-primary-hover);
|
|
41
|
-
border-color: var(--color-primary-hover);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* ─── Variant: Secondary ─────────────────────────────── */
|
|
45
|
-
.btn--secondary {
|
|
46
|
-
background-color: transparent;
|
|
47
|
-
border-color: var(--color-primary);
|
|
48
|
-
color: var(--color-primary);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.btn--secondary:hover:not(:disabled) {
|
|
52
|
-
background-color: var(--color-primary-light);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* ─── Variant: Danger ────────────────────────────────── */
|
|
56
|
-
.btn--danger {
|
|
57
|
-
background-color: var(--color-danger);
|
|
58
|
-
border-color: var(--color-danger);
|
|
59
|
-
color: var(--color-bg-surface);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.btn--danger:hover:not(:disabled) {
|
|
63
|
-
background-color: var(--color-danger-light);
|
|
64
|
-
border-color: var(--color-danger);
|
|
65
|
-
color: var(--color-danger);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/* ─── Disabled ───────────────────────────────────────── */
|
|
69
|
-
.btn:disabled {
|
|
70
|
-
background-color: var(--color-bg-subtle);
|
|
71
|
-
border-color: var(--color-border);
|
|
72
|
-
color: var(--color-disabled);
|
|
73
|
-
cursor: not-allowed;
|
|
74
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { Host, h } from "@stencil/core";
|
|
2
|
-
export class LabxButton {
|
|
3
|
-
/** Texto del botón */
|
|
4
|
-
label = 'Button';
|
|
5
|
-
/** Estilo visual: primary | secondary | danger */
|
|
6
|
-
variant = 'primary';
|
|
7
|
-
/** Deshabilita el botón */
|
|
8
|
-
disabled = false;
|
|
9
|
-
/** Tipo HTML del botón */
|
|
10
|
-
type = 'button';
|
|
11
|
-
/** Se emite cuando el botón es clickeado */
|
|
12
|
-
labxClick;
|
|
13
|
-
handleClick() {
|
|
14
|
-
if (!this.disabled) {
|
|
15
|
-
this.labxClick.emit();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
render() {
|
|
19
|
-
return (h(Host, { key: '76d607e0f7612ef141b30d884166181402e4e6a0' }, h("button", { key: 'cd3204b93d8791529784d04ccf80a566221aab74', type: this.type, disabled: this.disabled, class: `btn btn--${this.variant}`, onClick: () => this.handleClick() }, this.label)));
|
|
20
|
-
}
|
|
21
|
-
static get is() { return "labx-button"; }
|
|
22
|
-
static get encapsulation() { return "shadow"; }
|
|
23
|
-
static get originalStyleUrls() {
|
|
24
|
-
return {
|
|
25
|
-
"$": ["labx-button.css"]
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
static get styleUrls() {
|
|
29
|
-
return {
|
|
30
|
-
"$": ["labx-button.css"]
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
static get properties() {
|
|
34
|
-
return {
|
|
35
|
-
"label": {
|
|
36
|
-
"type": "string",
|
|
37
|
-
"mutable": false,
|
|
38
|
-
"complexType": {
|
|
39
|
-
"original": "string",
|
|
40
|
-
"resolved": "string",
|
|
41
|
-
"references": {}
|
|
42
|
-
},
|
|
43
|
-
"required": false,
|
|
44
|
-
"optional": false,
|
|
45
|
-
"docs": {
|
|
46
|
-
"tags": [],
|
|
47
|
-
"text": "Texto del bot\u00F3n"
|
|
48
|
-
},
|
|
49
|
-
"getter": false,
|
|
50
|
-
"setter": false,
|
|
51
|
-
"reflect": false,
|
|
52
|
-
"attribute": "label",
|
|
53
|
-
"defaultValue": "'Button'"
|
|
54
|
-
},
|
|
55
|
-
"variant": {
|
|
56
|
-
"type": "string",
|
|
57
|
-
"mutable": false,
|
|
58
|
-
"complexType": {
|
|
59
|
-
"original": "'primary' | 'secondary' | 'danger'",
|
|
60
|
-
"resolved": "\"danger\" | \"primary\" | \"secondary\"",
|
|
61
|
-
"references": {}
|
|
62
|
-
},
|
|
63
|
-
"required": false,
|
|
64
|
-
"optional": false,
|
|
65
|
-
"docs": {
|
|
66
|
-
"tags": [],
|
|
67
|
-
"text": "Estilo visual: primary | secondary | danger"
|
|
68
|
-
},
|
|
69
|
-
"getter": false,
|
|
70
|
-
"setter": false,
|
|
71
|
-
"reflect": false,
|
|
72
|
-
"attribute": "variant",
|
|
73
|
-
"defaultValue": "'primary'"
|
|
74
|
-
},
|
|
75
|
-
"disabled": {
|
|
76
|
-
"type": "boolean",
|
|
77
|
-
"mutable": false,
|
|
78
|
-
"complexType": {
|
|
79
|
-
"original": "boolean",
|
|
80
|
-
"resolved": "boolean",
|
|
81
|
-
"references": {}
|
|
82
|
-
},
|
|
83
|
-
"required": false,
|
|
84
|
-
"optional": false,
|
|
85
|
-
"docs": {
|
|
86
|
-
"tags": [],
|
|
87
|
-
"text": "Deshabilita el bot\u00F3n"
|
|
88
|
-
},
|
|
89
|
-
"getter": false,
|
|
90
|
-
"setter": false,
|
|
91
|
-
"reflect": false,
|
|
92
|
-
"attribute": "disabled",
|
|
93
|
-
"defaultValue": "false"
|
|
94
|
-
},
|
|
95
|
-
"type": {
|
|
96
|
-
"type": "string",
|
|
97
|
-
"mutable": false,
|
|
98
|
-
"complexType": {
|
|
99
|
-
"original": "'button' | 'submit' | 'reset'",
|
|
100
|
-
"resolved": "\"button\" | \"reset\" | \"submit\"",
|
|
101
|
-
"references": {}
|
|
102
|
-
},
|
|
103
|
-
"required": false,
|
|
104
|
-
"optional": false,
|
|
105
|
-
"docs": {
|
|
106
|
-
"tags": [],
|
|
107
|
-
"text": "Tipo HTML del bot\u00F3n"
|
|
108
|
-
},
|
|
109
|
-
"getter": false,
|
|
110
|
-
"setter": false,
|
|
111
|
-
"reflect": false,
|
|
112
|
-
"attribute": "type",
|
|
113
|
-
"defaultValue": "'button'"
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
static get events() {
|
|
118
|
-
return [{
|
|
119
|
-
"method": "labxClick",
|
|
120
|
-
"name": "labxClick",
|
|
121
|
-
"bubbles": true,
|
|
122
|
-
"cancelable": true,
|
|
123
|
-
"composed": true,
|
|
124
|
-
"docs": {
|
|
125
|
-
"tags": [],
|
|
126
|
-
"text": "Se emite cuando el bot\u00F3n es clickeado"
|
|
127
|
-
},
|
|
128
|
-
"complexType": {
|
|
129
|
-
"original": "void",
|
|
130
|
-
"resolved": "void",
|
|
131
|
-
"references": {}
|
|
132
|
-
}
|
|
133
|
-
}];
|
|
134
|
-
}
|
|
135
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
:host {
|
|
2
|
-
display: inline-flex;
|
|
3
|
-
align-items: center;
|
|
4
|
-
justify-content: center;
|
|
5
|
-
color: inherit;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.icon {
|
|
9
|
-
font-family: 'Material Symbols Outlined';
|
|
10
|
-
font-weight: normal;
|
|
11
|
-
font-style: normal;
|
|
12
|
-
font-size: inherit;
|
|
13
|
-
line-height: 1;
|
|
14
|
-
letter-spacing: normal;
|
|
15
|
-
text-transform: none;
|
|
16
|
-
white-space: nowrap;
|
|
17
|
-
word-wrap: normal;
|
|
18
|
-
direction: ltr;
|
|
19
|
-
|
|
20
|
-
/* Sin relleno por defecto */
|
|
21
|
-
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.icon--filled {
|
|
25
|
-
font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 20;
|
|
26
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { Host, h } from "@stencil/core";
|
|
2
|
-
export class LabxIcon {
|
|
3
|
-
/** Nombre del ícono de Material Symbols (ej: "email", "search", "close") */
|
|
4
|
-
name;
|
|
5
|
-
/** Tamaño en px */
|
|
6
|
-
size = 20;
|
|
7
|
-
/** Filled (true) u Outlined (false) */
|
|
8
|
-
filled = false;
|
|
9
|
-
render() {
|
|
10
|
-
return (h(Host, { key: '30e38c191019432490921f13c23fc91f96952e90', style: { fontSize: `${this.size}px` } }, h("span", { key: '9ff64363cdb1fcb0f0eec24e13a2fc623506972f', class: { 'icon': true, 'icon--filled': this.filled } }, this.name)));
|
|
11
|
-
}
|
|
12
|
-
static get is() { return "labx-icon"; }
|
|
13
|
-
static get encapsulation() { return "shadow"; }
|
|
14
|
-
static get originalStyleUrls() {
|
|
15
|
-
return {
|
|
16
|
-
"$": ["labx-icon.css"]
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
static get styleUrls() {
|
|
20
|
-
return {
|
|
21
|
-
"$": ["labx-icon.css"]
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
static get properties() {
|
|
25
|
-
return {
|
|
26
|
-
"name": {
|
|
27
|
-
"type": "string",
|
|
28
|
-
"mutable": false,
|
|
29
|
-
"complexType": {
|
|
30
|
-
"original": "string",
|
|
31
|
-
"resolved": "string",
|
|
32
|
-
"references": {}
|
|
33
|
-
},
|
|
34
|
-
"required": true,
|
|
35
|
-
"optional": false,
|
|
36
|
-
"docs": {
|
|
37
|
-
"tags": [],
|
|
38
|
-
"text": "Nombre del \u00EDcono de Material Symbols (ej: \"email\", \"search\", \"close\")"
|
|
39
|
-
},
|
|
40
|
-
"getter": false,
|
|
41
|
-
"setter": false,
|
|
42
|
-
"reflect": false,
|
|
43
|
-
"attribute": "name"
|
|
44
|
-
},
|
|
45
|
-
"size": {
|
|
46
|
-
"type": "number",
|
|
47
|
-
"mutable": false,
|
|
48
|
-
"complexType": {
|
|
49
|
-
"original": "number",
|
|
50
|
-
"resolved": "number",
|
|
51
|
-
"references": {}
|
|
52
|
-
},
|
|
53
|
-
"required": false,
|
|
54
|
-
"optional": false,
|
|
55
|
-
"docs": {
|
|
56
|
-
"tags": [],
|
|
57
|
-
"text": "Tama\u00F1o en px"
|
|
58
|
-
},
|
|
59
|
-
"getter": false,
|
|
60
|
-
"setter": false,
|
|
61
|
-
"reflect": false,
|
|
62
|
-
"attribute": "size",
|
|
63
|
-
"defaultValue": "20"
|
|
64
|
-
},
|
|
65
|
-
"filled": {
|
|
66
|
-
"type": "boolean",
|
|
67
|
-
"mutable": false,
|
|
68
|
-
"complexType": {
|
|
69
|
-
"original": "boolean",
|
|
70
|
-
"resolved": "boolean",
|
|
71
|
-
"references": {}
|
|
72
|
-
},
|
|
73
|
-
"required": false,
|
|
74
|
-
"optional": false,
|
|
75
|
-
"docs": {
|
|
76
|
-
"tags": [],
|
|
77
|
-
"text": "Filled (true) u Outlined (false)"
|
|
78
|
-
},
|
|
79
|
-
"getter": false,
|
|
80
|
-
"setter": false,
|
|
81
|
-
"reflect": false,
|
|
82
|
-
"attribute": "filled",
|
|
83
|
-
"defaultValue": "false"
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
:host {
|
|
2
|
-
display: block;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
/* ─── Wrapper ────────────────────────────────────────── */
|
|
6
|
-
.input-wrapper {
|
|
7
|
-
position: relative;
|
|
8
|
-
display: flex;
|
|
9
|
-
align-items: center;
|
|
10
|
-
|
|
11
|
-
background-color: var(--color-bg-surface);
|
|
12
|
-
border: 2px solid var(--color-border);
|
|
13
|
-
border-radius: 8px;
|
|
14
|
-
|
|
15
|
-
transition: border-color 0.2s ease;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.input-wrapper--focused {
|
|
19
|
-
border-color: var(--color-primary);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.input-wrapper--error {
|
|
23
|
-
border-color: var(--color-danger);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.input-wrapper--disabled {
|
|
27
|
-
background-color: var(--color-bg-subtle);
|
|
28
|
-
cursor: not-allowed;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/* ─── Input ──────────────────────────────────────────── */
|
|
32
|
-
.input {
|
|
33
|
-
width: 100%;
|
|
34
|
-
padding: 20px 14px 6px 14px;
|
|
35
|
-
border: none;
|
|
36
|
-
outline: none;
|
|
37
|
-
background: transparent;
|
|
38
|
-
|
|
39
|
-
font-family: inherit;
|
|
40
|
-
font-size: 14px;
|
|
41
|
-
color: var(--color-text-default);
|
|
42
|
-
|
|
43
|
-
cursor: inherit;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.input:disabled {
|
|
47
|
-
color: var(--color-disabled);
|
|
48
|
-
cursor: not-allowed;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Ajuste de padding cuando hay íconos */
|
|
52
|
-
.input-wrapper--icon-left .input {
|
|
53
|
-
padding-left: 40px;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.input-wrapper--icon-right .input {
|
|
57
|
-
padding-right: 40px;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/* ─── Label flotante ─────────────────────────────────── */
|
|
61
|
-
.input-label {
|
|
62
|
-
position: absolute;
|
|
63
|
-
left: 14px;
|
|
64
|
-
top: 50%;
|
|
65
|
-
transform: translateY(-50%);
|
|
66
|
-
|
|
67
|
-
font-size: 14px;
|
|
68
|
-
color: var(--color-text-muted);
|
|
69
|
-
pointer-events: none;
|
|
70
|
-
|
|
71
|
-
transition: top 0.2s ease, font-size 0.2s ease, color 0.2s ease;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.input-label--floating {
|
|
75
|
-
top: 7px;
|
|
76
|
-
transform: none;
|
|
77
|
-
font-size: 11px;
|
|
78
|
-
color: var(--color-primary);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.input-wrapper--error .input-label--floating {
|
|
82
|
-
color: var(--color-danger);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/* Ajuste del label cuando hay ícono izquierdo */
|
|
86
|
-
.input-wrapper--icon-left .input-label {
|
|
87
|
-
left: 40px;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/* ─── Íconos ─────────────────────────────────────────── */
|
|
91
|
-
.input-icon {
|
|
92
|
-
position: absolute;
|
|
93
|
-
display: flex;
|
|
94
|
-
align-items: center;
|
|
95
|
-
justify-content: center;
|
|
96
|
-
width: 20px;
|
|
97
|
-
height: 20px;
|
|
98
|
-
color: var(--color-text-muted);
|
|
99
|
-
pointer-events: none;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.input-icon--left {
|
|
103
|
-
left: 12px;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.input-icon--right {
|
|
107
|
-
right: 12px;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/* ─── Error ──────────────────────────────────────────── */
|
|
111
|
-
.input-error {
|
|
112
|
-
display: block;
|
|
113
|
-
margin-top: 4px;
|
|
114
|
-
padding-left: 4px;
|
|
115
|
-
font-size: 12px;
|
|
116
|
-
color: var(--color-danger);
|
|
117
|
-
}
|