jattac.libs.web.zest-textbox 0.2.1 → 0.2.2

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.
@@ -0,0 +1,13 @@
1
+ import { InputParser, InputValidator } from "../types";
2
+ interface UseParsedAndValidatedInputArgs<T> {
3
+ rawValue: string;
4
+ parser: InputParser<T> | undefined;
5
+ validator: InputValidator<T> | undefined;
6
+ onParsedAndValidatedChange: ((value: T | undefined) => void) | undefined;
7
+ }
8
+ export declare const useParsedAndValidatedInput: <T>({ rawValue, parser, validator, onParsedAndValidatedChange, }: UseParsedAndValidatedInputArgs<T>) => {
9
+ parsedValue: T | undefined;
10
+ isValid: boolean;
11
+ validationMessage: string | undefined;
12
+ };
13
+ export {};
package/dist/index.d.ts CHANGED
@@ -2,6 +2,8 @@ import React, { ReactNode } from 'react';
2
2
 
3
3
  type ZestTextboxSize = "sm" | "md" | "lg";
4
4
  type ZestConfigValue<T> = T | (() => T) | (() => Promise<T>);
5
+ type InputParser<T> = (value: string) => T | undefined;
6
+ type InputValidator<T> = (value: T | undefined) => boolean | string;
5
7
  interface HelperTextConfig {
6
8
  /**
7
9
  * A function to process the raw input value into a new string.
@@ -31,11 +33,11 @@ interface ZestProps {
31
33
  */
32
34
  helperTextConfig?: ZestConfigValue<HelperTextConfig>;
33
35
  /**
34
- * A callback that provides the raw string value of the input on every change.
35
- * This is a convenience prop to avoid using `event.target.value`.
36
- * @param value The current string value of the input.
36
+ * A callback that provides the parsed and validated value of the input on every valid change.
37
+ * This is a convenience prop to avoid using `event.target.value` and manual parsing/validation.
38
+ * @param value The current parsed and validated value of the input, or `undefined` if parsing failed.
37
39
  */
38
- onTextChanged?: (value: string) => void;
40
+ onTextChanged?: (value: any | undefined) => void;
39
41
  /**
40
42
  * Sets the size of the textbox, affecting padding and font size.
41
43
  * @default 'md'
@@ -70,6 +72,16 @@ interface ZestProps {
70
72
  * @default false
71
73
  */
72
74
  isMultiline?: ZestConfigValue<boolean>;
75
+ /**
76
+ * A function to parse the raw string input into a desired type.
77
+ * Returns `undefined` if parsing fails.
78
+ */
79
+ parser?: ZestConfigValue<InputParser<any>>;
80
+ /**
81
+ * A function to validate the parsed value.
82
+ * Returns `true` for valid, or a string error message for invalid.
83
+ */
84
+ validator?: ZestConfigValue<InputValidator<any>>;
73
85
  }
74
86
 
75
87
  type SharedProps = {
package/dist/index.esm.js CHANGED
@@ -111,8 +111,8 @@ function styleInject(css, ref) {
111
111
  }
112
112
  }
113
113
 
114
- var css_248z = "/* === Base Textbox Styles (input & textarea) === */\n.ZestTextbox-module_textbox__0M5Wq {\n font-family: \"Segoe UI\", Roboto, sans-serif;\n font-weight: 500;\n line-height: 1.25;\n border: 1px solid #ccc;\n border-radius: 0.5rem; /* 8px */\n color: #111827;\n background-color: #ffffff;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n display: inline-block;\n width: auto;\n box-sizing: border-box;\n resize: none;\n font-size: 1rem; /* 16px */\n padding-bottom: 0.5rem; /* Reduced padding to make space for progress bar */\n}\n\n.ZestTextbox-module_textbox__0M5Wq:focus {\n outline: none;\n border-color: #8B5CF6;\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n animation: ZestTextbox-module_pulse-light__CKfhA 0.5s 1;\n}\n\n/* === Sizes === */\n.ZestTextbox-module_sm__yyxXO {\n padding: 0.5rem 0.75rem; /* 8px 12px */\n font-size: 0.875rem; /* 14px */\n}\n\n.ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n}\n\n.ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n}\n\n/* === Full Width === */\n.ZestTextbox-module_fullWidth__xn4fT {\n width: 100%;\n}\n\n/* === Disabled State === */\n.ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #f3f4f6;\n color: #9ca3af;\n cursor: not-allowed;\n pointer-events: none;\n border-color: #d1d5db;\n}\n\n/* === Multiline (textarea) specific enhancements === */\ntextarea.ZestTextbox-module_textbox__0M5Wq {\n min-height: 6.25rem; /* 100px */\n line-height: 1.5;\n resize: vertical;\n}\n\n.ZestTextbox-module_wrapper__0ok2A {\n position: relative;\n display: inline-block;\n}\n\n.ZestTextbox-module_counter__waqIT {\n position: absolute;\n right: 0.625rem; /* 10px */\n bottom: 0.375rem; /* 6px */\n font-size: 0.75rem;\n color: #6b7280;\n pointer-events: none;\n user-select: none;\n}\n\n/* === Dark Mode Support === */\n.dark .ZestTextbox-module_textbox__0M5Wq {\n background-color: #1f2937;\n border-color: #374151;\n color: #f3f4f6;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:focus {\n border-color: #A78BFA;\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n animation: ZestTextbox-module_pulse-dark__L9PYJ 0.5s 1;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #374151;\n color: #9ca3af;\n border-color: #4b5563;\n}\n\n.dark .ZestTextbox-module_counter__waqIT {\n color: #9ca3af;\n}\n\n/* === Password Toggle === */\n.ZestTextbox-module_passwordToggle__I2s4O {\n position: absolute;\n right: 0.625rem; /* 10px */\n top: 50%;\n transform: translateY(-50%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n}\n\n.ZestTextbox-module_eyeIcon__rKiBL {\n width: 1.25em;\n height: 1.25em;\n transition: transform 0.2s ease-in-out;\n}\n\n.ZestTextbox-module_rotate__Ajx19 {\n transform: rotate(180deg);\n}\n\n.ZestTextbox-module_tooltip__etRdj {\n position: absolute;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n background-color: #333;\n color: #fff;\n padding: 0.25rem 0.5rem; /* 4px 8px */\n border-radius: 0.25rem; /* 4px */\n font-size: 0.75rem;\n white-space: nowrap;\n margin-right: 0.5rem; /* 8px */\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n}\n\n.ZestTextbox-module_passwordToggle__I2s4O:hover .ZestTextbox-module_tooltip__etRdj {\n opacity: 1;\n visibility: visible;\n}\n\n.dark .ZestTextbox-module_passwordToggle__I2s4O {\n color: #9ca3af;\n}\n\n.dark .ZestTextbox-module_tooltip__etRdj {\n background-color: #4b5563;\n color: #f3f4f6;\n}\n\n/* === Progress Bar === */\n.ZestTextbox-module_progressBarContainer__0qFKf {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 0.1875rem; /* 3px */\n background-color: #e5e7eb;\n border-bottom-left-radius: 0.5rem; /* 8px */\n border-bottom-right-radius: 0.5rem; /* 8px */\n overflow: hidden;\n}\n\n.ZestTextbox-module_progressBar__vwttj {\n height: 100%;\n background-color: #8B5CF6;\n transition: width 0.2s ease, background-color 0.3s ease;\n}\n\n/* === Animated Counter Colors === */\n.ZestTextbox-module_counterYellow__uYGfs {\n color: #A78BFA;\n}\n\n.ZestTextbox-module_counterOrange__b9baX {\n color: #8B5CF6;\n}\n\n.dark .ZestTextbox-module_progressBarContainer__0qFKf {\n background-color: #374151;\n}\n\n.dark .ZestTextbox-module_progressBar__vwttj {\n background-color: #A78BFA;\n}\n\n.dark .ZestTextbox-module_counterYellow__uYGfs {\n color: #C4B5FD;\n}\n\n.dark .ZestTextbox-module_counterOrange__b9baX {\n color: #A78BFA;\n}\n\n@keyframes ZestTextbox-module_pulse-light__CKfhA {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(139, 92, 246, 0.35); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n}\n\n@keyframes ZestTextbox-module_pulse-dark__L9PYJ {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(167, 139, 250, 0.45); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n}\n\n/* === Media Queries for Responsive Design === */\n@media (min-width: 48rem) { /* 768px */\n /* Tablet */\n .ZestTextbox-module_sm__yyxXO {\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n font-size: 1.125rem; /* 18px */\n }\n}\n\n@media (min-width: 64rem) { /* 1024px */\n /* Desktop */\n .ZestTextbox-module_sm__yyxXO {\n padding: 0.375rem 0.625rem; /* 6px 10px */\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n }\n}\n\n/* === Helper Text === */\n.ZestTextbox-module_helperText__4twSg {\n font-size: 0.875rem; /* 14px */\n color: #6b7280;\n margin-top: 0.25rem; /* 4px */\n animation: ZestTextbox-module_fade-slide-in__re-Ln 0.3s ease-out forwards;\n}\n\n.dark .ZestTextbox-module_helperText__4twSg {\n color: #9ca3af;\n}\n\n@keyframes ZestTextbox-module_fade-slide-in__re-Ln {\n from {\n opacity: 0;\n transform: translateY(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n";
115
- var styles = {"textbox":"ZestTextbox-module_textbox__0M5Wq","pulse-light":"ZestTextbox-module_pulse-light__CKfhA","sm":"ZestTextbox-module_sm__yyxXO","md":"ZestTextbox-module_md__fvL10","lg":"ZestTextbox-module_lg__fU93-","fullWidth":"ZestTextbox-module_fullWidth__xn4fT","wrapper":"ZestTextbox-module_wrapper__0ok2A","counter":"ZestTextbox-module_counter__waqIT","pulse-dark":"ZestTextbox-module_pulse-dark__L9PYJ","passwordToggle":"ZestTextbox-module_passwordToggle__I2s4O","eyeIcon":"ZestTextbox-module_eyeIcon__rKiBL","rotate":"ZestTextbox-module_rotate__Ajx19","tooltip":"ZestTextbox-module_tooltip__etRdj","progressBarContainer":"ZestTextbox-module_progressBarContainer__0qFKf","progressBar":"ZestTextbox-module_progressBar__vwttj","counterYellow":"ZestTextbox-module_counterYellow__uYGfs","counterOrange":"ZestTextbox-module_counterOrange__b9baX","helperText":"ZestTextbox-module_helperText__4twSg","fade-slide-in":"ZestTextbox-module_fade-slide-in__re-Ln"};
114
+ var css_248z = "/* === Base Textbox Styles (input & textarea) === */\n.ZestTextbox-module_textbox__0M5Wq {\n font-family: \"Segoe UI\", Roboto, sans-serif;\n font-weight: 500;\n line-height: 1.25;\n border: 1px solid #ccc;\n border-radius: 0.5rem; /* 8px */\n color: #111827;\n background-color: #ffffff;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n display: inline-block;\n width: auto;\n box-sizing: border-box;\n resize: none;\n font-size: 1rem; /* 16px */\n padding-bottom: 0.5rem; /* Reduced padding to make space for progress bar */\n}\n\n.ZestTextbox-module_textbox__0M5Wq:focus {\n outline: none;\n border-color: #8B5CF6;\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n animation: ZestTextbox-module_pulse-light__CKfhA 0.5s 1;\n}\n\n/* === Error State === */\n.ZestTextbox-module_error__5RoCP {\n border-color: #ef4444; /* Red-500 */\n box-shadow: 0 0 0 0.125rem rgba(239, 68, 68, 0.25); /* Red-500 with 25% opacity */\n}\n\n.ZestTextbox-module_error__5RoCP:focus {\n border-color: #ef4444;\n box-shadow: 0 0 0 0.125rem rgba(239, 68, 68, 0.35);\n}\n\n/* === Sizes === */\n.ZestTextbox-module_sm__yyxXO {\n padding: 0.5rem 0.75rem; /* 8px 12px */\n font-size: 0.875rem; /* 14px */\n}\n\n.ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n}\n\n.ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n}\n\n/* === Full Width === */\n.ZestTextbox-module_fullWidth__xn4fT {\n width: 100%;\n}\n\n/* === Disabled State === */\n.ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #f3f4f6;\n color: #9ca3af;\n cursor: not-allowed;\n pointer-events: none;\n border-color: #d1d5db;\n}\n\n/* === Multiline (textarea) specific enhancements === */\ntextarea.ZestTextbox-module_textbox__0M5Wq {\n min-height: 6.25rem; /* 100px */\n line-height: 1.5;\n resize: vertical;\n}\n\n.ZestTextbox-module_wrapper__0ok2A {\n position: relative;\n display: inline-block;\n}\n\n.ZestTextbox-module_counter__waqIT {\n position: absolute;\n right: 0.625rem; /* 10px */\n bottom: 0.375rem; /* 6px */\n font-size: 0.75rem;\n color: #6b7280;\n pointer-events: none;\n user-select: none;\n}\n\n/* === Dark Mode Support === */\n.dark .ZestTextbox-module_textbox__0M5Wq {\n background-color: #1f2937;\n border-color: #374151;\n color: #f3f4f6;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:focus {\n border-color: #A78BFA;\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n animation: ZestTextbox-module_pulse-dark__L9PYJ 0.5s 1;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #374151;\n color: #9ca3af;\n border-color: #4b5563;\n}\n\n.dark .ZestTextbox-module_counter__waqIT {\n color: #9ca3af;\n}\n\n.dark .ZestTextbox-module_error__5RoCP {\n border-color: #f87171; /* Red-400 for dark mode */\n box-shadow: 0 0 0 0.125rem rgba(248, 113, 113, 0.35);\n}\n\n.dark .ZestTextbox-module_error__5RoCP:focus {\n border-color: #f87171;\n box-shadow: 0 0 0 0.125rem rgba(248, 113, 113, 0.45);\n}\n\n/* === Password Toggle === */\n.ZestTextbox-module_passwordToggle__I2s4O {\n position: absolute;\n right: 0.625rem; /* 10px */\n top: 50%;\n transform: translateY(-50%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n}\n\n.ZestTextbox-module_eyeIcon__rKiBL {\n width: 1.25em;\n height: 1.25em;\n transition: transform 0.2s ease-in-out;\n}\n\n.ZestTextbox-module_rotate__Ajx19 {\n transform: rotate(180deg);\n}\n\n.ZestTextbox-module_tooltip__etRdj {\n position: absolute;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n background-color: #333;\n color: #fff;\n padding: 0.25rem 0.5rem; /* 4px 8px */\n border-radius: 0.25rem; /* 4px */\n font-size: 0.75rem;\n white-space: nowrap;\n margin-right: 0.5rem; /* 8px */\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n}\n\n.ZestTextbox-module_passwordToggle__I2s4O:hover .ZestTextbox-module_tooltip__etRdj {\n opacity: 1;\n visibility: visible;\n}\n\n.dark .ZestTextbox-module_passwordToggle__I2s4O {\n color: #9ca3af;\n}\n\n.dark .ZestTextbox-module_tooltip__etRdj {\n background-color: #4b5563;\n color: #f3f4f6;\n}\n\n/* === Progress Bar === */\n.ZestTextbox-module_progressBarContainer__0qFKf {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 0.1875rem; /* 3px */\n background-color: #e5e7eb;\n border-bottom-left-radius: 0.5rem; /* 8px */\n border-bottom-right-radius: 0.5rem; /* 8px */\n overflow: hidden;\n}\n\n.ZestTextbox-module_progressBar__vwttj {\n height: 100%;\n background-color: #8B5CF6;\n transition: width 0.2s ease, background-color 0.3s ease;\n}\n\n/* === Animated Counter Colors === */\n.ZestTextbox-module_counterYellow__uYGfs {\n color: #A78BFA;\n}\n\n.ZestTextbox-module_counterOrange__b9baX {\n color: #8B5CF6;\n}\n\n.dark .ZestTextbox-module_progressBarContainer__0qFKf {\n background-color: #374151;\n}\n\n.dark .ZestTextbox-module_progressBar__vwttj {\n background-color: #A78BFA;\n}\n\n.dark .ZestTextbox-module_counterYellow__uYGfs {\n color: #C4B5FD;\n}\n\n.dark .ZestTextbox-module_counterOrange__b9baX {\n color: #A78BFA;\n}\n\n@keyframes ZestTextbox-module_pulse-light__CKfhA {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(139, 92, 246, 0.35); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n}\n\n@keyframes ZestTextbox-module_pulse-dark__L9PYJ {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(167, 139, 250, 0.45); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n}\n\n/* === Media Queries for Responsive Design === */\n@media (min-width: 48rem) { /* 768px */\n /* Tablet */\n .ZestTextbox-module_sm__yyxXO {\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n font-size: 1.125rem; /* 18px */\n }\n}\n\n@media (min-width: 64rem) { /* 1024px */\n /* Desktop */\n .ZestTextbox-module_sm__yyxXO {\n padding: 0.375rem 0.625rem; /* 6px 10px */\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n }\n}\n\n/* === Helper Text === */\n.ZestTextbox-module_helperText__4twSg {\n font-size: 0.875rem; /* 14px */\n color: #6b7280;\n margin-top: 0.25rem; /* 4px */\n animation: ZestTextbox-module_fade-slide-in__re-Ln 0.3s ease-out forwards;\n}\n\n.dark .ZestTextbox-module_helperText__4twSg {\n color: #9ca3af;\n}\n\n@keyframes ZestTextbox-module_fade-slide-in__re-Ln {\n from {\n opacity: 0;\n transform: translateY(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}";
115
+ var styles = {"textbox":"ZestTextbox-module_textbox__0M5Wq","pulse-light":"ZestTextbox-module_pulse-light__CKfhA","error":"ZestTextbox-module_error__5RoCP","sm":"ZestTextbox-module_sm__yyxXO","md":"ZestTextbox-module_md__fvL10","lg":"ZestTextbox-module_lg__fU93-","fullWidth":"ZestTextbox-module_fullWidth__xn4fT","wrapper":"ZestTextbox-module_wrapper__0ok2A","counter":"ZestTextbox-module_counter__waqIT","pulse-dark":"ZestTextbox-module_pulse-dark__L9PYJ","passwordToggle":"ZestTextbox-module_passwordToggle__I2s4O","eyeIcon":"ZestTextbox-module_eyeIcon__rKiBL","rotate":"ZestTextbox-module_rotate__Ajx19","tooltip":"ZestTextbox-module_tooltip__etRdj","progressBarContainer":"ZestTextbox-module_progressBarContainer__0qFKf","progressBar":"ZestTextbox-module_progressBar__vwttj","counterYellow":"ZestTextbox-module_counterYellow__uYGfs","counterOrange":"ZestTextbox-module_counterOrange__b9baX","helperText":"ZestTextbox-module_helperText__4twSg","fade-slide-in":"ZestTextbox-module_fade-slide-in__re-Ln"};
116
116
  styleInject(css_248z);
117
117
 
118
118
  var filterNumericInput = function (value) {
@@ -287,6 +287,8 @@ var defaultResolvedZestProps = {
287
287
  isMultiline: false,
288
288
  onTextChanged: undefined,
289
289
  helperTextConfig: undefined,
290
+ parser: undefined,
291
+ validator: undefined,
290
292
  };
291
293
  var useZestTextboxConfig = function (componentZestProps) {
292
294
  var contextDefaultZestProps = useZestTextboxConfig$1().defaultZestProps;
@@ -298,9 +300,9 @@ var useZestTextboxConfig = function (componentZestProps) {
298
300
  }, [contextDefaultZestProps, componentZestProps]);
299
301
  useEffect(function () {
300
302
  var resolveProps = function () { return __awaiter(void 0, void 0, void 0, function () {
301
- var newResolvedProps, _a, _b, _c, _d, _e, _f, _g;
302
- return __generator(this, function (_h) {
303
- switch (_h.label) {
303
+ var newResolvedProps, _a, _b, _c, _d, _e, _f, _g, _h, _j;
304
+ return __generator(this, function (_k) {
305
+ switch (_k.label) {
304
306
  case 0:
305
307
  newResolvedProps = __assign({}, defaultResolvedZestProps);
306
308
  // Resolve each property that can be a ZestConfigValue
@@ -308,33 +310,41 @@ var useZestTextboxConfig = function (componentZestProps) {
308
310
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.zSize, defaultResolvedZestProps.zSize)];
309
311
  case 1:
310
312
  // Resolve each property that can be a ZestConfigValue
311
- _a.zSize = _h.sent();
313
+ _a.zSize = _k.sent();
312
314
  _b = newResolvedProps;
313
315
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.stretch, defaultResolvedZestProps.stretch)];
314
316
  case 2:
315
- _b.stretch = _h.sent();
317
+ _b.stretch = _k.sent();
316
318
  _c = newResolvedProps;
317
319
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.showProgressBar, defaultResolvedZestProps.showProgressBar)];
318
320
  case 3:
319
- _c.showProgressBar = _h.sent();
321
+ _c.showProgressBar = _k.sent();
320
322
  _d = newResolvedProps;
321
323
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.animatedCounter, defaultResolvedZestProps.animatedCounter)];
322
324
  case 4:
323
- _d.animatedCounter = _h.sent();
325
+ _d.animatedCounter = _k.sent();
324
326
  _e = newResolvedProps;
325
327
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.theme, defaultResolvedZestProps.theme)];
326
328
  case 5:
327
- _e.theme = _h.sent();
329
+ _e.theme = _k.sent();
328
330
  _f = newResolvedProps;
329
331
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.isMultiline, defaultResolvedZestProps.isMultiline)];
330
332
  case 6:
331
- _f.isMultiline = _h.sent();
333
+ _f.isMultiline = _k.sent();
332
334
  // onTextChanged is no longer a ZestConfigValue, so it's directly assigned
333
335
  newResolvedProps.onTextChanged = mergedZestProps.onTextChanged;
334
336
  _g = newResolvedProps;
335
337
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.helperTextConfig, defaultResolvedZestProps.helperTextConfig)];
336
338
  case 7:
337
- _g.helperTextConfig = _h.sent();
339
+ _g.helperTextConfig = _k.sent();
340
+ _h = newResolvedProps;
341
+ return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.parser, defaultResolvedZestProps.parser)];
342
+ case 8:
343
+ _h.parser = _k.sent();
344
+ _j = newResolvedProps;
345
+ return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.validator, defaultResolvedZestProps.validator)];
346
+ case 9:
347
+ _j.validator = _k.sent();
338
348
  setResolvedZestProps(newResolvedProps);
339
349
  return [2 /*return*/];
340
350
  }
@@ -345,24 +355,75 @@ var useZestTextboxConfig = function (componentZestProps) {
345
355
  return resolvedZestProps;
346
356
  };
347
357
 
358
+ var useParsedAndValidatedInput = function (_a) {
359
+ var rawValue = _a.rawValue, parser = _a.parser, validator = _a.validator, onParsedAndValidatedChange = _a.onParsedAndValidatedChange;
360
+ var _b = useState(undefined), parsedValue = _b[0], setParsedValue = _b[1];
361
+ var _c = useState(true), isValid = _c[0], setIsValid = _c[1];
362
+ var _d = useState(undefined), validationMessage = _d[0], setValidationMessage = _d[1];
363
+ useEffect(function () {
364
+ var currentParsedValue = undefined;
365
+ var currentIsValid = true;
366
+ var currentValidationMessage = undefined;
367
+ // 1. Parse the raw value
368
+ if (parser) {
369
+ currentParsedValue = parser(rawValue);
370
+ }
371
+ else {
372
+ // If no parser, treat rawValue as the parsed value (e.g., for text inputs)
373
+ currentParsedValue = rawValue;
374
+ }
375
+ // 2. Validate the parsed value
376
+ if (validator) {
377
+ var validationResult = validator(currentParsedValue);
378
+ if (typeof validationResult === "string") {
379
+ currentIsValid = false;
380
+ currentValidationMessage = validationResult;
381
+ }
382
+ else {
383
+ currentIsValid = validationResult;
384
+ if (!currentIsValid) {
385
+ currentValidationMessage = "Invalid input."; // Generic message if validator returns false
386
+ }
387
+ }
388
+ }
389
+ setParsedValue(currentParsedValue);
390
+ setIsValid(currentIsValid);
391
+ setValidationMessage(currentValidationMessage);
392
+ // 3. Call the consumer's callback with the parsed and validated value
393
+ // Only call if a callback is provided and the input is valid
394
+ if (onParsedAndValidatedChange && currentIsValid) {
395
+ onParsedAndValidatedChange(currentParsedValue);
396
+ }
397
+ }, [rawValue, parser, validator, onParsedAndValidatedChange]);
398
+ return { parsedValue: parsedValue, isValid: isValid, validationMessage: validationMessage };
399
+ };
400
+
348
401
  // ... other imports
349
402
  var ZestTextbox = function (props) {
350
403
  var _a = props.className, className = _a === void 0 ? "" : _a, maxLength = props.maxLength, onChange = props.onChange, type = props.type, zest = props.zest, // Destructure the new zest prop
351
404
  rest = __rest(props, ["className", "maxLength", "onChange", "type", "zest"]);
352
405
  var resolvedZestProps = useZestTextboxConfig(zest);
353
- var zSize = resolvedZestProps.zSize, fullWidth = resolvedZestProps.stretch, showProgressBar = resolvedZestProps.showProgressBar, animatedCounter = resolvedZestProps.animatedCounter, theme = resolvedZestProps.theme, helperTextConfig = resolvedZestProps.helperTextConfig, onTextChanged = resolvedZestProps.onTextChanged, isMultiline = resolvedZestProps.isMultiline;
406
+ var zSize = resolvedZestProps.zSize, fullWidth = resolvedZestProps.stretch, showProgressBar = resolvedZestProps.showProgressBar, animatedCounter = resolvedZestProps.animatedCounter, theme = resolvedZestProps.theme, helperTextConfig = resolvedZestProps.helperTextConfig, onTextChanged = resolvedZestProps.onTextChanged, isMultiline = resolvedZestProps.isMultiline, parser = resolvedZestProps.parser, validator = resolvedZestProps.validator;
354
407
  var _b = useState(""), value = _b[0], setValue = _b[1];
355
408
  var isDark = useThemeDetector(theme);
356
409
  var isPassword = type === "password";
357
410
  var _c = usePasswordVisibility(isPassword), isPasswordVisible = _c.isPasswordVisible, togglePasswordVisibility = _c.togglePasswordVisibility;
358
411
  var _d = useCharacterCounter(value, maxLength, animatedCounter), currentLength = _d.currentLength, charPercentage = _d.charPercentage, counterColorClass = _d.counterColorClass, showCounter = _d.showCounter;
359
- var helperTextNode = useHelperText(value, helperTextConfig);
412
+ var _e = useParsedAndValidatedInput({
413
+ rawValue: value,
414
+ parser: parser,
415
+ validator: validator,
416
+ onParsedAndValidatedChange: onTextChanged,
417
+ }), isValid = _e.isValid, validationMessage = _e.validationMessage;
418
+ // Prioritize validation message over regular helper text
419
+ var finalHelperTextNode = validationMessage ? (jsx("span", { style: { color: "red" }, children: validationMessage })) : useHelperText(value, helperTextConfig);
360
420
  var classList = [
361
421
  styles.textbox,
362
422
  styles[zSize],
363
423
  fullWidth ? styles.fullWidth : "",
364
424
  className,
365
425
  isDark ? styles.dark : "",
426
+ !isValid ? styles.error : "", // Add error class if not valid
366
427
  ]
367
428
  .filter(Boolean)
368
429
  .join(" ");
@@ -377,14 +438,13 @@ var ZestTextbox = function (props) {
377
438
  setValue(newValue);
378
439
  if (onChange)
379
440
  onChange(e);
380
- if (onTextChanged)
381
- onTextChanged(newValue);
441
+ // onTextChanged is now handled by useParsedAndValidatedInput
382
442
  };
383
443
  var isNumeric = type === "number" || type === "tel";
384
444
  var inputType = isPassword && isPasswordVisible ? "text" : isNumeric ? "tel" : type;
385
445
  var commonProps = __assign({ className: classList, maxLength: maxLength, onChange: handleInputChange, value: value, type: inputType }, rest);
386
446
  return (jsxs("div", { className: styles.wrapper, children: [isMultiline ? ( // Use isMultiline from zest
387
- jsx("textarea", __assign({}, commonProps))) : (jsx("input", __assign({}, commonProps))), jsx(HelperTextDisplay, { helperTextNode: helperTextNode, className: (helperTextConfig === null || helperTextConfig === void 0 ? void 0 : helperTextConfig.className) || '' }), jsx(CharacterCounter, { showCounter: showCounter, currentLength: currentLength, maxLength: maxLength, counterColorClass: counterColorClass }), jsx(PasswordToggleButton, { isPassword: isPassword, isPasswordVisible: isPasswordVisible, onToggle: togglePasswordVisibility }), jsx(ProgressBar, { showProgressBar: showProgressBar, showCounter: showCounter, charPercentage: charPercentage, counterColorClass: counterColorClass })] }));
447
+ jsx("textarea", __assign({}, commonProps))) : (jsx("input", __assign({}, commonProps))), jsx(HelperTextDisplay, { helperTextNode: finalHelperTextNode, className: (helperTextConfig === null || helperTextConfig === void 0 ? void 0 : helperTextConfig.className) || '' }), jsx(CharacterCounter, { showCounter: showCounter, currentLength: currentLength, maxLength: maxLength, counterColorClass: counterColorClass }), jsx(PasswordToggleButton, { isPassword: isPassword, isPasswordVisible: isPasswordVisible, onToggle: togglePasswordVisibility }), jsx(ProgressBar, { showProgressBar: showProgressBar, showCounter: showCounter, charPercentage: charPercentage, counterColorClass: counterColorClass })] }));
388
448
  };
389
449
 
390
450
  export { CharacterCounter, HelperTextDisplay, PasswordToggleButton, ProgressBar, ZestTextbox, ZestTextboxConfigProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../UI/utils/numericInputFilter.ts","../UI/hooks/useThemeDetector.ts","../UI/hooks/usePasswordVisibility.ts","../UI/hooks/useCharacterCounter.ts","../UI/hooks/useHelperText.ts","../UI/IconEyeOpen.tsx","../UI/IconEyeSlashed.tsx","../UI/components/PasswordToggleButton.tsx","../UI/components/CharacterCounter.tsx","../UI/components/ProgressBar.tsx","../UI/components/HelperTextDisplay.tsx","../UI/contexts/ZestTextboxConfigContext.tsx","../UI/hooks/useZestTextboxConfig.ts","../UI/ZestTextbox.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const filterNumericInput = (value: string): string => {\n // Allow digits, a single leading hyphen, and a single decimal point\n const parts = value.split('.');\n let integerPart = parts[0].replace(/[^0-9-]/g, '');\n let decimalPart = parts.length > 1 ? '.' + parts[1].replace(/[^0-9]/g, '') : '';\n\n // Ensure only one leading hyphen\n if (integerPart.startsWith('-')) {\n integerPart = '-' + integerPart.substring(1).replace(/-/g, '');\n } else {\n integerPart = integerPart.replace(/-/g, '');\n }\n\n let newValue = integerPart + decimalPart;\n\n // Prevent multiple decimal points\n if (newValue.indexOf('.') !== -1 && newValue.indexOf('.') !== newValue.lastIndexOf('.')) {\n newValue = newValue.substring(0, newValue.lastIndexOf('.'));\n }\n\n return newValue;\n};\n","import { useState, useEffect } from \"react\";\nimport { ZestProps } from \"../types\";\n\nexport const useThemeDetector = (theme: ZestProps['theme'] = \"system\") => {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n if (theme === \"dark\") {\n setIsDark(true);\n return;\n }\n if (theme === \"light\") {\n setIsDark(false);\n return;\n }\n\n // System theme\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handleChange = () => setIsDark(mediaQuery.matches);\n\n handleChange(); // Set initial theme\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, [theme]);\n\n return isDark;\n};\n","import { useState } from \"react\";\n\nexport const usePasswordVisibility = (isPasswordType: boolean) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n const togglePasswordVisibility = () => {\n if (isPasswordType) {\n setIsPasswordVisible((prev) => !prev);\n }\n };\n\n return { isPasswordVisible, togglePasswordVisibility };\n};\n","import { useMemo } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\nexport const useCharacterCounter = (\n value: string,\n maxLength: number | undefined,\n animatedCounter: boolean\n) => {\n const currentLength = value.length;\n const showCounter = typeof maxLength === \"number\";\n const charPercentage = showCounter ? (currentLength / maxLength) * 100 : 0;\n\n const counterColorClass = useMemo(() => {\n if (!animatedCounter || !showCounter) return \"\";\n\n if (charPercentage > 90) {\n return styles.counterOrange;\n } else if (charPercentage > 70) {\n return styles.counterYellow;\n }\n return \"\";\n }, [animatedCounter, showCounter, charPercentage]);\n\n return { currentLength, charPercentage, counterColorClass, showCounter };\n};\n","import { useState, useEffect, ReactNode } from \"react\";\nimport { HelperTextConfig } from \"../types\";\n\nexport const useHelperText = (\n value: string,\n helperTextConfig: HelperTextConfig | undefined\n) => {\n const [helperTextNode, setHelperTextNode] = useState<ReactNode>(null);\n\n useEffect(() => {\n if (!helperTextConfig) {\n setHelperTextNode(null);\n return;\n }\n\n const formatted = helperTextConfig.formatter\n ? helperTextConfig.formatter(value)\n : value;\n\n const finalNode = helperTextConfig.templater\n ? helperTextConfig.templater(formatted)\n : formatted;\n\n setHelperTextNode(finalNode);\n }, [value, helperTextConfig]);\n\n return helperTextNode;\n};\n","import React from 'react';\n\nexport const IconEyeOpen: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z\"/>\n <path d=\"M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0\"/>\n </svg>\n);\n","import React from 'react';\n\nexport const IconEyeSlashed: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z\"/>\n <path d=\"M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822zm-2.943-1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822z\"/>\n <path d=\"M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.88 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 6.854-12-12 .708-.708 12 12-.708.708z\"/>\n </svg>\n);\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"../IconEyeOpen\";\nimport { IconEyeSlashed } from \"../IconEyeSlashed\";\n\ninterface PasswordToggleButtonProps {\n isPassword: boolean;\n isPasswordVisible: boolean;\n onToggle: () => void;\n}\n\nexport const PasswordToggleButton: React.FC<PasswordToggleButtonProps> = ({\n isPassword,\n isPasswordVisible,\n onToggle,\n}) => {\n if (!isPassword) return null;\n\n return (\n <div className={styles.passwordToggle} onClick={onToggle}>\n <div className={styles.tooltip}>\n {isPasswordVisible ? \"Hide password\" : \"Show password\"}\n </div>\n {isPasswordVisible ? (\n <IconEyeOpen className={styles.eyeIcon} />\n ) : (\n <IconEyeSlashed className={styles.eyeIcon} />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface CharacterCounterProps {\n showCounter: boolean;\n currentLength: number;\n maxLength: number | undefined;\n counterColorClass: string;\n}\n\nexport const CharacterCounter: React.FC<CharacterCounterProps> = ({\n showCounter,\n currentLength,\n maxLength,\n counterColorClass,\n}) => {\n if (!showCounter) return null;\n\n return (\n <div className={`${styles.counter} ${counterColorClass}`}>\n {currentLength} / {maxLength}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface ProgressBarProps {\n showProgressBar: boolean;\n showCounter: boolean;\n charPercentage: number;\n counterColorClass: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n showProgressBar,\n showCounter,\n charPercentage,\n counterColorClass,\n}) => {\n if (!showProgressBar || !showCounter) return null;\n\n return (\n <div className={styles.progressBarContainer}>\n <div\n className={`${styles.progressBar} ${counterColorClass}`}\n style={{ width: `${charPercentage}%` }}\n />\n </div>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface HelperTextDisplayProps {\n helperTextNode: ReactNode;\n className?: string;\n}\n\nexport const HelperTextDisplay: React.FC<HelperTextDisplayProps> = ({\n helperTextNode,\n className,\n}) => {\n if (!helperTextNode) return null;\n\n return (\n <div\n key={String(helperTextNode)} // Force re-mount to trigger animation\n className={`${styles.helperText} ${className || \"\"}`}\n >\n {helperTextNode}\n </div>\n );\n};\n","import React, { createContext, useContext, ReactNode } from \"react\";\nimport { ZestProps } from \"../types\";\n\n// Define the shape of the context value\ninterface ZestTextboxConfigContextType {\n defaultZestProps: ZestProps;\n}\n\n// Create the context with a default empty object\nconst ZestTextboxConfigContext = createContext<\n ZestTextboxConfigContextType | undefined\n>(undefined);\n\n// Create a provider component\ninterface ZestTextboxConfigProviderProps {\n children: ReactNode;\n value?: ZestProps; // The default ZestProps to provide\n}\n\nexport const ZestTextboxConfigProvider: React.FC<\n ZestTextboxConfigProviderProps\n> = ({ children, value = {} }) => {\n return (\n <ZestTextboxConfigContext.Provider value={{ defaultZestProps: value }}>\n {children}\n </ZestTextboxConfigContext.Provider>\n );\n};\n\n// Custom hook to use the ZestTextboxConfigContext\nexport const useZestTextboxConfig = () => {\n const context = useContext(ZestTextboxConfigContext);\n if (context === undefined) {\n // This error will be caught by the useZestTextboxConfig hook in ZestTextbox.tsx\n // if the component is used outside of a provider.\n return { defaultZestProps: {} };\n }\n return context;\n};\n","import { useEffect, useState, useMemo } from \"react\";\nimport { ZestProps, ZestConfigValue, ZestTextboxSize, HelperTextConfig, ResolvedZestProps } from \"../types\";\nimport { useZestTextboxConfig as useZestTextboxContext } from \"../contexts/ZestTextboxConfigContext\";\n\n// Helper function to resolve a ZestConfigValue\nasync function resolveZestConfigValue<T>(\n configValue: ZestConfigValue<T> | undefined,\n defaultValue: T\n): Promise<T> {\n if (configValue === undefined) {\n return defaultValue;\n }\n if (typeof configValue === \"function\") {\n const result = (configValue as () => T | Promise<T>)();\n return result instanceof Promise ? await result : result;\n }\n return configValue;\n}\n\nconst defaultResolvedZestProps: ResolvedZestProps = {\n zSize: \"md\",\n stretch: false,\n showProgressBar: false,\n animatedCounter: false,\n theme: \"system\",\n isMultiline: false,\n onTextChanged: undefined,\n helperTextConfig: undefined,\n};\n\nexport const useZestTextboxConfig = (componentZestProps: ZestProps | undefined) => {\n const { defaultZestProps: contextDefaultZestProps } = useZestTextboxContext();\n\n const [resolvedZestProps, setResolvedZestProps] = useState<ResolvedZestProps>(defaultResolvedZestProps);\n\n // Memoize the merged props to avoid unnecessary re-renders\n const mergedZestProps = useMemo(() => {\n // Component props take precedence over context default props, which take precedence over hardcoded defaults\n return { ...defaultResolvedZestProps, ...contextDefaultZestProps, ...componentZestProps };\n }, [contextDefaultZestProps, componentZestProps]);\n\n useEffect(() => {\n const resolveProps = async () => {\n const newResolvedProps: ResolvedZestProps = { ...defaultResolvedZestProps }; // Initialize with defaults\n\n // Resolve each property that can be a ZestConfigValue\n newResolvedProps.zSize = await resolveZestConfigValue(\n mergedZestProps.zSize,\n defaultResolvedZestProps.zSize\n );\n newResolvedProps.stretch = await resolveZestConfigValue(\n mergedZestProps.stretch,\n defaultResolvedZestProps.stretch\n );\n newResolvedProps.showProgressBar = await resolveZestConfigValue(\n mergedZestProps.showProgressBar,\n defaultResolvedZestProps.showProgressBar\n );\n newResolvedProps.animatedCounter = await resolveZestConfigValue(\n mergedZestProps.animatedCounter,\n defaultResolvedZestProps.animatedCounter\n );\n newResolvedProps.theme = await resolveZestConfigValue(\n mergedZestProps.theme,\n defaultResolvedZestProps.theme\n );\n newResolvedProps.isMultiline = await resolveZestConfigValue(\n mergedZestProps.isMultiline,\n defaultResolvedZestProps.isMultiline\n );\n // onTextChanged is no longer a ZestConfigValue, so it's directly assigned\n newResolvedProps.onTextChanged = mergedZestProps.onTextChanged;\n\n newResolvedProps.helperTextConfig = await resolveZestConfigValue(\n mergedZestProps.helperTextConfig,\n defaultResolvedZestProps.helperTextConfig\n );\n\n setResolvedZestProps(newResolvedProps);\n };\n\n resolveProps();\n }, [mergedZestProps]); // Re-run effect if merged props change\n\n return resolvedZestProps;\n};","import React, { useState } from \"react\";\nimport styles from \"../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"./IconEyeOpen\";\nimport { IconEyeSlashed } from \"./IconEyeSlashed\";\n\nimport { ZestTextboxSize, HelperTextConfig, ZestProps } from \"./types\";\n\ntype SharedProps = {\n /**\n * An object containing all custom configurations and behaviors specific to the ZestTextbox component.\n * This encapsulates all non-native HTML input/textarea props for better discoverability and DX.\n * @see ZestProps\n */\n zest?: ZestProps;\n /**\n * A custom CSS class to apply to the main textbox element.\n */\n className?: string;\n /**\n * The maximum number of characters allowed in the input.\n * Enables the character counter.\n */\n maxLength?: number;\n /**\n * The type of the input element. All standard HTML input types are supported.\n * Special handling is applied for `password` and `number`.\n * @default 'text'\n */\n type?:\n | \"text\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"url\"\n | \"search\"\n | \"color\"\n | \"date\"\n | \"datetime-local\"\n | \"month\"\n | \"time\"\n | \"week\";\n};\n\ntype InputOnlyProps = SharedProps &\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n };\n\ntype TextareaOnlyProps = SharedProps &\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n };\n\ntype ZestTextboxProps = InputOnlyProps | TextareaOnlyProps;\n\nimport { filterNumericInput } from \"./utils/numericInputFilter\";\nimport { useThemeDetector } from \"./hooks/useThemeDetector\";\nimport { usePasswordVisibility } from \"./hooks/usePasswordVisibility\";\nimport { useCharacterCounter } from \"./hooks/useCharacterCounter\";\nimport { useHelperText } from \"./hooks/useHelperText\";\nimport { PasswordToggleButton } from \"./components/PasswordToggleButton\";\nimport { CharacterCounter } from \"./components/CharacterCounter\";\nimport { ProgressBar } from \"./components/ProgressBar\";\nimport { HelperTextDisplay } from \"./components/HelperTextDisplay\";\nimport { useZestTextboxConfig } from \"./hooks/useZestTextboxConfig\";\n\n// ... other imports\n\nexport const ZestTextbox: React.FC<ZestTextboxProps> = (props) => {\n const {\n className = \"\",\n maxLength,\n onChange,\n type,\n zest, // Destructure the new zest prop\n ...rest\n } = props;\n\n const resolvedZestProps = useZestTextboxConfig(zest);\n const {\n zSize,\n stretch: fullWidth,\n showProgressBar,\n animatedCounter,\n theme,\n helperTextConfig,\n onTextChanged,\n isMultiline,\n } = resolvedZestProps;\n\n const [value, setValue] = useState(\"\");\n\n const isDark = useThemeDetector(theme);\n const isPassword = type === \"password\";\n const { isPasswordVisible, togglePasswordVisibility } = usePasswordVisibility(isPassword);\n const { currentLength, charPercentage, counterColorClass, showCounter } = useCharacterCounter(value, maxLength, animatedCounter);\n const helperTextNode = useHelperText(value, helperTextConfig);\n\n const classList = [\n styles.textbox,\n styles[zSize],\n fullWidth ? styles.fullWidth : \"\",\n className,\n isDark ? styles.dark : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n let newValue = e.target.value;\n\n const isNumeric = type === \"number\" || type === \"tel\";\n if (isNumeric) {\n newValue = filterNumericInput(newValue);\n }\n\n if (maxLength !== undefined && newValue.length > maxLength) return;\n\n setValue(newValue);\n\n if (onChange) onChange(e as never);\n if (onTextChanged) onTextChanged(newValue);\n };\n\n const isNumeric = type === \"number\" || type === \"tel\";\n const inputType = isPassword && isPasswordVisible ? \"text\" : isNumeric ? \"tel\" : type;\n\n const commonProps = {\n className: classList,\n maxLength,\n onChange: handleInputChange,\n value,\n type: inputType,\n ...rest,\n };\n\n return (\n <div className={styles.wrapper}>\n {isMultiline ? ( // Use isMultiline from zest\n <textarea\n {...(commonProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n ) : (\n <input\n {...(commonProps as React.InputHTMLAttributes<HTMLInputElement>)}\n />\n )}\n\n <HelperTextDisplay\n helperTextNode={helperTextNode}\n className={helperTextConfig?.className || ''}\n />\n\n <CharacterCounter\n showCounter={showCounter}\n currentLength={currentLength}\n maxLength={maxLength}\n counterColorClass={counterColorClass}\n />\n\n <PasswordToggleButton\n isPassword={isPassword}\n isPasswordVisible={isPasswordVisible}\n onToggle={togglePasswordVisibility}\n />\n\n <ProgressBar\n showProgressBar={showProgressBar}\n showCounter={showCounter}\n charPercentage={charPercentage}\n counterColorClass={counterColorClass}\n />\n </div>\n );\n};\n\nexport default ZestTextbox;"],"names":["_jsxs","_jsx","useZestTextboxConfig","useZestTextboxContext"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAeA;AACO,IAAI,QAAQ,GAAG,WAAW;AACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,IAAI,EAAC;AACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAC;AACD;AACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,CAAC;AACT,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AA6DD;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,IAAI,CAAC,CAAC,CAAC;AACP,CAAC;AACD;AACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;AACrM,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChK,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACtD,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;AAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AACjE,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AAC3C,aAAa;AACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,IAAI,CAAC;AACL,CAAC;AAiLD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACrF;;AC3UA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAY,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;;ACzBO,IAAM,kBAAkB,GAAG,UAAC,KAAa,EAAA;;IAE9C,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAClD,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE;;AAG/E,IAAA,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAA,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAChE;SAAO;QACL,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC7C;AAEA,IAAA,IAAI,QAAQ,GAAG,WAAW,GAAG,WAAW;;IAGxC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACvF,QAAA,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7D;AAEA,IAAA,OAAO,QAAQ;AACjB,CAAC;;AClBM,IAAM,gBAAgB,GAAG,UAAC,KAAoC,EAAA;AAApC,IAAA,IAAA,KAAA,KAAA,MAAA,EAAA,EAAA,KAAA,GAAA,QAAoC,CAAA,CAAA;IAC7D,IAAA,EAAA,GAAsB,QAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAmB;AAE3C,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,SAAS,CAAC,IAAI,CAAC;YACf;QACF;AACA,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;YACrB,SAAS,CAAC,KAAK,CAAC;YAChB;QACF;;QAGA,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC;AACpE,QAAA,IAAM,YAAY,GAAG,YAAA,EAAM,OAAA,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,CAA7B,CAA6B;QAExD,YAAY,EAAE,CAAC;AACf,QAAA,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;AAEnD,QAAA,OAAO,YAAA,EAAM,OAAA,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA,CAAtD,CAAsD;AACrE,IAAA,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEX,IAAA,OAAO,MAAM;AACf,CAAC;;ACzBM,IAAM,qBAAqB,GAAG,UAAC,cAAuB,EAAA;IACrD,IAAA,EAAA,GAA4C,QAAQ,CAAC,KAAK,CAAC,EAA1D,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,oBAAoB,GAAA,EAAA,CAAA,CAAA,CAAmB;AAEjE,IAAA,IAAM,wBAAwB,GAAG,YAAA;QAC/B,IAAI,cAAc,EAAE;YAClB,oBAAoB,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,CAAC,IAAI,CAAA,CAAL,CAAK,CAAC;QACvC;AACF,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,iBAAiB,EAAA,iBAAA,EAAE,wBAAwB,EAAA,wBAAA,EAAE;AACxD,CAAC;;ACTM,IAAM,mBAAmB,GAAG,UACjC,KAAa,EACb,SAA6B,EAC7B,eAAwB,EAAA;AAExB,IAAA,IAAM,aAAa,GAAG,KAAK,CAAC,MAAM;AAClC,IAAA,IAAM,WAAW,GAAG,OAAO,SAAS,KAAK,QAAQ;AACjD,IAAA,IAAM,cAAc,GAAG,WAAW,GAAG,CAAC,aAAa,GAAG,SAAS,IAAI,GAAG,GAAG,CAAC;IAE1E,IAAM,iBAAiB,GAAG,OAAO,CAAC,YAAA;AAChC,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,EAAE;AAE/C,QAAA,IAAI,cAAc,GAAG,EAAE,EAAE;YACvB,OAAO,MAAM,CAAC,aAAa;QAC7B;AAAO,aAAA,IAAI,cAAc,GAAG,EAAE,EAAE;YAC9B,OAAO,MAAM,CAAC,aAAa;QAC7B;AACA,QAAA,OAAO,EAAE;IACX,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAElD,IAAA,OAAO,EAAE,aAAa,EAAA,aAAA,EAAE,cAAc,EAAA,cAAA,EAAE,iBAAiB,EAAA,iBAAA,EAAE,WAAW,EAAA,WAAA,EAAE;AAC1E,CAAC;;ACrBM,IAAM,aAAa,GAAG,UAC3B,KAAa,EACb,gBAA8C,EAAA;IAExC,IAAA,EAAA,GAAsC,QAAQ,CAAY,IAAI,CAAC,EAA9D,cAAc,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAA6B;AAErE,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,CAAC,gBAAgB,EAAE;YACrB,iBAAiB,CAAC,IAAI,CAAC;YACvB;QACF;AAEA,QAAA,IAAM,SAAS,GAAG,gBAAgB,CAAC;AACjC,cAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK;cAChC,KAAK;AAET,QAAA,IAAM,SAAS,GAAG,gBAAgB,CAAC;AACjC,cAAE,gBAAgB,CAAC,SAAS,CAAC,SAAS;cACpC,SAAS;QAEb,iBAAiB,CAAC,SAAS,CAAC;AAC9B,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAE7B,IAAA,OAAO,cAAc;AACvB,CAAC;;ACzBM,IAAM,WAAW,GAA4C,UAAC,KAAK,EAAA,EAAK,QAC7EA,IAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,IAAK,KAAK,EAAA,EAAA,QAAA,EAAA,CAC9GC,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,uRAAuR,GAAE,EACjSA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,sFAAsF,GAAE,CAAA,EAAA,CAAA,CAC5F,EACP,CAL8E,CAK9E;;ACLM,IAAM,cAAc,GAA4C,UAAC,KAAK,EAAA,EAAK,QAChFD,IAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAA,EAAK,KAAK,EAAA,EAAA,QAAA,EAAA,CAC9GC,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,uQAAuQ,EAAA,CAAE,EACjRA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,8SAA8S,EAAA,CAAE,EACxTA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,6RAA6R,EAAA,CAAE,CAAA,EAAA,CAAA,CACnS,EACP,CANiF,CAMjF;;ACGM,IAAM,oBAAoB,GAAwC,UAAC,EAIzE,EAAA;AAHC,IAAA,IAAA,UAAU,gBAAA,EACV,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EACjB,QAAQ,GAAA,EAAA,CAAA,QAAA;AAER,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,IAAI;AAE5B,IAAA,QACED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAA,QAAA,EAAA,CACtDC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,QAAA,EAC3B,iBAAiB,GAAG,eAAe,GAAG,eAAe,EAAA,CAClD,EACL,iBAAiB,IAChBA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,CAAI,KAE1CA,GAAA,CAAC,cAAc,EAAA,EAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,CAAI,CAC9C,CAAA,EAAA,CACG;AAEV;;ACpBO,IAAM,gBAAgB,GAAoC,UAAC,EAKjE,EAAA;QAJC,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,iBAAiB,GAAA,EAAA,CAAA,iBAAA;AAEjB,IAAA,IAAI,CAAC,WAAW;AAAE,QAAA,OAAO,IAAI;AAE7B,IAAA,QACED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAA,CAAA,MAAA,CAAG,MAAM,CAAC,OAAO,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,iBAAiB,CAAE,EAAA,QAAA,EAAA,CACrD,aAAa,SAAK,SAAS,CAAA,EAAA,CACxB;AAEV;;ACbO,IAAM,WAAW,GAA+B,UAAC,EAKvD,EAAA;QAJC,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,iBAAiB,GAAA,EAAA,CAAA,iBAAA;AAEjB,IAAA,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW;AAAE,QAAA,OAAO,IAAI;AAEjD,IAAA,QACEC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAA,QAAA,EACzCA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAA,CAAA,MAAA,CAAG,MAAM,CAAC,WAAW,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,iBAAiB,CAAE,EACvD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA,CAAA,MAAA,CAAG,cAAc,EAAA,GAAA,CAAG,EAAE,EAAA,CACtC,EAAA,CACE;AAEV;;AClBO,IAAM,iBAAiB,GAAqC,UAAC,EAGnE,EAAA;QAFC,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,SAAS,GAAA,EAAA,CAAA,SAAA;AAET,IAAA,IAAI,CAAC,cAAc;AAAE,QAAA,OAAO,IAAI;IAEhC,QACEA,aAEE,SAAS,EAAE,UAAG,MAAM,CAAC,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,SAAS,IAAI,EAAE,CAAE,EAAA,QAAA,EAEnD,cAAc,EAAA,EAHV,MAAM,CAAC,cAAc,CAAC,CAIvB;AAEV;;ACdA;AACA,IAAM,wBAAwB,GAAG,aAAa,CAE5C,SAAS,CAAC;AAQL,IAAM,yBAAyB,GAElC,UAAC,EAAwB,EAAA;AAAtB,IAAA,IAAA,QAAQ,cAAA,EAAE,EAAA,GAAA,EAAA,CAAA,KAAU,EAAV,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA;AACzB,IAAA,QACEA,GAAA,CAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAClE,QAAQ,EAAA,CACyB;AAExC;AAEA;AACO,IAAMC,sBAAoB,GAAG,YAAA;AAClC,IAAA,IAAM,OAAO,GAAG,UAAU,CAAC,wBAAwB,CAAC;AACpD,IAAA,IAAI,OAAO,KAAK,SAAS,EAAE;;;AAGzB,QAAA,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;IACjC;AACA,IAAA,OAAO,OAAO;AAChB,CAAC;;AClCD;AACA,SAAe,sBAAsB,CACnC,WAA2C,EAC3C,YAAe,EAAA;;;;;;AAEf,oBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,wBAAA,OAAA,CAAA,CAAA,aAAO,YAAY,CAAA;oBACrB;AACI,oBAAA,IAAA,EAAA,OAAO,WAAW,KAAK,UAAU,CAAA,EAAjC,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;oBACI,MAAM,GAAI,WAAoC,EAAE;AAC/C,oBAAA,IAAA,EAAA,MAAM,YAAY,OAAO,CAAA,EAAzB,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;AAA4B,oBAAA,OAAA,CAAA,CAAA,YAAM,MAAM,CAAA;;AAAZ,oBAAA,EAAA,GAAA,SAAY;;;AAAG,oBAAA,EAAA,GAAA,MAAM;;wBAAxD,OAAA,CAAA,CAAA,aAAA,EAAA,CAAA;AAEF,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,WAAW,CAAA;;;;AACnB;AAED,IAAM,wBAAwB,GAAsB;AAClD,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,gBAAgB,EAAE,SAAS;CAC5B;AAEM,IAAM,oBAAoB,GAAG,UAAC,kBAAyC,EAAA;AACpE,IAAA,IAAkB,uBAAuB,GAAKC,sBAAqB,EAAE,iBAA5B;IAE3C,IAAA,EAAA,GAA4C,QAAQ,CAAoB,wBAAwB,CAAC,EAAhG,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,oBAAoB,GAAA,EAAA,CAAA,CAAA,CAAyD;;IAGvG,IAAM,eAAe,GAAG,OAAO,CAAC,YAAA;;AAE9B,QAAA,OAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAY,wBAAwB,CAAA,EAAK,uBAAuB,CAAA,EAAK,kBAAkB,CAAA;AACzF,IAAA,CAAC,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAEjD,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAM,YAAY,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;wBACb,gBAAgB,GAAA,QAAA,CAAA,EAAA,EAA2B,wBAAwB,CAAE;;AAG3E,wBAAA,EAAA,GAAA,gBAAgB;wBAAS,OAAA,CAAA,CAAA,YAAM,sBAAsB,CACnD,eAAe,CAAC,KAAK,EACrB,wBAAwB,CAAC,KAAK,CAC/B,CAAA;;;wBAHD,EAAA,CAAiB,KAAK,GAAG,EAAA,CAAA,IAAA,EAGxB;AACD,wBAAA,EAAA,GAAA,gBAAgB;wBAAW,OAAA,CAAA,CAAA,YAAM,sBAAsB,CACrD,eAAe,CAAC,OAAO,EACvB,wBAAwB,CAAC,OAAO,CACjC,CAAA;;wBAHD,EAAA,CAAiB,OAAO,GAAG,EAAA,CAAA,IAAA,EAG1B;AACD,wBAAA,EAAA,GAAA,gBAAgB;wBAAmB,OAAA,CAAA,CAAA,YAAM,sBAAsB,CAC7D,eAAe,CAAC,eAAe,EAC/B,wBAAwB,CAAC,eAAe,CACzC,CAAA;;wBAHD,EAAA,CAAiB,eAAe,GAAG,EAAA,CAAA,IAAA,EAGlC;AACD,wBAAA,EAAA,GAAA,gBAAgB;wBAAmB,OAAA,CAAA,CAAA,YAAM,sBAAsB,CAC7D,eAAe,CAAC,eAAe,EAC/B,wBAAwB,CAAC,eAAe,CACzC,CAAA;;wBAHD,EAAA,CAAiB,eAAe,GAAG,EAAA,CAAA,IAAA,EAGlC;AACD,wBAAA,EAAA,GAAA,gBAAgB;wBAAS,OAAA,CAAA,CAAA,YAAM,sBAAsB,CACnD,eAAe,CAAC,KAAK,EACrB,wBAAwB,CAAC,KAAK,CAC/B,CAAA;;wBAHD,EAAA,CAAiB,KAAK,GAAG,EAAA,CAAA,IAAA,EAGxB;AACD,wBAAA,EAAA,GAAA,gBAAgB;wBAAe,OAAA,CAAA,CAAA,YAAM,sBAAsB,CACzD,eAAe,CAAC,WAAW,EAC3B,wBAAwB,CAAC,WAAW,CACrC,CAAA;;wBAHD,EAAA,CAAiB,WAAW,GAAG,EAAA,CAAA,IAAA,EAG9B;;AAED,wBAAA,gBAAgB,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa;AAE9D,wBAAA,EAAA,GAAA,gBAAgB;wBAAoB,OAAA,CAAA,CAAA,YAAM,sBAAsB,CAC9D,eAAe,CAAC,gBAAgB,EAChC,wBAAwB,CAAC,gBAAgB,CAC1C,CAAA;;wBAHD,EAAA,CAAiB,gBAAgB,GAAG,EAAA,CAAA,IAAA,EAGnC;wBAED,oBAAoB,CAAC,gBAAgB,CAAC;;;;aACvC;AAED,QAAA,YAAY,EAAE;AAChB,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtB,IAAA,OAAO,iBAAiB;AAC1B,CAAC;;AClBD;AAEO,IAAM,WAAW,GAA+B,UAAC,KAAK,EAAA;AAEzD,IAAA,IAAA,EAAA,GAME,KAAK,CAAA,SANO,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACd,SAAS,GAKP,KAAK,CAAA,SALE,EACT,QAAQ,GAIN,KAAK,CAAA,QAJC,EACR,IAAI,GAGF,KAAK,CAAA,IAHH,EACJ,IAAI,GAEF,KAAK,CAAA,IAFH;AACD,IAAA,IAAI,GAAA,MAAA,CACL,KAAK,EAPH,CAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAOL,CADQ;AAGT,IAAA,IAAM,iBAAiB,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAElD,IAAA,IAAA,KAAK,GAQH,iBAAiB,CAAA,KARd,EACI,SAAS,GAOhB,iBAAiB,CAAA,OAPD,EAClB,eAAe,GAMb,iBAAiB,gBANJ,EACf,eAAe,GAKb,iBAAiB,CAAA,eALJ,EACf,KAAK,GAIH,iBAAiB,CAAA,KAJd,EACL,gBAAgB,GAGd,iBAAiB,CAAA,gBAHH,EAChB,aAAa,GAEX,iBAAiB,CAAA,aAFN,EACb,WAAW,GACT,iBAAiB,YADR;IAGP,IAAA,EAAA,GAAoB,QAAQ,CAAC,EAAE,CAAC,EAA/B,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAgB;AAEtC,IAAA,IAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACtC,IAAA,IAAM,UAAU,GAAG,IAAI,KAAK,UAAU;IAChC,IAAA,EAAA,GAAkD,qBAAqB,CAAC,UAAU,CAAC,EAAjF,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EAAE,wBAAwB,GAAA,EAAA,CAAA,wBAAsC;IACnF,IAAA,EAAA,GAAoE,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,EAAxH,aAAa,GAAA,EAAA,CAAA,aAAA,EAAE,cAAc,GAAA,EAAA,CAAA,cAAA,EAAE,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAA2D;IAChI,IAAM,cAAc,GAAG,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAE7D,IAAA,IAAM,SAAS,GAAG;AAChB,QAAA,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,KAAK,CAAC;QACb,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,EAAE;QACjC,SAAS;QACT,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE;AAC1B;SACE,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEZ,IAAM,iBAAiB,GAAG,UACxB,CAA4D,EAAA;AAE5D,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;QAE7B,IAAM,SAAS,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK;QACrD,IAAI,SAAS,EAAE;AACb,YAAA,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QACzC;QAEA,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS;YAAE;QAE5D,QAAQ,CAAC,QAAQ,CAAC;AAElB,QAAA,IAAI,QAAQ;YAAE,QAAQ,CAAC,CAAU,CAAC;AAClC,QAAA,IAAI,aAAa;YAAE,aAAa,CAAC,QAAQ,CAAC;AAC5C,IAAA,CAAC;IAED,IAAM,SAAS,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK;IACrD,IAAM,SAAS,GAAG,UAAU,IAAI,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI;IAErF,IAAM,WAAW,cACf,SAAS,EAAE,SAAS,EACpB,SAAS,EAAA,SAAA,EACT,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,OAAA,EACL,IAAI,EAAE,SAAS,EAAA,EACZ,IAAI,CACR;AAED,IAAA,QACEH,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,QAAA,EAAA,CAC3B,WAAW;AACV,YAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EACO,WAAiE,CAAA,CACtE,KAEFA,GAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EACO,WAA2D,EAChE,CACH,EAEDA,IAAC,iBAAiB,EAAA,EAChB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,CAAA,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,MAAA,GAAA,MAAA,GAAhB,gBAAgB,CAAE,SAAS,KAAI,EAAE,EAAA,CAC5C,EAEFA,IAAC,gBAAgB,EAAA,EACf,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EAAA,CACpC,EAEFA,IAAC,oBAAoB,EAAA,EACnB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,wBAAwB,EAAA,CAClC,EAEFA,GAAA,CAAC,WAAW,IACV,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,EAAA,CACpC,CAAA,EAAA,CACE;AAEV;;;;","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../UI/utils/numericInputFilter.ts","../UI/hooks/useThemeDetector.ts","../UI/hooks/usePasswordVisibility.ts","../UI/hooks/useCharacterCounter.ts","../UI/hooks/useHelperText.ts","../UI/IconEyeOpen.tsx","../UI/IconEyeSlashed.tsx","../UI/components/PasswordToggleButton.tsx","../UI/components/CharacterCounter.tsx","../UI/components/ProgressBar.tsx","../UI/components/HelperTextDisplay.tsx","../UI/contexts/ZestTextboxConfigContext.tsx","../UI/hooks/useZestTextboxConfig.ts","../UI/hooks/useParsedAndValidatedInput.ts","../UI/ZestTextbox.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const filterNumericInput = (value: string): string => {\n // Allow digits, a single leading hyphen, and a single decimal point\n const parts = value.split('.');\n let integerPart = parts[0].replace(/[^0-9-]/g, '');\n let decimalPart = parts.length > 1 ? '.' + parts[1].replace(/[^0-9]/g, '') : '';\n\n // Ensure only one leading hyphen\n if (integerPart.startsWith('-')) {\n integerPart = '-' + integerPart.substring(1).replace(/-/g, '');\n } else {\n integerPart = integerPart.replace(/-/g, '');\n }\n\n let newValue = integerPart + decimalPart;\n\n // Prevent multiple decimal points\n if (newValue.indexOf('.') !== -1 && newValue.indexOf('.') !== newValue.lastIndexOf('.')) {\n newValue = newValue.substring(0, newValue.lastIndexOf('.'));\n }\n\n return newValue;\n};\n","import { useState, useEffect } from \"react\";\nimport { ZestProps } from \"../types\";\n\nexport const useThemeDetector = (theme: ZestProps['theme'] = \"system\") => {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n if (theme === \"dark\") {\n setIsDark(true);\n return;\n }\n if (theme === \"light\") {\n setIsDark(false);\n return;\n }\n\n // System theme\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handleChange = () => setIsDark(mediaQuery.matches);\n\n handleChange(); // Set initial theme\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, [theme]);\n\n return isDark;\n};\n","import { useState } from \"react\";\n\nexport const usePasswordVisibility = (isPasswordType: boolean) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n const togglePasswordVisibility = () => {\n if (isPasswordType) {\n setIsPasswordVisible((prev) => !prev);\n }\n };\n\n return { isPasswordVisible, togglePasswordVisibility };\n};\n","import { useMemo } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\nexport const useCharacterCounter = (\n value: string,\n maxLength: number | undefined,\n animatedCounter: boolean\n) => {\n const currentLength = value.length;\n const showCounter = typeof maxLength === \"number\";\n const charPercentage = showCounter ? (currentLength / maxLength) * 100 : 0;\n\n const counterColorClass = useMemo(() => {\n if (!animatedCounter || !showCounter) return \"\";\n\n if (charPercentage > 90) {\n return styles.counterOrange;\n } else if (charPercentage > 70) {\n return styles.counterYellow;\n }\n return \"\";\n }, [animatedCounter, showCounter, charPercentage]);\n\n return { currentLength, charPercentage, counterColorClass, showCounter };\n};\n","import { useState, useEffect, ReactNode } from \"react\";\nimport { HelperTextConfig } from \"../types\";\n\nexport const useHelperText = (\n value: string,\n helperTextConfig: HelperTextConfig | undefined\n) => {\n const [helperTextNode, setHelperTextNode] = useState<ReactNode>(null);\n\n useEffect(() => {\n if (!helperTextConfig) {\n setHelperTextNode(null);\n return;\n }\n\n const formatted = helperTextConfig.formatter\n ? helperTextConfig.formatter(value)\n : value;\n\n const finalNode = helperTextConfig.templater\n ? helperTextConfig.templater(formatted)\n : formatted;\n\n setHelperTextNode(finalNode);\n }, [value, helperTextConfig]);\n\n return helperTextNode;\n};\n","import React from 'react';\n\nexport const IconEyeOpen: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z\"/>\n <path d=\"M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0\"/>\n </svg>\n);\n","import React from 'react';\n\nexport const IconEyeSlashed: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z\"/>\n <path d=\"M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822zm-2.943-1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822z\"/>\n <path d=\"M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.88 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 6.854-12-12 .708-.708 12 12-.708.708z\"/>\n </svg>\n);\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"../IconEyeOpen\";\nimport { IconEyeSlashed } from \"../IconEyeSlashed\";\n\ninterface PasswordToggleButtonProps {\n isPassword: boolean;\n isPasswordVisible: boolean;\n onToggle: () => void;\n}\n\nexport const PasswordToggleButton: React.FC<PasswordToggleButtonProps> = ({\n isPassword,\n isPasswordVisible,\n onToggle,\n}) => {\n if (!isPassword) return null;\n\n return (\n <div className={styles.passwordToggle} onClick={onToggle}>\n <div className={styles.tooltip}>\n {isPasswordVisible ? \"Hide password\" : \"Show password\"}\n </div>\n {isPasswordVisible ? (\n <IconEyeOpen className={styles.eyeIcon} />\n ) : (\n <IconEyeSlashed className={styles.eyeIcon} />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface CharacterCounterProps {\n showCounter: boolean;\n currentLength: number;\n maxLength: number | undefined;\n counterColorClass: string;\n}\n\nexport const CharacterCounter: React.FC<CharacterCounterProps> = ({\n showCounter,\n currentLength,\n maxLength,\n counterColorClass,\n}) => {\n if (!showCounter) return null;\n\n return (\n <div className={`${styles.counter} ${counterColorClass}`}>\n {currentLength} / {maxLength}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface ProgressBarProps {\n showProgressBar: boolean;\n showCounter: boolean;\n charPercentage: number;\n counterColorClass: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n showProgressBar,\n showCounter,\n charPercentage,\n counterColorClass,\n}) => {\n if (!showProgressBar || !showCounter) return null;\n\n return (\n <div className={styles.progressBarContainer}>\n <div\n className={`${styles.progressBar} ${counterColorClass}`}\n style={{ width: `${charPercentage}%` }}\n />\n </div>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface HelperTextDisplayProps {\n helperTextNode: ReactNode;\n className?: string;\n}\n\nexport const HelperTextDisplay: React.FC<HelperTextDisplayProps> = ({\n helperTextNode,\n className,\n}) => {\n if (!helperTextNode) return null;\n\n return (\n <div\n key={String(helperTextNode)} // Force re-mount to trigger animation\n className={`${styles.helperText} ${className || \"\"}`}\n >\n {helperTextNode}\n </div>\n );\n};\n","import React, { createContext, useContext, ReactNode } from \"react\";\nimport { ZestProps } from \"../types\";\n\n// Define the shape of the context value\ninterface ZestTextboxConfigContextType {\n defaultZestProps: ZestProps;\n}\n\n// Create the context with a default empty object\nconst ZestTextboxConfigContext = createContext<\n ZestTextboxConfigContextType | undefined\n>(undefined);\n\n// Create a provider component\ninterface ZestTextboxConfigProviderProps {\n children: ReactNode;\n value?: ZestProps; // The default ZestProps to provide\n}\n\nexport const ZestTextboxConfigProvider: React.FC<\n ZestTextboxConfigProviderProps\n> = ({ children, value = {} }) => {\n return (\n <ZestTextboxConfigContext.Provider value={{ defaultZestProps: value }}>\n {children}\n </ZestTextboxConfigContext.Provider>\n );\n};\n\n// Custom hook to use the ZestTextboxConfigContext\nexport const useZestTextboxConfig = () => {\n const context = useContext(ZestTextboxConfigContext);\n if (context === undefined) {\n // This error will be caught by the useZestTextboxConfig hook in ZestTextbox.tsx\n // if the component is used outside of a provider.\n return { defaultZestProps: {} };\n }\n return context;\n};\n","import { useEffect, useState, useMemo } from \"react\";\nimport { ZestProps, ZestConfigValue, ZestTextboxSize, HelperTextConfig, ResolvedZestProps, InputParser, InputValidator } from \"../types\";\nimport { useZestTextboxConfig as useZestTextboxContext } from \"../contexts/ZestTextboxConfigContext\";\n\n// Helper function to resolve a ZestConfigValue\nasync function resolveZestConfigValue<T>(\n configValue: ZestConfigValue<T> | undefined,\n defaultValue: T\n): Promise<T> {\n if (configValue === undefined) {\n return defaultValue;\n }\n if (typeof configValue === \"function\") {\n const result = (configValue as () => T | Promise<T>)();\n return result instanceof Promise ? await result : result;\n }\n return configValue;\n}\n\nconst defaultResolvedZestProps: ResolvedZestProps = {\n zSize: \"md\",\n stretch: false,\n showProgressBar: false,\n animatedCounter: false,\n theme: \"system\",\n isMultiline: false,\n onTextChanged: undefined,\n helperTextConfig: undefined,\n parser: undefined,\n validator: undefined,\n};\n\nexport const useZestTextboxConfig = (componentZestProps: ZestProps | undefined) => {\n const { defaultZestProps: contextDefaultZestProps } = useZestTextboxContext();\n\n const [resolvedZestProps, setResolvedZestProps] = useState<ResolvedZestProps>(defaultResolvedZestProps);\n\n // Memoize the merged props to avoid unnecessary re-renders\n const mergedZestProps = useMemo(() => {\n // Component props take precedence over context default props, which take precedence over hardcoded defaults\n return { ...defaultResolvedZestProps, ...contextDefaultZestProps, ...componentZestProps };\n }, [contextDefaultZestProps, componentZestProps]);\n\n useEffect(() => {\n const resolveProps = async () => {\n const newResolvedProps: ResolvedZestProps = { ...defaultResolvedZestProps }; // Initialize with defaults\n\n // Resolve each property that can be a ZestConfigValue\n newResolvedProps.zSize = await resolveZestConfigValue(\n mergedZestProps.zSize,\n defaultResolvedZestProps.zSize\n );\n newResolvedProps.stretch = await resolveZestConfigValue(\n mergedZestProps.stretch,\n defaultResolvedZestProps.stretch\n );\n newResolvedProps.showProgressBar = await resolveZestConfigValue(\n mergedZestProps.showProgressBar,\n defaultResolvedZestProps.showProgressBar\n );\n newResolvedProps.animatedCounter = await resolveZestConfigValue(\n mergedZestProps.animatedCounter,\n defaultResolvedZestProps.animatedCounter\n );\n newResolvedProps.theme = await resolveZestConfigValue(\n mergedZestProps.theme,\n defaultResolvedZestProps.theme\n );\n newResolvedProps.isMultiline = await resolveZestConfigValue(\n mergedZestProps.isMultiline,\n defaultResolvedZestProps.isMultiline\n );\n // onTextChanged is no longer a ZestConfigValue, so it's directly assigned\n newResolvedProps.onTextChanged = mergedZestProps.onTextChanged;\n\n newResolvedProps.helperTextConfig = await resolveZestConfigValue(\n mergedZestProps.helperTextConfig,\n defaultResolvedZestProps.helperTextConfig\n );\n newResolvedProps.parser = await resolveZestConfigValue(\n mergedZestProps.parser,\n defaultResolvedZestProps.parser\n );\n newResolvedProps.validator = await resolveZestConfigValue(\n mergedZestProps.validator,\n defaultResolvedZestProps.validator\n );\n\n setResolvedZestProps(newResolvedProps);\n };\n\n resolveProps();\n }, [mergedZestProps]); // Re-run effect if merged props change\n\n return resolvedZestProps;\n};\n","import { useState, useEffect, useCallback } from \"react\";\nimport { InputParser, InputValidator } from \"../types\";\n\ninterface UseParsedAndValidatedInputArgs<T> {\n rawValue: string;\n parser: InputParser<T> | undefined;\n validator: InputValidator<T> | undefined;\n // The onTextChanged callback should receive the parsed value\n onParsedAndValidatedChange: ((value: T | undefined) => void) | undefined;\n}\n\nexport const useParsedAndValidatedInput = <T>({\n rawValue,\n parser,\n validator,\n onParsedAndValidatedChange,\n}: UseParsedAndValidatedInputArgs<T>) => {\n const [parsedValue, setParsedValue] = useState<T | undefined>(undefined);\n const [isValid, setIsValid] = useState(true);\n const [validationMessage, setValidationMessage] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n let currentParsedValue: T | undefined = undefined;\n let currentIsValid = true;\n let currentValidationMessage: string | undefined = undefined;\n\n // 1. Parse the raw value\n if (parser) {\n currentParsedValue = parser(rawValue);\n } else {\n // If no parser, treat rawValue as the parsed value (e.g., for text inputs)\n currentParsedValue = rawValue as unknown as T;\n }\n\n // 2. Validate the parsed value\n if (validator) {\n const validationResult = validator(currentParsedValue);\n if (typeof validationResult === \"string\") {\n currentIsValid = false;\n currentValidationMessage = validationResult;\n } else {\n currentIsValid = validationResult;\n if (!currentIsValid) {\n currentValidationMessage = \"Invalid input.\"; // Generic message if validator returns false\n }\n }\n }\n\n setParsedValue(currentParsedValue);\n setIsValid(currentIsValid);\n setValidationMessage(currentValidationMessage);\n\n // 3. Call the consumer's callback with the parsed and validated value\n // Only call if a callback is provided and the input is valid\n if (onParsedAndValidatedChange && currentIsValid) {\n onParsedAndValidatedChange(currentParsedValue);\n }\n }, [rawValue, parser, validator, onParsedAndValidatedChange]);\n\n return { parsedValue, isValid, validationMessage };\n};","import React, { useState } from \"react\";\nimport styles from \"../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"./IconEyeOpen\";\nimport { IconEyeSlashed } from \"./IconEyeSlashed\";\n\nimport { ZestTextboxSize, HelperTextConfig, ZestProps } from \"./types\";\n\ntype SharedProps = {\n /**\n * An object containing all custom configurations and behaviors specific to the ZestTextbox component.\n * This encapsulates all non-native HTML input/textarea props for better discoverability and DX.\n * @see ZestProps\n */\n zest?: ZestProps;\n /**\n * A custom CSS class to apply to the main textbox element.\n */\n className?: string;\n /**\n * The maximum number of characters allowed in the input.\n * Enables the character counter.\n */\n maxLength?: number;\n /**\n * The type of the input element. All standard HTML input types are supported.\n * Special handling is applied for `password` and `number`.\n * @default 'text'\n */\n type?:\n | \"text\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"url\"\n | \"search\"\n | \"color\"\n | \"date\"\n | \"datetime-local\"\n | \"month\"\n | \"time\"\n | \"week\";\n};\n\ntype InputOnlyProps = SharedProps &\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n };\n\ntype TextareaOnlyProps = SharedProps &\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n };\n\ntype ZestTextboxProps = InputOnlyProps | TextareaOnlyProps;\n\nimport { filterNumericInput } from \"./utils/numericInputFilter\";\nimport { useThemeDetector } from \"./hooks/useThemeDetector\";\nimport { usePasswordVisibility } from \"./hooks/usePasswordVisibility\";\nimport { useCharacterCounter } from \"./hooks/useCharacterCounter\";\nimport { useHelperText } from \"./hooks/useHelperText\";\nimport { PasswordToggleButton } from \"./components/PasswordToggleButton\";\nimport { CharacterCounter } from \"./components/CharacterCounter\";\nimport { ProgressBar } from \"./components/ProgressBar\";\nimport { HelperTextDisplay } from \"./components/HelperTextDisplay\";\nimport { useZestTextboxConfig } from \"./hooks/useZestTextboxConfig\";\nimport { useParsedAndValidatedInput } from \"./hooks/useParsedAndValidatedInput\";\n\n// ... other imports\n\nconst ZestTextbox: React.FC<ZestTextboxProps> = (props) => {\n const {\n className = \"\",\n maxLength,\n onChange,\n type,\n zest, // Destructure the new zest prop\n ...rest\n } = props;\n\n const resolvedZestProps = useZestTextboxConfig(zest);\n const {\n zSize,\n stretch: fullWidth,\n showProgressBar,\n animatedCounter,\n theme,\n helperTextConfig,\n onTextChanged,\n isMultiline,\n parser,\n validator,\n } = resolvedZestProps;\n\n const [value, setValue] = useState(\"\");\n\n const isDark = useThemeDetector(theme);\n const isPassword = type === \"password\";\n const { isPasswordVisible, togglePasswordVisibility } = usePasswordVisibility(isPassword);\n const { currentLength, charPercentage, counterColorClass, showCounter } = useCharacterCounter(value, maxLength, animatedCounter);\n\n const {\n parsedValue,\n isValid,\n validationMessage,\n } = useParsedAndValidatedInput({\n rawValue: value,\n parser: parser,\n validator: validator,\n onParsedAndValidatedChange: onTextChanged,\n });\n\n // Prioritize validation message over regular helper text\n const finalHelperTextNode = validationMessage ? (\n <span style={{ color: \"red\" }}>{validationMessage}</span>\n ) : useHelperText(value, helperTextConfig);\n\n\n const classList = [\n styles.textbox,\n styles[zSize],\n fullWidth ? styles.fullWidth : \"\",\n className,\n isDark ? styles.dark : \"\",\n !isValid ? styles.error : \"\", // Add error class if not valid\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n let newValue = e.target.value;\n\n const isNumeric = type === \"number\" || type === \"tel\";\n if (isNumeric) {\n newValue = filterNumericInput(newValue);\n }\n\n if (maxLength !== undefined && newValue.length > maxLength) return;\n\n setValue(newValue);\n\n if (onChange) onChange(e as never);\n // onTextChanged is now handled by useParsedAndValidatedInput\n };\n\n const isNumeric = type === \"number\" || type === \"tel\";\n const inputType = isPassword && isPasswordVisible ? \"text\" : isNumeric ? \"tel\" : type;\n\n const commonProps = {\n className: classList,\n maxLength,\n onChange: handleInputChange,\n value,\n type: inputType,\n ...rest,\n };\n\n return (\n <div className={styles.wrapper}>\n {isMultiline ? ( // Use isMultiline from zest\n <textarea\n {...(commonProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n ) : (\n <input\n {...(commonProps as React.InputHTMLAttributes<HTMLInputElement>)}\n />\n )}\n\n <HelperTextDisplay\n helperTextNode={finalHelperTextNode}\n className={helperTextConfig?.className || ''}\n />\n\n <CharacterCounter\n showCounter={showCounter}\n currentLength={currentLength}\n maxLength={maxLength}\n counterColorClass={counterColorClass}\n />\n\n <PasswordToggleButton\n isPassword={isPassword}\n isPasswordVisible={isPasswordVisible}\n onToggle={togglePasswordVisibility}\n />\n\n <ProgressBar\n showProgressBar={showProgressBar}\n showCounter={showCounter}\n charPercentage={charPercentage}\n counterColorClass={counterColorClass}\n />\n </div>\n );\n};\n\nexport default ZestTextbox;"],"names":["_jsxs","_jsx","useZestTextboxConfig","useZestTextboxContext"],"mappings":"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","x_google_ignoreList":[0,1]}
package/dist/index.js CHANGED
@@ -113,8 +113,8 @@ function styleInject(css, ref) {
113
113
  }
114
114
  }
115
115
 
116
- var css_248z = "/* === Base Textbox Styles (input & textarea) === */\n.ZestTextbox-module_textbox__0M5Wq {\n font-family: \"Segoe UI\", Roboto, sans-serif;\n font-weight: 500;\n line-height: 1.25;\n border: 1px solid #ccc;\n border-radius: 0.5rem; /* 8px */\n color: #111827;\n background-color: #ffffff;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n display: inline-block;\n width: auto;\n box-sizing: border-box;\n resize: none;\n font-size: 1rem; /* 16px */\n padding-bottom: 0.5rem; /* Reduced padding to make space for progress bar */\n}\n\n.ZestTextbox-module_textbox__0M5Wq:focus {\n outline: none;\n border-color: #8B5CF6;\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n animation: ZestTextbox-module_pulse-light__CKfhA 0.5s 1;\n}\n\n/* === Sizes === */\n.ZestTextbox-module_sm__yyxXO {\n padding: 0.5rem 0.75rem; /* 8px 12px */\n font-size: 0.875rem; /* 14px */\n}\n\n.ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n}\n\n.ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n}\n\n/* === Full Width === */\n.ZestTextbox-module_fullWidth__xn4fT {\n width: 100%;\n}\n\n/* === Disabled State === */\n.ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #f3f4f6;\n color: #9ca3af;\n cursor: not-allowed;\n pointer-events: none;\n border-color: #d1d5db;\n}\n\n/* === Multiline (textarea) specific enhancements === */\ntextarea.ZestTextbox-module_textbox__0M5Wq {\n min-height: 6.25rem; /* 100px */\n line-height: 1.5;\n resize: vertical;\n}\n\n.ZestTextbox-module_wrapper__0ok2A {\n position: relative;\n display: inline-block;\n}\n\n.ZestTextbox-module_counter__waqIT {\n position: absolute;\n right: 0.625rem; /* 10px */\n bottom: 0.375rem; /* 6px */\n font-size: 0.75rem;\n color: #6b7280;\n pointer-events: none;\n user-select: none;\n}\n\n/* === Dark Mode Support === */\n.dark .ZestTextbox-module_textbox__0M5Wq {\n background-color: #1f2937;\n border-color: #374151;\n color: #f3f4f6;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:focus {\n border-color: #A78BFA;\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n animation: ZestTextbox-module_pulse-dark__L9PYJ 0.5s 1;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #374151;\n color: #9ca3af;\n border-color: #4b5563;\n}\n\n.dark .ZestTextbox-module_counter__waqIT {\n color: #9ca3af;\n}\n\n/* === Password Toggle === */\n.ZestTextbox-module_passwordToggle__I2s4O {\n position: absolute;\n right: 0.625rem; /* 10px */\n top: 50%;\n transform: translateY(-50%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n}\n\n.ZestTextbox-module_eyeIcon__rKiBL {\n width: 1.25em;\n height: 1.25em;\n transition: transform 0.2s ease-in-out;\n}\n\n.ZestTextbox-module_rotate__Ajx19 {\n transform: rotate(180deg);\n}\n\n.ZestTextbox-module_tooltip__etRdj {\n position: absolute;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n background-color: #333;\n color: #fff;\n padding: 0.25rem 0.5rem; /* 4px 8px */\n border-radius: 0.25rem; /* 4px */\n font-size: 0.75rem;\n white-space: nowrap;\n margin-right: 0.5rem; /* 8px */\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n}\n\n.ZestTextbox-module_passwordToggle__I2s4O:hover .ZestTextbox-module_tooltip__etRdj {\n opacity: 1;\n visibility: visible;\n}\n\n.dark .ZestTextbox-module_passwordToggle__I2s4O {\n color: #9ca3af;\n}\n\n.dark .ZestTextbox-module_tooltip__etRdj {\n background-color: #4b5563;\n color: #f3f4f6;\n}\n\n/* === Progress Bar === */\n.ZestTextbox-module_progressBarContainer__0qFKf {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 0.1875rem; /* 3px */\n background-color: #e5e7eb;\n border-bottom-left-radius: 0.5rem; /* 8px */\n border-bottom-right-radius: 0.5rem; /* 8px */\n overflow: hidden;\n}\n\n.ZestTextbox-module_progressBar__vwttj {\n height: 100%;\n background-color: #8B5CF6;\n transition: width 0.2s ease, background-color 0.3s ease;\n}\n\n/* === Animated Counter Colors === */\n.ZestTextbox-module_counterYellow__uYGfs {\n color: #A78BFA;\n}\n\n.ZestTextbox-module_counterOrange__b9baX {\n color: #8B5CF6;\n}\n\n.dark .ZestTextbox-module_progressBarContainer__0qFKf {\n background-color: #374151;\n}\n\n.dark .ZestTextbox-module_progressBar__vwttj {\n background-color: #A78BFA;\n}\n\n.dark .ZestTextbox-module_counterYellow__uYGfs {\n color: #C4B5FD;\n}\n\n.dark .ZestTextbox-module_counterOrange__b9baX {\n color: #A78BFA;\n}\n\n@keyframes ZestTextbox-module_pulse-light__CKfhA {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(139, 92, 246, 0.35); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n}\n\n@keyframes ZestTextbox-module_pulse-dark__L9PYJ {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(167, 139, 250, 0.45); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n}\n\n/* === Media Queries for Responsive Design === */\n@media (min-width: 48rem) { /* 768px */\n /* Tablet */\n .ZestTextbox-module_sm__yyxXO {\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n font-size: 1.125rem; /* 18px */\n }\n}\n\n@media (min-width: 64rem) { /* 1024px */\n /* Desktop */\n .ZestTextbox-module_sm__yyxXO {\n padding: 0.375rem 0.625rem; /* 6px 10px */\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n }\n}\n\n/* === Helper Text === */\n.ZestTextbox-module_helperText__4twSg {\n font-size: 0.875rem; /* 14px */\n color: #6b7280;\n margin-top: 0.25rem; /* 4px */\n animation: ZestTextbox-module_fade-slide-in__re-Ln 0.3s ease-out forwards;\n}\n\n.dark .ZestTextbox-module_helperText__4twSg {\n color: #9ca3af;\n}\n\n@keyframes ZestTextbox-module_fade-slide-in__re-Ln {\n from {\n opacity: 0;\n transform: translateY(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n";
117
- var styles = {"textbox":"ZestTextbox-module_textbox__0M5Wq","pulse-light":"ZestTextbox-module_pulse-light__CKfhA","sm":"ZestTextbox-module_sm__yyxXO","md":"ZestTextbox-module_md__fvL10","lg":"ZestTextbox-module_lg__fU93-","fullWidth":"ZestTextbox-module_fullWidth__xn4fT","wrapper":"ZestTextbox-module_wrapper__0ok2A","counter":"ZestTextbox-module_counter__waqIT","pulse-dark":"ZestTextbox-module_pulse-dark__L9PYJ","passwordToggle":"ZestTextbox-module_passwordToggle__I2s4O","eyeIcon":"ZestTextbox-module_eyeIcon__rKiBL","rotate":"ZestTextbox-module_rotate__Ajx19","tooltip":"ZestTextbox-module_tooltip__etRdj","progressBarContainer":"ZestTextbox-module_progressBarContainer__0qFKf","progressBar":"ZestTextbox-module_progressBar__vwttj","counterYellow":"ZestTextbox-module_counterYellow__uYGfs","counterOrange":"ZestTextbox-module_counterOrange__b9baX","helperText":"ZestTextbox-module_helperText__4twSg","fade-slide-in":"ZestTextbox-module_fade-slide-in__re-Ln"};
116
+ var css_248z = "/* === Base Textbox Styles (input & textarea) === */\n.ZestTextbox-module_textbox__0M5Wq {\n font-family: \"Segoe UI\", Roboto, sans-serif;\n font-weight: 500;\n line-height: 1.25;\n border: 1px solid #ccc;\n border-radius: 0.5rem; /* 8px */\n color: #111827;\n background-color: #ffffff;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n display: inline-block;\n width: auto;\n box-sizing: border-box;\n resize: none;\n font-size: 1rem; /* 16px */\n padding-bottom: 0.5rem; /* Reduced padding to make space for progress bar */\n}\n\n.ZestTextbox-module_textbox__0M5Wq:focus {\n outline: none;\n border-color: #8B5CF6;\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n animation: ZestTextbox-module_pulse-light__CKfhA 0.5s 1;\n}\n\n/* === Error State === */\n.ZestTextbox-module_error__5RoCP {\n border-color: #ef4444; /* Red-500 */\n box-shadow: 0 0 0 0.125rem rgba(239, 68, 68, 0.25); /* Red-500 with 25% opacity */\n}\n\n.ZestTextbox-module_error__5RoCP:focus {\n border-color: #ef4444;\n box-shadow: 0 0 0 0.125rem rgba(239, 68, 68, 0.35);\n}\n\n/* === Sizes === */\n.ZestTextbox-module_sm__yyxXO {\n padding: 0.5rem 0.75rem; /* 8px 12px */\n font-size: 0.875rem; /* 14px */\n}\n\n.ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n}\n\n.ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n}\n\n/* === Full Width === */\n.ZestTextbox-module_fullWidth__xn4fT {\n width: 100%;\n}\n\n/* === Disabled State === */\n.ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #f3f4f6;\n color: #9ca3af;\n cursor: not-allowed;\n pointer-events: none;\n border-color: #d1d5db;\n}\n\n/* === Multiline (textarea) specific enhancements === */\ntextarea.ZestTextbox-module_textbox__0M5Wq {\n min-height: 6.25rem; /* 100px */\n line-height: 1.5;\n resize: vertical;\n}\n\n.ZestTextbox-module_wrapper__0ok2A {\n position: relative;\n display: inline-block;\n}\n\n.ZestTextbox-module_counter__waqIT {\n position: absolute;\n right: 0.625rem; /* 10px */\n bottom: 0.375rem; /* 6px */\n font-size: 0.75rem;\n color: #6b7280;\n pointer-events: none;\n user-select: none;\n}\n\n/* === Dark Mode Support === */\n.dark .ZestTextbox-module_textbox__0M5Wq {\n background-color: #1f2937;\n border-color: #374151;\n color: #f3f4f6;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:focus {\n border-color: #A78BFA;\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n animation: ZestTextbox-module_pulse-dark__L9PYJ 0.5s 1;\n}\n\n.dark .ZestTextbox-module_textbox__0M5Wq:disabled {\n background-color: #374151;\n color: #9ca3af;\n border-color: #4b5563;\n}\n\n.dark .ZestTextbox-module_counter__waqIT {\n color: #9ca3af;\n}\n\n.dark .ZestTextbox-module_error__5RoCP {\n border-color: #f87171; /* Red-400 for dark mode */\n box-shadow: 0 0 0 0.125rem rgba(248, 113, 113, 0.35);\n}\n\n.dark .ZestTextbox-module_error__5RoCP:focus {\n border-color: #f87171;\n box-shadow: 0 0 0 0.125rem rgba(248, 113, 113, 0.45);\n}\n\n/* === Password Toggle === */\n.ZestTextbox-module_passwordToggle__I2s4O {\n position: absolute;\n right: 0.625rem; /* 10px */\n top: 50%;\n transform: translateY(-50%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n}\n\n.ZestTextbox-module_eyeIcon__rKiBL {\n width: 1.25em;\n height: 1.25em;\n transition: transform 0.2s ease-in-out;\n}\n\n.ZestTextbox-module_rotate__Ajx19 {\n transform: rotate(180deg);\n}\n\n.ZestTextbox-module_tooltip__etRdj {\n position: absolute;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n background-color: #333;\n color: #fff;\n padding: 0.25rem 0.5rem; /* 4px 8px */\n border-radius: 0.25rem; /* 4px */\n font-size: 0.75rem;\n white-space: nowrap;\n margin-right: 0.5rem; /* 8px */\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n}\n\n.ZestTextbox-module_passwordToggle__I2s4O:hover .ZestTextbox-module_tooltip__etRdj {\n opacity: 1;\n visibility: visible;\n}\n\n.dark .ZestTextbox-module_passwordToggle__I2s4O {\n color: #9ca3af;\n}\n\n.dark .ZestTextbox-module_tooltip__etRdj {\n background-color: #4b5563;\n color: #f3f4f6;\n}\n\n/* === Progress Bar === */\n.ZestTextbox-module_progressBarContainer__0qFKf {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 0.1875rem; /* 3px */\n background-color: #e5e7eb;\n border-bottom-left-radius: 0.5rem; /* 8px */\n border-bottom-right-radius: 0.5rem; /* 8px */\n overflow: hidden;\n}\n\n.ZestTextbox-module_progressBar__vwttj {\n height: 100%;\n background-color: #8B5CF6;\n transition: width 0.2s ease, background-color 0.3s ease;\n}\n\n/* === Animated Counter Colors === */\n.ZestTextbox-module_counterYellow__uYGfs {\n color: #A78BFA;\n}\n\n.ZestTextbox-module_counterOrange__b9baX {\n color: #8B5CF6;\n}\n\n.dark .ZestTextbox-module_progressBarContainer__0qFKf {\n background-color: #374151;\n}\n\n.dark .ZestTextbox-module_progressBar__vwttj {\n background-color: #A78BFA;\n}\n\n.dark .ZestTextbox-module_counterYellow__uYGfs {\n color: #C4B5FD;\n}\n\n.dark .ZestTextbox-module_counterOrange__b9baX {\n color: #A78BFA;\n}\n\n@keyframes ZestTextbox-module_pulse-light__CKfhA {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(139, 92, 246, 0.35); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(139, 92, 246, 0.25); /* 2px */\n }\n}\n\n@keyframes ZestTextbox-module_pulse-dark__L9PYJ {\n 0% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n 50% {\n box-shadow: 0 0 0 0.25rem rgba(167, 139, 250, 0.45); /* 4px */\n }\n 100% {\n box-shadow: 0 0 0 0.125rem rgba(167, 139, 250, 0.35); /* 2px */\n }\n}\n\n/* === Media Queries for Responsive Design === */\n@media (min-width: 48rem) { /* 768px */\n /* Tablet */\n .ZestTextbox-module_sm__yyxXO {\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n font-size: 1.125rem; /* 18px */\n }\n}\n\n@media (min-width: 64rem) { /* 1024px */\n /* Desktop */\n .ZestTextbox-module_sm__yyxXO {\n padding: 0.375rem 0.625rem; /* 6px 10px */\n font-size: 0.875rem; /* 14px */\n }\n .ZestTextbox-module_md__fvL10 {\n padding: 0.625rem 0.875rem; /* 10px 14px */\n font-size: 1rem; /* 16px */\n }\n .ZestTextbox-module_lg__fU93- {\n padding: 0.75rem 1rem; /* 12px 16px */\n font-size: 1.125rem; /* 18px */\n }\n}\n\n/* === Helper Text === */\n.ZestTextbox-module_helperText__4twSg {\n font-size: 0.875rem; /* 14px */\n color: #6b7280;\n margin-top: 0.25rem; /* 4px */\n animation: ZestTextbox-module_fade-slide-in__re-Ln 0.3s ease-out forwards;\n}\n\n.dark .ZestTextbox-module_helperText__4twSg {\n color: #9ca3af;\n}\n\n@keyframes ZestTextbox-module_fade-slide-in__re-Ln {\n from {\n opacity: 0;\n transform: translateY(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}";
117
+ var styles = {"textbox":"ZestTextbox-module_textbox__0M5Wq","pulse-light":"ZestTextbox-module_pulse-light__CKfhA","error":"ZestTextbox-module_error__5RoCP","sm":"ZestTextbox-module_sm__yyxXO","md":"ZestTextbox-module_md__fvL10","lg":"ZestTextbox-module_lg__fU93-","fullWidth":"ZestTextbox-module_fullWidth__xn4fT","wrapper":"ZestTextbox-module_wrapper__0ok2A","counter":"ZestTextbox-module_counter__waqIT","pulse-dark":"ZestTextbox-module_pulse-dark__L9PYJ","passwordToggle":"ZestTextbox-module_passwordToggle__I2s4O","eyeIcon":"ZestTextbox-module_eyeIcon__rKiBL","rotate":"ZestTextbox-module_rotate__Ajx19","tooltip":"ZestTextbox-module_tooltip__etRdj","progressBarContainer":"ZestTextbox-module_progressBarContainer__0qFKf","progressBar":"ZestTextbox-module_progressBar__vwttj","counterYellow":"ZestTextbox-module_counterYellow__uYGfs","counterOrange":"ZestTextbox-module_counterOrange__b9baX","helperText":"ZestTextbox-module_helperText__4twSg","fade-slide-in":"ZestTextbox-module_fade-slide-in__re-Ln"};
118
118
  styleInject(css_248z);
119
119
 
120
120
  var filterNumericInput = function (value) {
@@ -289,6 +289,8 @@ var defaultResolvedZestProps = {
289
289
  isMultiline: false,
290
290
  onTextChanged: undefined,
291
291
  helperTextConfig: undefined,
292
+ parser: undefined,
293
+ validator: undefined,
292
294
  };
293
295
  var useZestTextboxConfig = function (componentZestProps) {
294
296
  var contextDefaultZestProps = useZestTextboxConfig$1().defaultZestProps;
@@ -300,9 +302,9 @@ var useZestTextboxConfig = function (componentZestProps) {
300
302
  }, [contextDefaultZestProps, componentZestProps]);
301
303
  react.useEffect(function () {
302
304
  var resolveProps = function () { return __awaiter(void 0, void 0, void 0, function () {
303
- var newResolvedProps, _a, _b, _c, _d, _e, _f, _g;
304
- return __generator(this, function (_h) {
305
- switch (_h.label) {
305
+ var newResolvedProps, _a, _b, _c, _d, _e, _f, _g, _h, _j;
306
+ return __generator(this, function (_k) {
307
+ switch (_k.label) {
306
308
  case 0:
307
309
  newResolvedProps = __assign({}, defaultResolvedZestProps);
308
310
  // Resolve each property that can be a ZestConfigValue
@@ -310,33 +312,41 @@ var useZestTextboxConfig = function (componentZestProps) {
310
312
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.zSize, defaultResolvedZestProps.zSize)];
311
313
  case 1:
312
314
  // Resolve each property that can be a ZestConfigValue
313
- _a.zSize = _h.sent();
315
+ _a.zSize = _k.sent();
314
316
  _b = newResolvedProps;
315
317
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.stretch, defaultResolvedZestProps.stretch)];
316
318
  case 2:
317
- _b.stretch = _h.sent();
319
+ _b.stretch = _k.sent();
318
320
  _c = newResolvedProps;
319
321
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.showProgressBar, defaultResolvedZestProps.showProgressBar)];
320
322
  case 3:
321
- _c.showProgressBar = _h.sent();
323
+ _c.showProgressBar = _k.sent();
322
324
  _d = newResolvedProps;
323
325
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.animatedCounter, defaultResolvedZestProps.animatedCounter)];
324
326
  case 4:
325
- _d.animatedCounter = _h.sent();
327
+ _d.animatedCounter = _k.sent();
326
328
  _e = newResolvedProps;
327
329
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.theme, defaultResolvedZestProps.theme)];
328
330
  case 5:
329
- _e.theme = _h.sent();
331
+ _e.theme = _k.sent();
330
332
  _f = newResolvedProps;
331
333
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.isMultiline, defaultResolvedZestProps.isMultiline)];
332
334
  case 6:
333
- _f.isMultiline = _h.sent();
335
+ _f.isMultiline = _k.sent();
334
336
  // onTextChanged is no longer a ZestConfigValue, so it's directly assigned
335
337
  newResolvedProps.onTextChanged = mergedZestProps.onTextChanged;
336
338
  _g = newResolvedProps;
337
339
  return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.helperTextConfig, defaultResolvedZestProps.helperTextConfig)];
338
340
  case 7:
339
- _g.helperTextConfig = _h.sent();
341
+ _g.helperTextConfig = _k.sent();
342
+ _h = newResolvedProps;
343
+ return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.parser, defaultResolvedZestProps.parser)];
344
+ case 8:
345
+ _h.parser = _k.sent();
346
+ _j = newResolvedProps;
347
+ return [4 /*yield*/, resolveZestConfigValue(mergedZestProps.validator, defaultResolvedZestProps.validator)];
348
+ case 9:
349
+ _j.validator = _k.sent();
340
350
  setResolvedZestProps(newResolvedProps);
341
351
  return [2 /*return*/];
342
352
  }
@@ -347,24 +357,75 @@ var useZestTextboxConfig = function (componentZestProps) {
347
357
  return resolvedZestProps;
348
358
  };
349
359
 
360
+ var useParsedAndValidatedInput = function (_a) {
361
+ var rawValue = _a.rawValue, parser = _a.parser, validator = _a.validator, onParsedAndValidatedChange = _a.onParsedAndValidatedChange;
362
+ var _b = react.useState(undefined), parsedValue = _b[0], setParsedValue = _b[1];
363
+ var _c = react.useState(true), isValid = _c[0], setIsValid = _c[1];
364
+ var _d = react.useState(undefined), validationMessage = _d[0], setValidationMessage = _d[1];
365
+ react.useEffect(function () {
366
+ var currentParsedValue = undefined;
367
+ var currentIsValid = true;
368
+ var currentValidationMessage = undefined;
369
+ // 1. Parse the raw value
370
+ if (parser) {
371
+ currentParsedValue = parser(rawValue);
372
+ }
373
+ else {
374
+ // If no parser, treat rawValue as the parsed value (e.g., for text inputs)
375
+ currentParsedValue = rawValue;
376
+ }
377
+ // 2. Validate the parsed value
378
+ if (validator) {
379
+ var validationResult = validator(currentParsedValue);
380
+ if (typeof validationResult === "string") {
381
+ currentIsValid = false;
382
+ currentValidationMessage = validationResult;
383
+ }
384
+ else {
385
+ currentIsValid = validationResult;
386
+ if (!currentIsValid) {
387
+ currentValidationMessage = "Invalid input."; // Generic message if validator returns false
388
+ }
389
+ }
390
+ }
391
+ setParsedValue(currentParsedValue);
392
+ setIsValid(currentIsValid);
393
+ setValidationMessage(currentValidationMessage);
394
+ // 3. Call the consumer's callback with the parsed and validated value
395
+ // Only call if a callback is provided and the input is valid
396
+ if (onParsedAndValidatedChange && currentIsValid) {
397
+ onParsedAndValidatedChange(currentParsedValue);
398
+ }
399
+ }, [rawValue, parser, validator, onParsedAndValidatedChange]);
400
+ return { parsedValue: parsedValue, isValid: isValid, validationMessage: validationMessage };
401
+ };
402
+
350
403
  // ... other imports
351
404
  var ZestTextbox = function (props) {
352
405
  var _a = props.className, className = _a === void 0 ? "" : _a, maxLength = props.maxLength, onChange = props.onChange, type = props.type, zest = props.zest, // Destructure the new zest prop
353
406
  rest = __rest(props, ["className", "maxLength", "onChange", "type", "zest"]);
354
407
  var resolvedZestProps = useZestTextboxConfig(zest);
355
- var zSize = resolvedZestProps.zSize, fullWidth = resolvedZestProps.stretch, showProgressBar = resolvedZestProps.showProgressBar, animatedCounter = resolvedZestProps.animatedCounter, theme = resolvedZestProps.theme, helperTextConfig = resolvedZestProps.helperTextConfig, onTextChanged = resolvedZestProps.onTextChanged, isMultiline = resolvedZestProps.isMultiline;
408
+ var zSize = resolvedZestProps.zSize, fullWidth = resolvedZestProps.stretch, showProgressBar = resolvedZestProps.showProgressBar, animatedCounter = resolvedZestProps.animatedCounter, theme = resolvedZestProps.theme, helperTextConfig = resolvedZestProps.helperTextConfig, onTextChanged = resolvedZestProps.onTextChanged, isMultiline = resolvedZestProps.isMultiline, parser = resolvedZestProps.parser, validator = resolvedZestProps.validator;
356
409
  var _b = react.useState(""), value = _b[0], setValue = _b[1];
357
410
  var isDark = useThemeDetector(theme);
358
411
  var isPassword = type === "password";
359
412
  var _c = usePasswordVisibility(isPassword), isPasswordVisible = _c.isPasswordVisible, togglePasswordVisibility = _c.togglePasswordVisibility;
360
413
  var _d = useCharacterCounter(value, maxLength, animatedCounter), currentLength = _d.currentLength, charPercentage = _d.charPercentage, counterColorClass = _d.counterColorClass, showCounter = _d.showCounter;
361
- var helperTextNode = useHelperText(value, helperTextConfig);
414
+ var _e = useParsedAndValidatedInput({
415
+ rawValue: value,
416
+ parser: parser,
417
+ validator: validator,
418
+ onParsedAndValidatedChange: onTextChanged,
419
+ }), isValid = _e.isValid, validationMessage = _e.validationMessage;
420
+ // Prioritize validation message over regular helper text
421
+ var finalHelperTextNode = validationMessage ? (jsxRuntime.jsx("span", { style: { color: "red" }, children: validationMessage })) : useHelperText(value, helperTextConfig);
362
422
  var classList = [
363
423
  styles.textbox,
364
424
  styles[zSize],
365
425
  fullWidth ? styles.fullWidth : "",
366
426
  className,
367
427
  isDark ? styles.dark : "",
428
+ !isValid ? styles.error : "", // Add error class if not valid
368
429
  ]
369
430
  .filter(Boolean)
370
431
  .join(" ");
@@ -379,14 +440,13 @@ var ZestTextbox = function (props) {
379
440
  setValue(newValue);
380
441
  if (onChange)
381
442
  onChange(e);
382
- if (onTextChanged)
383
- onTextChanged(newValue);
443
+ // onTextChanged is now handled by useParsedAndValidatedInput
384
444
  };
385
445
  var isNumeric = type === "number" || type === "tel";
386
446
  var inputType = isPassword && isPasswordVisible ? "text" : isNumeric ? "tel" : type;
387
447
  var commonProps = __assign({ className: classList, maxLength: maxLength, onChange: handleInputChange, value: value, type: inputType }, rest);
388
448
  return (jsxRuntime.jsxs("div", { className: styles.wrapper, children: [isMultiline ? ( // Use isMultiline from zest
389
- jsxRuntime.jsx("textarea", __assign({}, commonProps))) : (jsxRuntime.jsx("input", __assign({}, commonProps))), jsxRuntime.jsx(HelperTextDisplay, { helperTextNode: helperTextNode, className: (helperTextConfig === null || helperTextConfig === void 0 ? void 0 : helperTextConfig.className) || '' }), jsxRuntime.jsx(CharacterCounter, { showCounter: showCounter, currentLength: currentLength, maxLength: maxLength, counterColorClass: counterColorClass }), jsxRuntime.jsx(PasswordToggleButton, { isPassword: isPassword, isPasswordVisible: isPasswordVisible, onToggle: togglePasswordVisibility }), jsxRuntime.jsx(ProgressBar, { showProgressBar: showProgressBar, showCounter: showCounter, charPercentage: charPercentage, counterColorClass: counterColorClass })] }));
449
+ jsxRuntime.jsx("textarea", __assign({}, commonProps))) : (jsxRuntime.jsx("input", __assign({}, commonProps))), jsxRuntime.jsx(HelperTextDisplay, { helperTextNode: finalHelperTextNode, className: (helperTextConfig === null || helperTextConfig === void 0 ? void 0 : helperTextConfig.className) || '' }), jsxRuntime.jsx(CharacterCounter, { showCounter: showCounter, currentLength: currentLength, maxLength: maxLength, counterColorClass: counterColorClass }), jsxRuntime.jsx(PasswordToggleButton, { isPassword: isPassword, isPasswordVisible: isPasswordVisible, onToggle: togglePasswordVisibility }), jsxRuntime.jsx(ProgressBar, { showProgressBar: showProgressBar, showCounter: showCounter, charPercentage: charPercentage, counterColorClass: counterColorClass })] }));
390
450
  };
391
451
 
392
452
  exports.CharacterCounter = CharacterCounter;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../UI/utils/numericInputFilter.ts","../UI/hooks/useThemeDetector.ts","../UI/hooks/usePasswordVisibility.ts","../UI/hooks/useCharacterCounter.ts","../UI/hooks/useHelperText.ts","../UI/IconEyeOpen.tsx","../UI/IconEyeSlashed.tsx","../UI/components/PasswordToggleButton.tsx","../UI/components/CharacterCounter.tsx","../UI/components/ProgressBar.tsx","../UI/components/HelperTextDisplay.tsx","../UI/contexts/ZestTextboxConfigContext.tsx","../UI/hooks/useZestTextboxConfig.ts","../UI/ZestTextbox.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const filterNumericInput = (value: string): string => {\n // Allow digits, a single leading hyphen, and a single decimal point\n const parts = value.split('.');\n let integerPart = parts[0].replace(/[^0-9-]/g, '');\n let decimalPart = parts.length > 1 ? '.' + parts[1].replace(/[^0-9]/g, '') : '';\n\n // Ensure only one leading hyphen\n if (integerPart.startsWith('-')) {\n integerPart = '-' + integerPart.substring(1).replace(/-/g, '');\n } else {\n integerPart = integerPart.replace(/-/g, '');\n }\n\n let newValue = integerPart + decimalPart;\n\n // Prevent multiple decimal points\n if (newValue.indexOf('.') !== -1 && newValue.indexOf('.') !== newValue.lastIndexOf('.')) {\n newValue = newValue.substring(0, newValue.lastIndexOf('.'));\n }\n\n return newValue;\n};\n","import { useState, useEffect } from \"react\";\nimport { ZestProps } from \"../types\";\n\nexport const useThemeDetector = (theme: ZestProps['theme'] = \"system\") => {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n if (theme === \"dark\") {\n setIsDark(true);\n return;\n }\n if (theme === \"light\") {\n setIsDark(false);\n return;\n }\n\n // System theme\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handleChange = () => setIsDark(mediaQuery.matches);\n\n handleChange(); // Set initial theme\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, [theme]);\n\n return isDark;\n};\n","import { useState } from \"react\";\n\nexport const usePasswordVisibility = (isPasswordType: boolean) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n const togglePasswordVisibility = () => {\n if (isPasswordType) {\n setIsPasswordVisible((prev) => !prev);\n }\n };\n\n return { isPasswordVisible, togglePasswordVisibility };\n};\n","import { useMemo } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\nexport const useCharacterCounter = (\n value: string,\n maxLength: number | undefined,\n animatedCounter: boolean\n) => {\n const currentLength = value.length;\n const showCounter = typeof maxLength === \"number\";\n const charPercentage = showCounter ? (currentLength / maxLength) * 100 : 0;\n\n const counterColorClass = useMemo(() => {\n if (!animatedCounter || !showCounter) return \"\";\n\n if (charPercentage > 90) {\n return styles.counterOrange;\n } else if (charPercentage > 70) {\n return styles.counterYellow;\n }\n return \"\";\n }, [animatedCounter, showCounter, charPercentage]);\n\n return { currentLength, charPercentage, counterColorClass, showCounter };\n};\n","import { useState, useEffect, ReactNode } from \"react\";\nimport { HelperTextConfig } from \"../types\";\n\nexport const useHelperText = (\n value: string,\n helperTextConfig: HelperTextConfig | undefined\n) => {\n const [helperTextNode, setHelperTextNode] = useState<ReactNode>(null);\n\n useEffect(() => {\n if (!helperTextConfig) {\n setHelperTextNode(null);\n return;\n }\n\n const formatted = helperTextConfig.formatter\n ? helperTextConfig.formatter(value)\n : value;\n\n const finalNode = helperTextConfig.templater\n ? helperTextConfig.templater(formatted)\n : formatted;\n\n setHelperTextNode(finalNode);\n }, [value, helperTextConfig]);\n\n return helperTextNode;\n};\n","import React from 'react';\n\nexport const IconEyeOpen: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z\"/>\n <path d=\"M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0\"/>\n </svg>\n);\n","import React from 'react';\n\nexport const IconEyeSlashed: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z\"/>\n <path d=\"M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822zm-2.943-1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822z\"/>\n <path d=\"M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.88 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 6.854-12-12 .708-.708 12 12-.708.708z\"/>\n </svg>\n);\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"../IconEyeOpen\";\nimport { IconEyeSlashed } from \"../IconEyeSlashed\";\n\ninterface PasswordToggleButtonProps {\n isPassword: boolean;\n isPasswordVisible: boolean;\n onToggle: () => void;\n}\n\nexport const PasswordToggleButton: React.FC<PasswordToggleButtonProps> = ({\n isPassword,\n isPasswordVisible,\n onToggle,\n}) => {\n if (!isPassword) return null;\n\n return (\n <div className={styles.passwordToggle} onClick={onToggle}>\n <div className={styles.tooltip}>\n {isPasswordVisible ? \"Hide password\" : \"Show password\"}\n </div>\n {isPasswordVisible ? (\n <IconEyeOpen className={styles.eyeIcon} />\n ) : (\n <IconEyeSlashed className={styles.eyeIcon} />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface CharacterCounterProps {\n showCounter: boolean;\n currentLength: number;\n maxLength: number | undefined;\n counterColorClass: string;\n}\n\nexport const CharacterCounter: React.FC<CharacterCounterProps> = ({\n showCounter,\n currentLength,\n maxLength,\n counterColorClass,\n}) => {\n if (!showCounter) return null;\n\n return (\n <div className={`${styles.counter} ${counterColorClass}`}>\n {currentLength} / {maxLength}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface ProgressBarProps {\n showProgressBar: boolean;\n showCounter: boolean;\n charPercentage: number;\n counterColorClass: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n showProgressBar,\n showCounter,\n charPercentage,\n counterColorClass,\n}) => {\n if (!showProgressBar || !showCounter) return null;\n\n return (\n <div className={styles.progressBarContainer}>\n <div\n className={`${styles.progressBar} ${counterColorClass}`}\n style={{ width: `${charPercentage}%` }}\n />\n </div>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface HelperTextDisplayProps {\n helperTextNode: ReactNode;\n className?: string;\n}\n\nexport const HelperTextDisplay: React.FC<HelperTextDisplayProps> = ({\n helperTextNode,\n className,\n}) => {\n if (!helperTextNode) return null;\n\n return (\n <div\n key={String(helperTextNode)} // Force re-mount to trigger animation\n className={`${styles.helperText} ${className || \"\"}`}\n >\n {helperTextNode}\n </div>\n );\n};\n","import React, { createContext, useContext, ReactNode } from \"react\";\nimport { ZestProps } from \"../types\";\n\n// Define the shape of the context value\ninterface ZestTextboxConfigContextType {\n defaultZestProps: ZestProps;\n}\n\n// Create the context with a default empty object\nconst ZestTextboxConfigContext = createContext<\n ZestTextboxConfigContextType | undefined\n>(undefined);\n\n// Create a provider component\ninterface ZestTextboxConfigProviderProps {\n children: ReactNode;\n value?: ZestProps; // The default ZestProps to provide\n}\n\nexport const ZestTextboxConfigProvider: React.FC<\n ZestTextboxConfigProviderProps\n> = ({ children, value = {} }) => {\n return (\n <ZestTextboxConfigContext.Provider value={{ defaultZestProps: value }}>\n {children}\n </ZestTextboxConfigContext.Provider>\n );\n};\n\n// Custom hook to use the ZestTextboxConfigContext\nexport const useZestTextboxConfig = () => {\n const context = useContext(ZestTextboxConfigContext);\n if (context === undefined) {\n // This error will be caught by the useZestTextboxConfig hook in ZestTextbox.tsx\n // if the component is used outside of a provider.\n return { defaultZestProps: {} };\n }\n return context;\n};\n","import { useEffect, useState, useMemo } from \"react\";\nimport { ZestProps, ZestConfigValue, ZestTextboxSize, HelperTextConfig, ResolvedZestProps } from \"../types\";\nimport { useZestTextboxConfig as useZestTextboxContext } from \"../contexts/ZestTextboxConfigContext\";\n\n// Helper function to resolve a ZestConfigValue\nasync function resolveZestConfigValue<T>(\n configValue: ZestConfigValue<T> | undefined,\n defaultValue: T\n): Promise<T> {\n if (configValue === undefined) {\n return defaultValue;\n }\n if (typeof configValue === \"function\") {\n const result = (configValue as () => T | Promise<T>)();\n return result instanceof Promise ? await result : result;\n }\n return configValue;\n}\n\nconst defaultResolvedZestProps: ResolvedZestProps = {\n zSize: \"md\",\n stretch: false,\n showProgressBar: false,\n animatedCounter: false,\n theme: \"system\",\n isMultiline: false,\n onTextChanged: undefined,\n helperTextConfig: undefined,\n};\n\nexport const useZestTextboxConfig = (componentZestProps: ZestProps | undefined) => {\n const { defaultZestProps: contextDefaultZestProps } = useZestTextboxContext();\n\n const [resolvedZestProps, setResolvedZestProps] = useState<ResolvedZestProps>(defaultResolvedZestProps);\n\n // Memoize the merged props to avoid unnecessary re-renders\n const mergedZestProps = useMemo(() => {\n // Component props take precedence over context default props, which take precedence over hardcoded defaults\n return { ...defaultResolvedZestProps, ...contextDefaultZestProps, ...componentZestProps };\n }, [contextDefaultZestProps, componentZestProps]);\n\n useEffect(() => {\n const resolveProps = async () => {\n const newResolvedProps: ResolvedZestProps = { ...defaultResolvedZestProps }; // Initialize with defaults\n\n // Resolve each property that can be a ZestConfigValue\n newResolvedProps.zSize = await resolveZestConfigValue(\n mergedZestProps.zSize,\n defaultResolvedZestProps.zSize\n );\n newResolvedProps.stretch = await resolveZestConfigValue(\n mergedZestProps.stretch,\n defaultResolvedZestProps.stretch\n );\n newResolvedProps.showProgressBar = await resolveZestConfigValue(\n mergedZestProps.showProgressBar,\n defaultResolvedZestProps.showProgressBar\n );\n newResolvedProps.animatedCounter = await resolveZestConfigValue(\n mergedZestProps.animatedCounter,\n defaultResolvedZestProps.animatedCounter\n );\n newResolvedProps.theme = await resolveZestConfigValue(\n mergedZestProps.theme,\n defaultResolvedZestProps.theme\n );\n newResolvedProps.isMultiline = await resolveZestConfigValue(\n mergedZestProps.isMultiline,\n defaultResolvedZestProps.isMultiline\n );\n // onTextChanged is no longer a ZestConfigValue, so it's directly assigned\n newResolvedProps.onTextChanged = mergedZestProps.onTextChanged;\n\n newResolvedProps.helperTextConfig = await resolveZestConfigValue(\n mergedZestProps.helperTextConfig,\n defaultResolvedZestProps.helperTextConfig\n );\n\n setResolvedZestProps(newResolvedProps);\n };\n\n resolveProps();\n }, [mergedZestProps]); // Re-run effect if merged props change\n\n return resolvedZestProps;\n};","import React, { useState } from \"react\";\nimport styles from \"../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"./IconEyeOpen\";\nimport { IconEyeSlashed } from \"./IconEyeSlashed\";\n\nimport { ZestTextboxSize, HelperTextConfig, ZestProps } from \"./types\";\n\ntype SharedProps = {\n /**\n * An object containing all custom configurations and behaviors specific to the ZestTextbox component.\n * This encapsulates all non-native HTML input/textarea props for better discoverability and DX.\n * @see ZestProps\n */\n zest?: ZestProps;\n /**\n * A custom CSS class to apply to the main textbox element.\n */\n className?: string;\n /**\n * The maximum number of characters allowed in the input.\n * Enables the character counter.\n */\n maxLength?: number;\n /**\n * The type of the input element. All standard HTML input types are supported.\n * Special handling is applied for `password` and `number`.\n * @default 'text'\n */\n type?:\n | \"text\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"url\"\n | \"search\"\n | \"color\"\n | \"date\"\n | \"datetime-local\"\n | \"month\"\n | \"time\"\n | \"week\";\n};\n\ntype InputOnlyProps = SharedProps &\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n };\n\ntype TextareaOnlyProps = SharedProps &\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n };\n\ntype ZestTextboxProps = InputOnlyProps | TextareaOnlyProps;\n\nimport { filterNumericInput } from \"./utils/numericInputFilter\";\nimport { useThemeDetector } from \"./hooks/useThemeDetector\";\nimport { usePasswordVisibility } from \"./hooks/usePasswordVisibility\";\nimport { useCharacterCounter } from \"./hooks/useCharacterCounter\";\nimport { useHelperText } from \"./hooks/useHelperText\";\nimport { PasswordToggleButton } from \"./components/PasswordToggleButton\";\nimport { CharacterCounter } from \"./components/CharacterCounter\";\nimport { ProgressBar } from \"./components/ProgressBar\";\nimport { HelperTextDisplay } from \"./components/HelperTextDisplay\";\nimport { useZestTextboxConfig } from \"./hooks/useZestTextboxConfig\";\n\n// ... other imports\n\nexport const ZestTextbox: React.FC<ZestTextboxProps> = (props) => {\n const {\n className = \"\",\n maxLength,\n onChange,\n type,\n zest, // Destructure the new zest prop\n ...rest\n } = props;\n\n const resolvedZestProps = useZestTextboxConfig(zest);\n const {\n zSize,\n stretch: fullWidth,\n showProgressBar,\n animatedCounter,\n theme,\n helperTextConfig,\n onTextChanged,\n isMultiline,\n } = resolvedZestProps;\n\n const [value, setValue] = useState(\"\");\n\n const isDark = useThemeDetector(theme);\n const isPassword = type === \"password\";\n const { isPasswordVisible, togglePasswordVisibility } = usePasswordVisibility(isPassword);\n const { currentLength, charPercentage, counterColorClass, showCounter } = useCharacterCounter(value, maxLength, animatedCounter);\n const helperTextNode = useHelperText(value, helperTextConfig);\n\n const classList = [\n styles.textbox,\n styles[zSize],\n fullWidth ? styles.fullWidth : \"\",\n className,\n isDark ? styles.dark : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n let newValue = e.target.value;\n\n const isNumeric = type === \"number\" || type === \"tel\";\n if (isNumeric) {\n newValue = filterNumericInput(newValue);\n }\n\n if (maxLength !== undefined && newValue.length > maxLength) return;\n\n setValue(newValue);\n\n if (onChange) onChange(e as never);\n if (onTextChanged) onTextChanged(newValue);\n };\n\n const isNumeric = type === \"number\" || type === \"tel\";\n const inputType = isPassword && isPasswordVisible ? \"text\" : isNumeric ? \"tel\" : type;\n\n const commonProps = {\n className: classList,\n maxLength,\n onChange: handleInputChange,\n value,\n type: inputType,\n ...rest,\n };\n\n return (\n <div className={styles.wrapper}>\n {isMultiline ? ( // Use isMultiline from zest\n <textarea\n {...(commonProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n ) : (\n <input\n {...(commonProps as React.InputHTMLAttributes<HTMLInputElement>)}\n />\n )}\n\n <HelperTextDisplay\n helperTextNode={helperTextNode}\n className={helperTextConfig?.className || ''}\n />\n\n <CharacterCounter\n showCounter={showCounter}\n currentLength={currentLength}\n maxLength={maxLength}\n counterColorClass={counterColorClass}\n />\n\n <PasswordToggleButton\n isPassword={isPassword}\n isPasswordVisible={isPasswordVisible}\n onToggle={togglePasswordVisibility}\n />\n\n <ProgressBar\n showProgressBar={showProgressBar}\n showCounter={showCounter}\n charPercentage={charPercentage}\n counterColorClass={counterColorClass}\n />\n </div>\n );\n};\n\nexport default ZestTextbox;"],"names":["useState","useEffect","useMemo","_jsxs","_jsx","createContext","useZestTextboxConfig","useContext","useZestTextboxContext"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../UI/utils/numericInputFilter.ts","../UI/hooks/useThemeDetector.ts","../UI/hooks/usePasswordVisibility.ts","../UI/hooks/useCharacterCounter.ts","../UI/hooks/useHelperText.ts","../UI/IconEyeOpen.tsx","../UI/IconEyeSlashed.tsx","../UI/components/PasswordToggleButton.tsx","../UI/components/CharacterCounter.tsx","../UI/components/ProgressBar.tsx","../UI/components/HelperTextDisplay.tsx","../UI/contexts/ZestTextboxConfigContext.tsx","../UI/hooks/useZestTextboxConfig.ts","../UI/hooks/useParsedAndValidatedInput.ts","../UI/ZestTextbox.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const filterNumericInput = (value: string): string => {\n // Allow digits, a single leading hyphen, and a single decimal point\n const parts = value.split('.');\n let integerPart = parts[0].replace(/[^0-9-]/g, '');\n let decimalPart = parts.length > 1 ? '.' + parts[1].replace(/[^0-9]/g, '') : '';\n\n // Ensure only one leading hyphen\n if (integerPart.startsWith('-')) {\n integerPart = '-' + integerPart.substring(1).replace(/-/g, '');\n } else {\n integerPart = integerPart.replace(/-/g, '');\n }\n\n let newValue = integerPart + decimalPart;\n\n // Prevent multiple decimal points\n if (newValue.indexOf('.') !== -1 && newValue.indexOf('.') !== newValue.lastIndexOf('.')) {\n newValue = newValue.substring(0, newValue.lastIndexOf('.'));\n }\n\n return newValue;\n};\n","import { useState, useEffect } from \"react\";\nimport { ZestProps } from \"../types\";\n\nexport const useThemeDetector = (theme: ZestProps['theme'] = \"system\") => {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n if (theme === \"dark\") {\n setIsDark(true);\n return;\n }\n if (theme === \"light\") {\n setIsDark(false);\n return;\n }\n\n // System theme\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handleChange = () => setIsDark(mediaQuery.matches);\n\n handleChange(); // Set initial theme\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, [theme]);\n\n return isDark;\n};\n","import { useState } from \"react\";\n\nexport const usePasswordVisibility = (isPasswordType: boolean) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n const togglePasswordVisibility = () => {\n if (isPasswordType) {\n setIsPasswordVisible((prev) => !prev);\n }\n };\n\n return { isPasswordVisible, togglePasswordVisibility };\n};\n","import { useMemo } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\nexport const useCharacterCounter = (\n value: string,\n maxLength: number | undefined,\n animatedCounter: boolean\n) => {\n const currentLength = value.length;\n const showCounter = typeof maxLength === \"number\";\n const charPercentage = showCounter ? (currentLength / maxLength) * 100 : 0;\n\n const counterColorClass = useMemo(() => {\n if (!animatedCounter || !showCounter) return \"\";\n\n if (charPercentage > 90) {\n return styles.counterOrange;\n } else if (charPercentage > 70) {\n return styles.counterYellow;\n }\n return \"\";\n }, [animatedCounter, showCounter, charPercentage]);\n\n return { currentLength, charPercentage, counterColorClass, showCounter };\n};\n","import { useState, useEffect, ReactNode } from \"react\";\nimport { HelperTextConfig } from \"../types\";\n\nexport const useHelperText = (\n value: string,\n helperTextConfig: HelperTextConfig | undefined\n) => {\n const [helperTextNode, setHelperTextNode] = useState<ReactNode>(null);\n\n useEffect(() => {\n if (!helperTextConfig) {\n setHelperTextNode(null);\n return;\n }\n\n const formatted = helperTextConfig.formatter\n ? helperTextConfig.formatter(value)\n : value;\n\n const finalNode = helperTextConfig.templater\n ? helperTextConfig.templater(formatted)\n : formatted;\n\n setHelperTextNode(finalNode);\n }, [value, helperTextConfig]);\n\n return helperTextNode;\n};\n","import React from 'react';\n\nexport const IconEyeOpen: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z\"/>\n <path d=\"M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0\"/>\n </svg>\n);\n","import React from 'react';\n\nexport const IconEyeSlashed: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}>\n <path d=\"M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z\"/>\n <path d=\"M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822zm-2.943-1.288.822.822.073.073.026.026a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829l.822.822z\"/>\n <path d=\"M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.88 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 6.854-12-12 .708-.708 12 12-.708.708z\"/>\n </svg>\n);\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"../IconEyeOpen\";\nimport { IconEyeSlashed } from \"../IconEyeSlashed\";\n\ninterface PasswordToggleButtonProps {\n isPassword: boolean;\n isPasswordVisible: boolean;\n onToggle: () => void;\n}\n\nexport const PasswordToggleButton: React.FC<PasswordToggleButtonProps> = ({\n isPassword,\n isPasswordVisible,\n onToggle,\n}) => {\n if (!isPassword) return null;\n\n return (\n <div className={styles.passwordToggle} onClick={onToggle}>\n <div className={styles.tooltip}>\n {isPasswordVisible ? \"Hide password\" : \"Show password\"}\n </div>\n {isPasswordVisible ? (\n <IconEyeOpen className={styles.eyeIcon} />\n ) : (\n <IconEyeSlashed className={styles.eyeIcon} />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface CharacterCounterProps {\n showCounter: boolean;\n currentLength: number;\n maxLength: number | undefined;\n counterColorClass: string;\n}\n\nexport const CharacterCounter: React.FC<CharacterCounterProps> = ({\n showCounter,\n currentLength,\n maxLength,\n counterColorClass,\n}) => {\n if (!showCounter) return null;\n\n return (\n <div className={`${styles.counter} ${counterColorClass}`}>\n {currentLength} / {maxLength}\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface ProgressBarProps {\n showProgressBar: boolean;\n showCounter: boolean;\n charPercentage: number;\n counterColorClass: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n showProgressBar,\n showCounter,\n charPercentage,\n counterColorClass,\n}) => {\n if (!showProgressBar || !showCounter) return null;\n\n return (\n <div className={styles.progressBarContainer}>\n <div\n className={`${styles.progressBar} ${counterColorClass}`}\n style={{ width: `${charPercentage}%` }}\n />\n </div>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport styles from \"../../Styles/ZestTextbox.module.css\";\n\ninterface HelperTextDisplayProps {\n helperTextNode: ReactNode;\n className?: string;\n}\n\nexport const HelperTextDisplay: React.FC<HelperTextDisplayProps> = ({\n helperTextNode,\n className,\n}) => {\n if (!helperTextNode) return null;\n\n return (\n <div\n key={String(helperTextNode)} // Force re-mount to trigger animation\n className={`${styles.helperText} ${className || \"\"}`}\n >\n {helperTextNode}\n </div>\n );\n};\n","import React, { createContext, useContext, ReactNode } from \"react\";\nimport { ZestProps } from \"../types\";\n\n// Define the shape of the context value\ninterface ZestTextboxConfigContextType {\n defaultZestProps: ZestProps;\n}\n\n// Create the context with a default empty object\nconst ZestTextboxConfigContext = createContext<\n ZestTextboxConfigContextType | undefined\n>(undefined);\n\n// Create a provider component\ninterface ZestTextboxConfigProviderProps {\n children: ReactNode;\n value?: ZestProps; // The default ZestProps to provide\n}\n\nexport const ZestTextboxConfigProvider: React.FC<\n ZestTextboxConfigProviderProps\n> = ({ children, value = {} }) => {\n return (\n <ZestTextboxConfigContext.Provider value={{ defaultZestProps: value }}>\n {children}\n </ZestTextboxConfigContext.Provider>\n );\n};\n\n// Custom hook to use the ZestTextboxConfigContext\nexport const useZestTextboxConfig = () => {\n const context = useContext(ZestTextboxConfigContext);\n if (context === undefined) {\n // This error will be caught by the useZestTextboxConfig hook in ZestTextbox.tsx\n // if the component is used outside of a provider.\n return { defaultZestProps: {} };\n }\n return context;\n};\n","import { useEffect, useState, useMemo } from \"react\";\nimport { ZestProps, ZestConfigValue, ZestTextboxSize, HelperTextConfig, ResolvedZestProps, InputParser, InputValidator } from \"../types\";\nimport { useZestTextboxConfig as useZestTextboxContext } from \"../contexts/ZestTextboxConfigContext\";\n\n// Helper function to resolve a ZestConfigValue\nasync function resolveZestConfigValue<T>(\n configValue: ZestConfigValue<T> | undefined,\n defaultValue: T\n): Promise<T> {\n if (configValue === undefined) {\n return defaultValue;\n }\n if (typeof configValue === \"function\") {\n const result = (configValue as () => T | Promise<T>)();\n return result instanceof Promise ? await result : result;\n }\n return configValue;\n}\n\nconst defaultResolvedZestProps: ResolvedZestProps = {\n zSize: \"md\",\n stretch: false,\n showProgressBar: false,\n animatedCounter: false,\n theme: \"system\",\n isMultiline: false,\n onTextChanged: undefined,\n helperTextConfig: undefined,\n parser: undefined,\n validator: undefined,\n};\n\nexport const useZestTextboxConfig = (componentZestProps: ZestProps | undefined) => {\n const { defaultZestProps: contextDefaultZestProps } = useZestTextboxContext();\n\n const [resolvedZestProps, setResolvedZestProps] = useState<ResolvedZestProps>(defaultResolvedZestProps);\n\n // Memoize the merged props to avoid unnecessary re-renders\n const mergedZestProps = useMemo(() => {\n // Component props take precedence over context default props, which take precedence over hardcoded defaults\n return { ...defaultResolvedZestProps, ...contextDefaultZestProps, ...componentZestProps };\n }, [contextDefaultZestProps, componentZestProps]);\n\n useEffect(() => {\n const resolveProps = async () => {\n const newResolvedProps: ResolvedZestProps = { ...defaultResolvedZestProps }; // Initialize with defaults\n\n // Resolve each property that can be a ZestConfigValue\n newResolvedProps.zSize = await resolveZestConfigValue(\n mergedZestProps.zSize,\n defaultResolvedZestProps.zSize\n );\n newResolvedProps.stretch = await resolveZestConfigValue(\n mergedZestProps.stretch,\n defaultResolvedZestProps.stretch\n );\n newResolvedProps.showProgressBar = await resolveZestConfigValue(\n mergedZestProps.showProgressBar,\n defaultResolvedZestProps.showProgressBar\n );\n newResolvedProps.animatedCounter = await resolveZestConfigValue(\n mergedZestProps.animatedCounter,\n defaultResolvedZestProps.animatedCounter\n );\n newResolvedProps.theme = await resolveZestConfigValue(\n mergedZestProps.theme,\n defaultResolvedZestProps.theme\n );\n newResolvedProps.isMultiline = await resolveZestConfigValue(\n mergedZestProps.isMultiline,\n defaultResolvedZestProps.isMultiline\n );\n // onTextChanged is no longer a ZestConfigValue, so it's directly assigned\n newResolvedProps.onTextChanged = mergedZestProps.onTextChanged;\n\n newResolvedProps.helperTextConfig = await resolveZestConfigValue(\n mergedZestProps.helperTextConfig,\n defaultResolvedZestProps.helperTextConfig\n );\n newResolvedProps.parser = await resolveZestConfigValue(\n mergedZestProps.parser,\n defaultResolvedZestProps.parser\n );\n newResolvedProps.validator = await resolveZestConfigValue(\n mergedZestProps.validator,\n defaultResolvedZestProps.validator\n );\n\n setResolvedZestProps(newResolvedProps);\n };\n\n resolveProps();\n }, [mergedZestProps]); // Re-run effect if merged props change\n\n return resolvedZestProps;\n};\n","import { useState, useEffect, useCallback } from \"react\";\nimport { InputParser, InputValidator } from \"../types\";\n\ninterface UseParsedAndValidatedInputArgs<T> {\n rawValue: string;\n parser: InputParser<T> | undefined;\n validator: InputValidator<T> | undefined;\n // The onTextChanged callback should receive the parsed value\n onParsedAndValidatedChange: ((value: T | undefined) => void) | undefined;\n}\n\nexport const useParsedAndValidatedInput = <T>({\n rawValue,\n parser,\n validator,\n onParsedAndValidatedChange,\n}: UseParsedAndValidatedInputArgs<T>) => {\n const [parsedValue, setParsedValue] = useState<T | undefined>(undefined);\n const [isValid, setIsValid] = useState(true);\n const [validationMessage, setValidationMessage] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n let currentParsedValue: T | undefined = undefined;\n let currentIsValid = true;\n let currentValidationMessage: string | undefined = undefined;\n\n // 1. Parse the raw value\n if (parser) {\n currentParsedValue = parser(rawValue);\n } else {\n // If no parser, treat rawValue as the parsed value (e.g., for text inputs)\n currentParsedValue = rawValue as unknown as T;\n }\n\n // 2. Validate the parsed value\n if (validator) {\n const validationResult = validator(currentParsedValue);\n if (typeof validationResult === \"string\") {\n currentIsValid = false;\n currentValidationMessage = validationResult;\n } else {\n currentIsValid = validationResult;\n if (!currentIsValid) {\n currentValidationMessage = \"Invalid input.\"; // Generic message if validator returns false\n }\n }\n }\n\n setParsedValue(currentParsedValue);\n setIsValid(currentIsValid);\n setValidationMessage(currentValidationMessage);\n\n // 3. Call the consumer's callback with the parsed and validated value\n // Only call if a callback is provided and the input is valid\n if (onParsedAndValidatedChange && currentIsValid) {\n onParsedAndValidatedChange(currentParsedValue);\n }\n }, [rawValue, parser, validator, onParsedAndValidatedChange]);\n\n return { parsedValue, isValid, validationMessage };\n};","import React, { useState } from \"react\";\nimport styles from \"../Styles/ZestTextbox.module.css\";\nimport { IconEyeOpen } from \"./IconEyeOpen\";\nimport { IconEyeSlashed } from \"./IconEyeSlashed\";\n\nimport { ZestTextboxSize, HelperTextConfig, ZestProps } from \"./types\";\n\ntype SharedProps = {\n /**\n * An object containing all custom configurations and behaviors specific to the ZestTextbox component.\n * This encapsulates all non-native HTML input/textarea props for better discoverability and DX.\n * @see ZestProps\n */\n zest?: ZestProps;\n /**\n * A custom CSS class to apply to the main textbox element.\n */\n className?: string;\n /**\n * The maximum number of characters allowed in the input.\n * Enables the character counter.\n */\n maxLength?: number;\n /**\n * The type of the input element. All standard HTML input types are supported.\n * Special handling is applied for `password` and `number`.\n * @default 'text'\n */\n type?:\n | \"text\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"url\"\n | \"search\"\n | \"color\"\n | \"date\"\n | \"datetime-local\"\n | \"month\"\n | \"time\"\n | \"week\";\n};\n\ntype InputOnlyProps = SharedProps &\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n };\n\ntype TextareaOnlyProps = SharedProps &\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\"> & {\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n };\n\ntype ZestTextboxProps = InputOnlyProps | TextareaOnlyProps;\n\nimport { filterNumericInput } from \"./utils/numericInputFilter\";\nimport { useThemeDetector } from \"./hooks/useThemeDetector\";\nimport { usePasswordVisibility } from \"./hooks/usePasswordVisibility\";\nimport { useCharacterCounter } from \"./hooks/useCharacterCounter\";\nimport { useHelperText } from \"./hooks/useHelperText\";\nimport { PasswordToggleButton } from \"./components/PasswordToggleButton\";\nimport { CharacterCounter } from \"./components/CharacterCounter\";\nimport { ProgressBar } from \"./components/ProgressBar\";\nimport { HelperTextDisplay } from \"./components/HelperTextDisplay\";\nimport { useZestTextboxConfig } from \"./hooks/useZestTextboxConfig\";\nimport { useParsedAndValidatedInput } from \"./hooks/useParsedAndValidatedInput\";\n\n// ... other imports\n\nconst ZestTextbox: React.FC<ZestTextboxProps> = (props) => {\n const {\n className = \"\",\n maxLength,\n onChange,\n type,\n zest, // Destructure the new zest prop\n ...rest\n } = props;\n\n const resolvedZestProps = useZestTextboxConfig(zest);\n const {\n zSize,\n stretch: fullWidth,\n showProgressBar,\n animatedCounter,\n theme,\n helperTextConfig,\n onTextChanged,\n isMultiline,\n parser,\n validator,\n } = resolvedZestProps;\n\n const [value, setValue] = useState(\"\");\n\n const isDark = useThemeDetector(theme);\n const isPassword = type === \"password\";\n const { isPasswordVisible, togglePasswordVisibility } = usePasswordVisibility(isPassword);\n const { currentLength, charPercentage, counterColorClass, showCounter } = useCharacterCounter(value, maxLength, animatedCounter);\n\n const {\n parsedValue,\n isValid,\n validationMessage,\n } = useParsedAndValidatedInput({\n rawValue: value,\n parser: parser,\n validator: validator,\n onParsedAndValidatedChange: onTextChanged,\n });\n\n // Prioritize validation message over regular helper text\n const finalHelperTextNode = validationMessage ? (\n <span style={{ color: \"red\" }}>{validationMessage}</span>\n ) : useHelperText(value, helperTextConfig);\n\n\n const classList = [\n styles.textbox,\n styles[zSize],\n fullWidth ? styles.fullWidth : \"\",\n className,\n isDark ? styles.dark : \"\",\n !isValid ? styles.error : \"\", // Add error class if not valid\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n let newValue = e.target.value;\n\n const isNumeric = type === \"number\" || type === \"tel\";\n if (isNumeric) {\n newValue = filterNumericInput(newValue);\n }\n\n if (maxLength !== undefined && newValue.length > maxLength) return;\n\n setValue(newValue);\n\n if (onChange) onChange(e as never);\n // onTextChanged is now handled by useParsedAndValidatedInput\n };\n\n const isNumeric = type === \"number\" || type === \"tel\";\n const inputType = isPassword && isPasswordVisible ? \"text\" : isNumeric ? \"tel\" : type;\n\n const commonProps = {\n className: classList,\n maxLength,\n onChange: handleInputChange,\n value,\n type: inputType,\n ...rest,\n };\n\n return (\n <div className={styles.wrapper}>\n {isMultiline ? ( // Use isMultiline from zest\n <textarea\n {...(commonProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n ) : (\n <input\n {...(commonProps as React.InputHTMLAttributes<HTMLInputElement>)}\n />\n )}\n\n <HelperTextDisplay\n helperTextNode={finalHelperTextNode}\n className={helperTextConfig?.className || ''}\n />\n\n <CharacterCounter\n showCounter={showCounter}\n currentLength={currentLength}\n maxLength={maxLength}\n counterColorClass={counterColorClass}\n />\n\n <PasswordToggleButton\n isPassword={isPassword}\n isPasswordVisible={isPasswordVisible}\n onToggle={togglePasswordVisibility}\n />\n\n <ProgressBar\n showProgressBar={showProgressBar}\n showCounter={showCounter}\n charPercentage={charPercentage}\n counterColorClass={counterColorClass}\n />\n </div>\n );\n};\n\nexport default ZestTextbox;"],"names":["useState","useEffect","useMemo","_jsxs","_jsx","createContext","useZestTextboxConfig","useContext","useZestTextboxContext"],"mappings":"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","x_google_ignoreList":[0,1]}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import React from "react";
2
2
  export type ZestTextboxSize = "sm" | "md" | "lg";
3
3
  export type ZestConfigValue<T> = T | (() => T) | (() => Promise<T>);
4
+ export type InputParser<T> = (value: string) => T | undefined;
5
+ export type InputValidator<T> = (value: T | undefined) => boolean | string;
4
6
  export interface HelperTextConfig {
5
7
  /**
6
8
  * A function to process the raw input value into a new string.
@@ -30,11 +32,11 @@ export interface ZestProps {
30
32
  */
31
33
  helperTextConfig?: ZestConfigValue<HelperTextConfig>;
32
34
  /**
33
- * A callback that provides the raw string value of the input on every change.
34
- * This is a convenience prop to avoid using `event.target.value`.
35
- * @param value The current string value of the input.
35
+ * A callback that provides the parsed and validated value of the input on every valid change.
36
+ * This is a convenience prop to avoid using `event.target.value` and manual parsing/validation.
37
+ * @param value The current parsed and validated value of the input, or `undefined` if parsing failed.
36
38
  */
37
- onTextChanged?: (value: string) => void;
39
+ onTextChanged?: (value: any | undefined) => void;
38
40
  /**
39
41
  * Sets the size of the textbox, affecting padding and font size.
40
42
  * @default 'md'
@@ -69,14 +71,26 @@ export interface ZestProps {
69
71
  * @default false
70
72
  */
71
73
  isMultiline?: ZestConfigValue<boolean>;
74
+ /**
75
+ * A function to parse the raw string input into a desired type.
76
+ * Returns `undefined` if parsing fails.
77
+ */
78
+ parser?: ZestConfigValue<InputParser<any>>;
79
+ /**
80
+ * A function to validate the parsed value.
81
+ * Returns `true` for valid, or a string error message for invalid.
82
+ */
83
+ validator?: ZestConfigValue<InputValidator<any>>;
72
84
  }
73
85
  export interface ResolvedZestProps {
74
86
  helperTextConfig: HelperTextConfig | undefined;
75
- onTextChanged: ((value: string) => void) | undefined;
87
+ onTextChanged: ((value: any | undefined) => void) | undefined;
76
88
  zSize: ZestTextboxSize;
77
89
  stretch: boolean;
78
90
  showProgressBar: boolean;
79
91
  animatedCounter: boolean;
80
92
  theme: "light" | "dark" | "system";
81
93
  isMultiline: boolean;
94
+ parser: InputParser<any> | undefined;
95
+ validator: InputValidator<any> | undefined;
82
96
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jattac.libs.web.zest-textbox",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "A delightful, feature-rich, and highly customizable React textbox component. Packed with features like automatic theme detection, password visibility toggle, character counters, and engaging animations.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",