@nuralyui/input 0.0.5 → 0.0.7
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/input.component.d.ts +70 -18
- package/input.component.d.ts.map +1 -1
- package/input.component.js +433 -139
- package/input.component.js.map +1 -1
- package/input.style.d.ts.map +1 -1
- package/input.style.js +246 -18
- package/input.style.js.map +1 -1
- package/{input.style.variable..d.ts → input.style.variable.d.ts} +1 -1
- package/input.style.variable.d.ts.map +1 -0
- package/{input.style.variable..js → input.style.variable.js} +78 -3
- package/input.style.variable.js.map +1 -0
- package/input.types.d.ts +38 -0
- package/input.types.d.ts.map +1 -0
- package/input.types.js +2 -0
- package/input.types.js.map +1 -0
- package/package.json +1 -1
- package/test/hy-input_test.js +1 -1
- package/test/hy-input_test.js.map +1 -1
- package/utils/index.d.ts +8 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/index.js +8 -0
- package/utils/index.js.map +1 -0
- package/utils/input-renderers.d.ts +54 -0
- package/utils/input-renderers.d.ts.map +1 -0
- package/utils/input-renderers.js +174 -0
- package/utils/input-renderers.js.map +1 -0
- package/utils/input-validation.utils.d.ts +26 -0
- package/utils/input-validation.utils.d.ts.map +1 -0
- package/utils/input-validation.utils.js +105 -0
- package/utils/input-validation.utils.js.map +1 -0
- package/input.constant.d.ts +0 -18
- package/input.constant.d.ts.map +0 -1
- package/input.constant.js +0 -2
- package/input.constant.js.map +0 -1
- package/input.style.variable..d.ts.map +0 -1
- package/input.style.variable..js.map +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Google Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Validation utilities for input components
|
|
8
|
+
*/
|
|
9
|
+
export class InputValidationUtils {
|
|
10
|
+
/**
|
|
11
|
+
* Validates numeric properties (min, max, step) to ensure they are valid numbers
|
|
12
|
+
*/
|
|
13
|
+
static validateNumericProperties(type, min, max, step) {
|
|
14
|
+
if (type === "number" /* INPUT_TYPE.NUMBER */) {
|
|
15
|
+
if (min && isNaN(Number(min))) {
|
|
16
|
+
console.warn(`Invalid min value: "${min}" is not a valid number`);
|
|
17
|
+
}
|
|
18
|
+
if (max && isNaN(Number(max))) {
|
|
19
|
+
console.warn(`Invalid max value: "${max}" is not a valid number`);
|
|
20
|
+
}
|
|
21
|
+
if (step && isNaN(Number(step))) {
|
|
22
|
+
console.warn(`Invalid step value: "${step}" is not a valid number`);
|
|
23
|
+
}
|
|
24
|
+
if (min && max && Number(min) >= Number(max)) {
|
|
25
|
+
console.warn(`Invalid range: min value (${min}) should be less than max value (${max})`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Prevents non-numeric characters from being typed in number inputs
|
|
31
|
+
*/
|
|
32
|
+
static preventNonNumericInput(keyDownEvent, min) {
|
|
33
|
+
const key = keyDownEvent.key;
|
|
34
|
+
const target = keyDownEvent.target;
|
|
35
|
+
const currentValue = target.value;
|
|
36
|
+
const cursorPosition = target.selectionStart || 0;
|
|
37
|
+
// Allow control keys (backspace, delete, tab, escape, enter, arrow keys, etc.)
|
|
38
|
+
const allowedControlKeys = [
|
|
39
|
+
'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',
|
|
40
|
+
'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',
|
|
41
|
+
'Home', 'End', 'PageUp', 'PageDown'
|
|
42
|
+
];
|
|
43
|
+
// Allow Ctrl/Cmd combinations (copy, paste, select all, etc.)
|
|
44
|
+
if (keyDownEvent.ctrlKey || keyDownEvent.metaKey) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Allow control keys
|
|
48
|
+
if (allowedControlKeys.includes(key)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Allow digits
|
|
52
|
+
if (/^\d$/.test(key)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Allow decimal point (.) only once and allow it at the beginning for values like ".5"
|
|
56
|
+
if (key === '.' || key === ',') {
|
|
57
|
+
const hasDecimal = currentValue.includes('.') || currentValue.includes(',');
|
|
58
|
+
if (!hasDecimal) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Allow minus sign (-) only at the beginning and if min allows negative numbers
|
|
63
|
+
if (key === '-') {
|
|
64
|
+
const hasMinusSign = currentValue.includes('-');
|
|
65
|
+
const minAllowsNegative = !min || Number(min) < 0;
|
|
66
|
+
if (!hasMinusSign && cursorPosition === 0 && minAllowsNegative) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Allow plus sign (+) only at the beginning
|
|
71
|
+
if (key === '+') {
|
|
72
|
+
const hasPlusSign = currentValue.includes('+');
|
|
73
|
+
if (!hasPlusSign && cursorPosition === 0) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// If we reach here, prevent the key input
|
|
78
|
+
keyDownEvent.preventDefault();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validates a numeric value against min/max constraints
|
|
82
|
+
*/
|
|
83
|
+
static validateNumericValue(value, min, max) {
|
|
84
|
+
const warnings = [];
|
|
85
|
+
if (!value) {
|
|
86
|
+
return { isValid: true, warnings };
|
|
87
|
+
}
|
|
88
|
+
const numericValue = Number(value);
|
|
89
|
+
if (isNaN(numericValue)) {
|
|
90
|
+
return {
|
|
91
|
+
isValid: false,
|
|
92
|
+
warnings: [`Invalid numeric value: "${value}"`]
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Check min/max constraints
|
|
96
|
+
if (min && numericValue < Number(min)) {
|
|
97
|
+
warnings.push(`Value ${numericValue} is below minimum ${min}`);
|
|
98
|
+
}
|
|
99
|
+
if (max && numericValue > Number(max)) {
|
|
100
|
+
warnings.push(`Value ${numericValue} is above maximum ${max}`);
|
|
101
|
+
}
|
|
102
|
+
return { isValid: true, warnings };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=input-validation.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validation.utils.js","sourceRoot":"","sources":["../../../../src/components/input/utils/input-validation.utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAE/B;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAC9B,IAAY,EACZ,GAAY,EACZ,GAAY,EACZ,IAAa;QAEb,IAAI,IAAI,qCAAsB,EAAE;YAC9B,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,yBAAyB,CAAC,CAAC;aACnE;YACD,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,yBAAyB,CAAC,CAAC;aACnE;YACD,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;gBAC/B,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,yBAAyB,CAAC,CAAC;aACrE;YACD,IAAI,GAAG,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;gBAC5C,OAAO,CAAC,IAAI,CAAC,6BAA6B,GAAG,oCAAoC,GAAG,GAAG,CAAC,CAAC;aAC1F;SACF;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAC3B,YAA2B,EAC3B,GAAY;QAEZ,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,MAA0B,CAAC;QACvD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;QAElD,+EAA+E;QAC/E,MAAM,kBAAkB,GAAG;YACzB,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO;YAC/C,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW;YACjD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU;SACpC,CAAC;QAEF,8DAA8D;QAC9D,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE;YAChD,OAAO;SACR;QAED,qBAAqB;QACrB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACpC,OAAO;SACR;QAED,eAAe;QACf,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO;SACR;QAED,uFAAuF;QACvF,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE;YAC9B,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,EAAE;gBACf,OAAO;aACR;SACF;QAED,gFAAgF;QAChF,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,IAAI,cAAc,KAAK,CAAC,IAAI,iBAAiB,EAAE;gBAC9D,OAAO;aACR;SACF;QAED,4CAA4C;QAC5C,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW,IAAI,cAAc,KAAK,CAAC,EAAE;gBACxC,OAAO;aACR;SACF;QAED,0CAA0C;QAC1C,YAAY,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,KAAa,EACb,GAAY,EACZ,GAAY;QAEZ,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACpC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,CAAC,2BAA2B,KAAK,GAAG,CAAC;aAChD,CAAC;SACH;QAED,4BAA4B;QAC5B,IAAI,GAAG,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,SAAS,YAAY,qBAAqB,GAAG,EAAE,CAAC,CAAC;SAChE;QACD,IAAI,GAAG,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,SAAS,YAAY,qBAAqB,GAAG,EAAE,CAAC,CAAC;SAChE;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrC,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { INPUT_TYPE } from '../input.types.js';\n\n/**\n * Validation utilities for input components\n */\nexport class InputValidationUtils {\n \n /**\n * Validates numeric properties (min, max, step) to ensure they are valid numbers\n */\n static validateNumericProperties(\n type: string,\n min?: string,\n max?: string,\n step?: string\n ): void {\n if (type === INPUT_TYPE.NUMBER) {\n if (min && isNaN(Number(min))) {\n console.warn(`Invalid min value: \"${min}\" is not a valid number`);\n }\n if (max && isNaN(Number(max))) {\n console.warn(`Invalid max value: \"${max}\" is not a valid number`);\n }\n if (step && isNaN(Number(step))) {\n console.warn(`Invalid step value: \"${step}\" is not a valid number`);\n }\n if (min && max && Number(min) >= Number(max)) {\n console.warn(`Invalid range: min value (${min}) should be less than max value (${max})`);\n }\n }\n }\n\n /**\n * Prevents non-numeric characters from being typed in number inputs\n */\n static preventNonNumericInput(\n keyDownEvent: KeyboardEvent,\n min?: string\n ): void {\n const key = keyDownEvent.key;\n const target = keyDownEvent.target as HTMLInputElement;\n const currentValue = target.value;\n const cursorPosition = target.selectionStart || 0;\n\n // Allow control keys (backspace, delete, tab, escape, enter, arrow keys, etc.)\n const allowedControlKeys = [\n 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',\n 'Home', 'End', 'PageUp', 'PageDown'\n ];\n\n // Allow Ctrl/Cmd combinations (copy, paste, select all, etc.)\n if (keyDownEvent.ctrlKey || keyDownEvent.metaKey) {\n return;\n }\n\n // Allow control keys\n if (allowedControlKeys.includes(key)) {\n return;\n }\n\n // Allow digits\n if (/^\\d$/.test(key)) {\n return;\n }\n\n // Allow decimal point (.) only once and allow it at the beginning for values like \".5\"\n if (key === '.' || key === ',') {\n const hasDecimal = currentValue.includes('.') || currentValue.includes(',');\n if (!hasDecimal) {\n return;\n }\n }\n\n // Allow minus sign (-) only at the beginning and if min allows negative numbers\n if (key === '-') {\n const hasMinusSign = currentValue.includes('-');\n const minAllowsNegative = !min || Number(min) < 0;\n if (!hasMinusSign && cursorPosition === 0 && minAllowsNegative) {\n return;\n }\n }\n\n // Allow plus sign (+) only at the beginning\n if (key === '+') {\n const hasPlusSign = currentValue.includes('+');\n if (!hasPlusSign && cursorPosition === 0) {\n return;\n }\n }\n\n // If we reach here, prevent the key input\n keyDownEvent.preventDefault();\n }\n\n /**\n * Validates a numeric value against min/max constraints\n */\n static validateNumericValue(\n value: string,\n min?: string,\n max?: string\n ): { isValid: boolean; warnings: string[] } {\n const warnings: string[] = [];\n \n if (!value) {\n return { isValid: true, warnings };\n }\n\n const numericValue = Number(value);\n \n if (isNaN(numericValue)) {\n return { \n isValid: false, \n warnings: [`Invalid numeric value: \"${value}\"`] \n };\n }\n\n // Check min/max constraints\n if (min && numericValue < Number(min)) {\n warnings.push(`Value ${numericValue} is below minimum ${min}`);\n }\n if (max && numericValue > Number(max)) {\n warnings.push(`Value ${numericValue} is above maximum ${max}`);\n }\n\n return { isValid: true, warnings };\n }\n}\n"]}
|
package/input.constant.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare const enum INPUT_STATE {
|
|
2
|
-
Default = "default",
|
|
3
|
-
Error = "error",
|
|
4
|
-
Warning = "warning"
|
|
5
|
-
}
|
|
6
|
-
export declare const enum INPUT_SIZE {
|
|
7
|
-
Large = "large",
|
|
8
|
-
Medium = "medium",
|
|
9
|
-
Small = "small"
|
|
10
|
-
}
|
|
11
|
-
export declare const enum INPUT_TYPE {
|
|
12
|
-
PASSWORD = "password",
|
|
13
|
-
TEXT = "text",
|
|
14
|
-
NUMBER = "number",
|
|
15
|
-
CALENDAR = "calendar"
|
|
16
|
-
}
|
|
17
|
-
export declare const EMPTY_STRING = "";
|
|
18
|
-
//# sourceMappingURL=input.constant.d.ts.map
|
package/input.constant.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.constant.d.ts","sourceRoot":"","sources":["../../../src/components/input/input.constant.ts"],"names":[],"mappings":"AAAA,0BAAkB,WAAW;IAC3B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,0BAAkB,UAAU;IAC1B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,0BAAkB,UAAU;IAC1B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,YAAY,KAAK,CAAC"}
|
package/input.constant.js
DELETED
package/input.constant.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.constant.js","sourceRoot":"","sources":["../../../src/components/input/input.constant.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC","sourcesContent":["export const enum INPUT_STATE {\n Default = 'default',\n Error = 'error',\n Warning = 'warning',\n}\n\nexport const enum INPUT_SIZE {\n Large = 'large',\n Medium = 'medium',\n Small = 'small',\n}\n\nexport const enum INPUT_TYPE {\n PASSWORD = 'password',\n TEXT = 'text',\n NUMBER = 'number',\n CALENDAR = 'calendar',\n}\n\nexport const EMPTY_STRING = '';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.style.variable..d.ts","sourceRoot":"","sources":["../../../src/components/input/input.style.variable..ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,yBAgG1B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.style.variable..js","sourceRoot":"","sources":["../../../src/components/input/input.style.variable..ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGhC,CAAC","sourcesContent":["import {css} from 'lit';\n\nexport const styleVariables = css`\n :host {\n --hybrid-input-local-background-color: #f4f4f4;\n --hybrid-input-local-text-color: #000000;\n --hybrid-input-local-font-family: Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, SFProLocalRange;\n --hybrid-input-local-font-size:13px;\n --hybrid-input-local-label-color: #525252;\n --hybrid-input-local-placeholder-color: #a8a8a8;\n --hybrid-input-local-border-bottom: 2px solid #a8a8a8;\n --hybrid-input-local-border-top: 2px solid transparent;\n --hybrid-input-local-border-left: 2px solid transparent;\n --hybrid-input-local-border-right: 2px solid transparent;\n --hybrid-input-local-disabled-border-bottom: none;\n --hybrid-input-local-disabled-border-top: none;\n --hybrid-input-local-disabled-border-left: none;\n --hybrid-input-local-disabled-border-right: none;\n --hybrid-input-local-focus-border: 2px solid #0f62fe;\n --hybrid-input-local-border-radius: 0px;\n --hybrid-input-local-label-font-size: 13px;\n --hybrid-input-local-helper-text-color: #525252;\n --hybrid-input-local-helper-text-font-size: 13px;\n --hybrid-input-local-placeholder-font-size: 13px;\n --hybrid-input-label-padding-bottom: 5px;\n --hybrid-input-local-helper-text-padding-top: 5px;\n --hybrid-input-local-disabled-background-color: #f4f4f4;\n --hybrid-input-local-disabled-placeholder-color: #c6c6c6;\n --hybrid-input-local-error-helper-text-color: #da1e28;\n --hybrid-input-local-error-border: 2px solid #da1e28;\n --hybrid-input-local-warning-helper-text-color: #161616;\n --hybrid-input-local-disabled-helper-text-color: #c6c6c6;\n --hybrid-input-local-disabled-label-color: #c6c6c6;\n --hybrid-input-local-warning-icon-color: #f0c300;\n --hybrid-input-local-error-icon-color: #da1e28;\n --hybrid-input-local-password-icon-color: #000000;\n --hybrid-input-local-calendar-icon-color: #000000;\n --hybrid-input-local-copy-icon-color: #000000;\n --hybrid-input-local-disabled-icon-opacity: 0.4;\n --hybrid-input-local-number-icons-color: #000000;\n --hybrid-input-local-password-icon-padding-left: 8px;\n --hybrid-input-local-password-icon-padding-right: 8px;\n --hybrid-input-local-number-icons-separator-color: #e0e0e0;\n --hybrid-input-local-number-icons-separator-padding-bottom: 4px;\n --hybrid-input-local-number-icons-separator-padding-left: 5px;\n --hybrid-input-local-number-icons-separator-padding-right: 5px;\n --hybrid-input-local-copy-icon-padding-right:5px;\n\n --hybrid-input-local-number-icons-container-width: 70px;\n --hybrid-input-local-number-icons-container-padding-left: 5px;\n --hybrid-input-local-number-icons-container-padding-right: 5px;\n --hybrid-input-local-number-icons-width: 12px;\n --hybrid-input-local-number-icons-height: 12px;\n\n --hybrid-input-local-number-icons-padding-left: 4px;\n --hybrid-input-local-number-icons-padding-right: 4px;\n\n --hybrid-input-local-large-padding-top: 10px;\n --hybrid-input-local-large-padding-bottom: 10px;\n --hybrid-input-local-large-padding-left: 9px;\n --hybrid-input-local-large-padding-right: 4px;\n\n --hybrid-input-local-medium-padding-top: 7px;\n --hybrid-input-local-medium-padding-bottom: 7px;\n --hybrid-input-local-medium-padding-left: 9px;\n --hybrid-input-local-medium-padding-right: 4px;\n\n --hybrid-input-local-small-padding-top: 4px;\n --hybrid-input-local-small-padding-bottom: 4px;\n --hybrid-input-local-small-padding-left: 9px;\n --hybrid-input-local-small-padding-right: 4px;\n }\n\n /* \n * Dark theme styles using data-theme attribute on host element\n * These override the light theme defaults when data-theme=\"dark\" is applied\n * This provides explicit theme control via JavaScript or HTML attributes\n */\n :host([data-theme=\"dark\"]) {\n --hybrid-input-local-background-color: #393939;\n --hybrid-input-local-focus-border: 2px solid #ffffff;\n --hybrid-input-local-text-color: #ffffff;\n --hybrid-input-local-error-border: 2px solid #fa4d56;\n --hybrid-input-local-error-helper-text-color: #ffb3b8;\n --hybrid-input-local-disabled-background-color: #393939;\n --hybrid-input-local-disabled-placeholder-color: #6f6f6f;\n --hybrid-input-local-disabled-helper-text-color: #6f6f6f;\n --hybrid-input-local-disabled-label-color: #6f6f6f;\n --hybrid-input-local-warning-icon-color: #f0c300;\n --hybrid-input-local-error-icon-color: #da1e28;\n --hybrid-input-local-password-icon-color: #ffffff;\n --hybrid-input-local-number-icons-color: #ffffff;\n --hybrid-input-local-label-color: #c6c6c6;\n --hybrid-input-local-helper-text-color: #c6c6c6;\n --hybrid-input-local-number-icons-separator-color: #525252;\n --hybrid-input-local-calendar-icon-color: #ffffff;\n --hybrid-input-local-copy-icon-color: #ffffff;\n }\n`;\n"]}
|