form-validator-widget 1.1.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
1
  import React from "react";
2
2
  import { FormValidatorProps } from "../types";
3
- import '../styles/animations.module.css';
4
3
  export declare const FormValidator: React.FC<FormValidatorProps>;
package/dist/index.esm.js CHANGED
@@ -145,41 +145,21 @@ function useDebounce(fn, delay) {
145
145
  }), [fn, delay]);
146
146
  }
147
147
 
148
- function styleInject(css, ref) {
149
- if ( ref === void 0 ) ref = {};
150
- var insertAt = ref.insertAt;
151
-
152
- if (!css || typeof document === 'undefined') { return; }
153
-
154
- var head = document.head || document.getElementsByTagName('head')[0];
155
- var style = document.createElement('style');
156
- style.type = 'text/css';
157
-
158
- if (insertAt === 'top') {
159
- if (head.firstChild) {
160
- head.insertBefore(style, head.firstChild);
161
- } else {
162
- head.appendChild(style);
163
- }
164
- } else {
165
- head.appendChild(style);
166
- }
167
-
168
- if (style.styleSheet) {
169
- style.styleSheet.cssText = css;
170
- } else {
171
- style.appendChild(document.createTextNode(css));
172
- }
173
- }
174
-
175
- var css_248z = "@keyframes animations-module_shake__qVr3b{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}@keyframes animations-module_slideIn__lwqyK{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes animations-module_gentlePulse__xvUHG{0%{box-shadow:0 0 0 0 rgba(59,130,246,.5)}70%{box-shadow:0 0 0 5px rgba(59,130,246,0)}to{box-shadow:0 0 0 0 rgba(59,130,246,0)}}.animations-module_form-validator-field__pirKM{transition:border-color .2s ease,box-shadow .2s ease}.animations-module_form-validator-field__pirKM:focus{animation:animations-module_gentlePulse__xvUHG 1.5s infinite;border-color:#3b82f6;outline:none}.animations-module_form-validator-field__pirKM.animations-module_error__Vq-ZO{animation:animations-module_shake__qVr3b .5s cubic-bezier(.36,.07,.19,.97) both;border-color:#ef4444}.animations-module_form-validator-error-message__h1Ge-{animation:animations-module_slideIn__lwqyK .2s ease-out;color:#ef4444;font-size:.875rem;margin-top:.25rem}.animations-module_form-validator-theme-dark__ySqnh .animations-module_form-validator-field__pirKM{background-color:#1f2937;border-color:#4b5563;color:#fff}.animations-module_form-validator-success__JkYav{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2310b981' stroke-width='2'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E\");background-position:right .5rem center;background-repeat:no-repeat;border-color:#10b981!important;padding-right:2rem}.animations-module_form-validator-field-container__9P7zl{margin-bottom:1rem}.animations-module_form-validator-label__O7u2s{color:#374151;display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem}.animations-module_form-validator-theme-dark__ySqnh .animations-module_form-validator-label__O7u2s{color:#e5e7eb}.animations-module_checkbox-group__nmUwv{border:1px solid #e5e7eb;border-radius:.375rem;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:.5rem}.animations-module_checkbox-label__XD-M1{align-items:center;color:#374151;cursor:pointer;display:flex;font-size:.95rem;gap:.75rem;transition:color .2s ease}.animations-module_checkbox-label__XD-M1:hover{color:#1f2937}.animations-module_checkbox-input__hRJLO{border:2px solid #d1d5db;border-radius:.25rem;cursor:pointer;height:1.2rem;transition:all .2s ease;width:1.2rem}.animations-module_checkbox-input__hRJLO:checked{background-color:#3b82f6;border-color:#3b82f6}.animations-module_checkbox-input__hRJLO.animations-module_error__Vq-ZO{animation:animations-module_pulse__JOYAq 1s infinite;border-color:#ef4444}.animations-module_checkbox-input__hRJLO:focus{ring:2px solid #3b82f6;ring-offset:2px;outline:none}.animations-module_form-validator-theme-dark__ySqnh .animations-module_checkbox-label__XD-M1{color:#e5e7eb}.animations-module_form-validator-theme-dark__ySqnh .animations-module_checkbox-group__nmUwv{border-color:#4b5563}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuaW1hdGlvbnMubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSwwQ0FDRSxNQUFXLHVCQUEwQixDQUNyQyxvQkFBMEIsMEJBQTZCLENBQ3ZELGdCQUFxQix5QkFBNEIsQ0FDbkQsQ0FFQSw0Q0FDRSxHQUNFLFNBQVUsQ0FDViwyQkFDRixDQUNBLEdBQ0UsU0FBVSxDQUNWLHVCQUNGLENBQ0YsQ0FFQSxnREFDRSxHQUFLLHNDQUE2QyxDQUNsRCxJQUFNLHVDQUE2QyxDQUNuRCxHQUFPLHFDQUEyQyxDQUNwRCxDQUVBLCtDQUNFLG9EQUNGLENBRUEscURBR0UsNERBQW9DLENBRHBDLG9CQUFxQixDQURyQixZQUdGLENBRUEsOEVBRUUsK0VBQStELENBRC9ELG9CQUVGLENBRUEsdURBSUUsdURBQWdDLENBSGhDLGFBQWMsQ0FDZCxpQkFBbUIsQ0FDbkIsaUJBRUYsQ0FFQSxtR0FDRSx3QkFBeUIsQ0FDekIsb0JBQXFCLENBQ3JCLFVBQ0YsQ0FFQSxpREFFRSx5T0FBa1AsQ0FFbFAsc0NBQXdDLENBRHhDLDJCQUE0QixDQUY1Qiw4QkFBZ0MsQ0FJaEMsa0JBQ0YsQ0FFQSx5REFDRSxrQkFDRixDQUVBLCtDQUtFLGFBQWMsQ0FKZCxhQUFjLENBRWQsaUJBQW1CLENBQ25CLGVBQWdCLENBRmhCLG9CQUlGLENBRUEsbUdBQ0UsYUFDRixDQU1BLHlDQU1FLHdCQUF5QixDQUN6QixxQkFBdUIsQ0FOdkIsWUFBYSxDQUNiLHFCQUFzQixDQUN0QixVQUFZLENBQ1osa0JBQW1CLENBQ25CLGFBR0YsQ0FFQSx5Q0FFRSxrQkFBbUIsQ0FJbkIsYUFBYyxDQUZkLGNBQWUsQ0FIZixZQUFhLENBSWIsZ0JBQWtCLENBRmxCLFVBQVksQ0FJWix5QkFDRixDQUVBLCtDQUNFLGFBQ0YsQ0FFQSx5Q0FJRSx3QkFBeUIsQ0FDekIsb0JBQXNCLENBRnRCLGNBQWUsQ0FEZixhQUFjLENBSWQsdUJBQXlCLENBTHpCLFlBTUYsQ0FFQSxpREFDRSx3QkFBeUIsQ0FDekIsb0JBQ0YsQ0FFQSx3RUFFRSxvREFBNEIsQ0FENUIsb0JBRUYsQ0FFQSwrQ0FFRSxzQkFBdUIsQ0FDdkIsZUFBZ0IsQ0FGaEIsWUFHRixDQUVBLDZGQUNFLGFBQ0YsQ0FFQSw2RkFDRSxvQkFDRiIsImZpbGUiOiJhbmltYXRpb25zLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuQGtleWZyYW1lcyBzaGFrZSB7XHJcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH1cclxuICAxMCUsIDMwJSwgNTAlLCA3MCUsIDkwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNXB4KTsgfVxyXG4gIDIwJSwgNDAlLCA2MCUsIDgwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpOyB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVJbiB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZ2VudGxlUHVsc2Uge1xyXG4gIDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDU5LCAxMzAsIDI0NiwgMC41KTsgfVxyXG4gIDcwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDU5LCAxMzAsIDI0NiwgMCk7IH1cclxuICAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDU5LCAxMzAsIDI0NiwgMCk7IH1cclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLWZpZWxkIHtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLWZpZWxkOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJvcmRlci1jb2xvcjogIzNiODJmNjtcclxuICBhbmltYXRpb246IGdlbnRsZVB1bHNlIDEuNXMgaW5maW5pdGU7XHJcbn1cclxuXHJcbi5mb3JtLXZhbGlkYXRvci1maWVsZC5lcnJvciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZWY0NDQ0O1xyXG4gIGFuaW1hdGlvbjogc2hha2UgMC41cyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLWVycm9yLW1lc3NhZ2Uge1xyXG4gIGNvbG9yOiAjZWY0NDQ0O1xyXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcclxuICBhbmltYXRpb246IHNsaWRlSW4gMC4ycyBlYXNlLW91dDtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLXRoZW1lLWRhcmsgLmZvcm0tdmFsaWRhdG9yLWZpZWxkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWYyOTM3O1xyXG4gIGJvcmRlci1jb2xvcjogIzRiNTU2MztcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5mb3JtLXZhbGlkYXRvci1zdWNjZXNzIHtcclxuICBib3JkZXItY29sb3I6ICMxMGI5ODEgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE2JyBoZWlnaHQ9JzE2JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzMTBiOTgxJyBzdHJva2Utd2lkdGg9JzInJTNFJTNDcG9seWxpbmUgcG9pbnRzPScyMCA2IDkgMTcgNCAxMiclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMC41cmVtIGNlbnRlcjtcclxuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItZmllbGQtY29udGFpbmVyIHtcclxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItbGFiZWwge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAjMzc0MTUxO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItdGhlbWUtZGFyayAuZm9ybS12YWxpZGF0b3ItbGFiZWwge1xyXG4gIGNvbG9yOiAjZTVlN2ViO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItaW5wdXQge1xyXG4gIGNvbXBvc2VzOiBmb3JtLXZhbGlkYXRvci1maWVsZDtcclxufVxyXG5cclxuLmNoZWNrYm94LWdyb3VwIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAwLjc1cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgcGFkZGluZzogMC41cmVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNWU3ZWI7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XHJcbn1cclxuXHJcbi5jaGVja2JveC1sYWJlbCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC43NXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZm9udC1zaXplOiAwLjk1cmVtO1xyXG4gIGNvbG9yOiAjMzc0MTUxO1xyXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmNoZWNrYm94LWxhYmVsOmhvdmVyIHtcclxuICBjb2xvcjogIzFmMjkzNztcclxufVxyXG5cclxuLmNoZWNrYm94LWlucHV0IHtcclxuICB3aWR0aDogMS4ycmVtO1xyXG4gIGhlaWdodDogMS4ycmVtO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjZDFkNWRiO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmNoZWNrYm94LWlucHV0OmNoZWNrZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMzYjgyZjY7XHJcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xyXG59XHJcblxyXG4uY2hlY2tib3gtaW5wdXQuZXJyb3Ige1xyXG4gIGJvcmRlci1jb2xvcjogI2VmNDQ0NDtcclxuICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlO1xyXG59XHJcblxyXG4uY2hlY2tib3gtaW5wdXQ6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcmluZzogMnB4IHNvbGlkICMzYjgyZjY7XHJcbiAgcmluZy1vZmZzZXQ6IDJweDtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLXRoZW1lLWRhcmsgLmNoZWNrYm94LWxhYmVsIHtcclxuICBjb2xvcjogI2U1ZTdlYjtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLXRoZW1lLWRhcmsgLmNoZWNrYm94LWdyb3VwIHtcclxuICBib3JkZXItY29sb3I6ICM0YjU1NjM7XHJcbn0iXX0= */";
176
- styleInject(css_248z);
177
-
178
148
  var FormValidator = function (_a) {
179
149
  var children = _a.children, validationRules = _a.validationRules, onSubmit = _a.onSubmit, _b = _a.theme, theme = _b === void 0 ? 'light' : _b, _c = _a.customStyles, customStyles = _c === void 0 ? {} : _c, _d = _a.enableDebounce, enableDebounce = _d === void 0 ? true : _d, _e = _a.debounceDelay, debounceDelay = _e === void 0 ? 300 : _e;
180
150
  var _f = useState({}), formValues = _f[0], setFormValues = _f[1];
181
151
  var _g = useState({}), errors = _g[0], setErrors = _g[1];
182
152
  var _h = useState({}), touched = _h[0], setTouched = _h[1];
153
+ // Only show errors for touched fields
154
+ var getVisibleErrors = useCallback(function () {
155
+ var visibleErrors = {};
156
+ Object.keys(errors).forEach(function (fieldName) {
157
+ if (touched[fieldName] && errors[fieldName]) {
158
+ visibleErrors[fieldName] = errors[fieldName];
159
+ }
160
+ });
161
+ return visibleErrors;
162
+ }, [errors, touched]);
183
163
  var debouncedValidate = useDebounce(function (name, value) {
184
164
  var error = validateField(value, validationRules[name]);
185
165
  setErrors(function (prev) {
@@ -188,16 +168,24 @@ var FormValidator = function (_a) {
188
168
  });
189
169
  }, debounceDelay);
190
170
  var handleChange = useCallback(function (e) {
191
- var _a = e.target, name = _a.name, value = _a.value;
171
+ var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
172
+ // Handle different input types
173
+ var fieldValue = value;
174
+ if (type === 'checkbox') {
175
+ fieldValue = checked ? value : '';
176
+ }
177
+ else if (type === 'radio') {
178
+ fieldValue = value;
179
+ }
192
180
  setFormValues(function (prev) {
193
181
  var _a;
194
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = value, _a)));
182
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = fieldValue, _a)));
195
183
  });
196
184
  if (enableDebounce) {
197
- debouncedValidate(name, value);
185
+ debouncedValidate(name, fieldValue);
198
186
  }
199
187
  else {
200
- var error_1 = validateField(value, validationRules[name]);
188
+ var error_1 = validateField(fieldValue, validationRules[name]);
201
189
  setErrors(function (prev) {
202
190
  var _a;
203
191
  return (__assign(__assign({}, prev), (_a = {}, _a[name] = error_1 || '', _a)));
@@ -205,12 +193,20 @@ var FormValidator = function (_a) {
205
193
  }
206
194
  }, [enableDebounce, debouncedValidate, validationRules]);
207
195
  var handleBlur = useCallback(function (e) {
208
- var _a = e.target, name = _a.name, value = _a.value;
196
+ var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
197
+ var fieldValue = value;
198
+ if (type === 'checkbox') {
199
+ fieldValue = checked ? value : '';
200
+ }
201
+ else if (type === 'radio') {
202
+ fieldValue = value;
203
+ }
204
+ // Mark field as touched
209
205
  setTouched(function (prev) {
210
206
  var _a;
211
207
  return (__assign(__assign({}, prev), (_a = {}, _a[name] = true, _a)));
212
208
  });
213
- var error = validateField(value, validationRules[name]);
209
+ var error = validateField(fieldValue, validationRules[name]);
214
210
  setErrors(function (prev) {
215
211
  var _a;
216
212
  return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
@@ -220,6 +216,12 @@ var FormValidator = function (_a) {
220
216
  e.preventDefault();
221
217
  var formErrors = validateForm(formValues, validationRules);
222
218
  setErrors(formErrors);
219
+ // Mark ALL fields as touched on submit
220
+ var allTouched = {};
221
+ Object.keys(validationRules).forEach(function (fieldName) {
222
+ allTouched[fieldName] = true;
223
+ });
224
+ setTouched(allTouched);
223
225
  if (Object.keys(formErrors).length === 0) {
224
226
  onSubmit(formValues);
225
227
  }
@@ -228,25 +230,40 @@ var FormValidator = function (_a) {
228
230
  if (React.isValidElement(child)) {
229
231
  var element = child;
230
232
  if (element.props.name) {
231
- return React.cloneElement(child, {
233
+ var fieldName = element.props.name;
234
+ var hasError = !!errors[fieldName];
235
+ var isTouched = touched[fieldName];
236
+ var isSuccess = isTouched && !hasError;
237
+ // Generate className
238
+ var className = 'form-validator-field';
239
+ if (hasError)
240
+ className += ' error';
241
+ if (isSuccess)
242
+ className += ' form-validator-success';
243
+ if (element.props.className)
244
+ className += " ".concat(element.props.className);
245
+ // Pass all props to the child
246
+ var props = {
232
247
  onChange: handleChange,
233
248
  onBlur: handleBlur,
234
- value: formValues[element.props.name] || '',
235
- className: "form-validator-field ".concat(errors[element.props.name] ? 'error' : '', " ").concat(touched[element.props.name] && !errors[element.props.name] ? 'form-validator-success' : '', " "),
236
- style: customStyles[element.props.name],
249
+ value: formValues[fieldName] || '',
250
+ className: className,
251
+ style: customStyles[fieldName],
237
252
  'data-theme': theme,
238
- 'data-touched': touched[element.props.name],
239
- 'data-error': !!errors[element.props.name]
240
- });
253
+ 'data-touched': isTouched,
254
+ 'data-error': hasError
255
+ };
256
+ return React.cloneElement(child, props);
241
257
  }
242
258
  }
243
259
  return child;
244
260
  });
245
- var errorElements = Object.keys(errors).map(function (fieldName) { return (errors[fieldName] && (React.createElement("div", { key: fieldName, className: "form-validator-error-message", "data-field": fieldName }, errors[fieldName]))); });
261
+ var visibleErrors = getVisibleErrors();
262
+ var errorElements = Object.keys(visibleErrors).map(function (fieldName) { return (React.createElement("div", { key: fieldName, className: "form-validator-error-message", "data-field": fieldName }, visibleErrors[fieldName])); });
246
263
  return (React.createElement("form", { onSubmit: handleSubmit, className: "form-validator-theme-".concat(theme), style: customStyles.form, noValidate: true },
247
264
  childrenWithProps,
248
265
  errorElements,
249
- React.createElement("button", { type: "submit" }, "Submit")));
266
+ React.createElement("button", { type: "submit", style: { display: 'none' } }, "Submit")));
250
267
  };
251
268
 
252
269
  var FormField = function (_a) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/components/CheckboxGroup.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\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","import React, {useState, useCallback} from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport '../styles/animations.module.css';\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = 'light',\r\n customStyles = {} ,\r\n enableDebounce = true,\r\n debounceDelay = 300\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({...prev, [name]: error || ''}));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const {name, value} = e.target;\r\n\r\n setFormValues(prev => ({...prev, [name]: value }));\r\n\r\n if(enableDebounce) {\r\n debouncedValidate(name, value);\r\n } else {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({...prev, [name]: error || '' }));\r\n }\r\n }, [enableDebounce, debouncedValidate, validationRules]);\r\n\r\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\r\n const { name, value } = e.target;\r\n\r\n setTouched(prev => ({...prev, [name]: true }));\r\n\r\n\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n const handleSubmit = useCallback((e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n\r\n if(Object.keys(formErrors).length === 0){\r\n onSubmit(formValues);\r\n }\r\n }, [formValues, validationRules, onSubmit]);\r\n\r\n const childrenWithProps = React.Children.map(children, child => {\r\n if (React.isValidElement(child)) {\r\n const element = child as React.ReactElement<{ name?: string }>;\r\n\r\n if(element.props.name) {\r\n return React.cloneElement(child, {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[element.props.name] || '',\r\n className: `form-validator-field ${errors[element.props.name] ? 'error' : ''} ${touched[element.props.name] && !errors[element.props.name] ? 'form-validator-success' : ''} `,\r\n style: customStyles[element.props.name],\r\n 'data-theme': theme,\r\n 'data-touched': touched[element.props.name],\r\n 'data-error': !!errors[element.props.name]\r\n } as any);\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n const errorElements = Object.keys(errors).map(fieldName => (\r\n errors[fieldName] && (\r\n <div key={fieldName} className=\"form-validator-error-message\" data-field={fieldName}>\r\n {errors[fieldName]}\r\n </div>\r\n )\r\n ));\r\n\r\n return (\r\n <form \r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n {errorElements}\r\n <button type=\"submit\">Submit</button>\r\n </form>\r\n );\r\n}","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","import React from 'react';\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = '',\r\n error,\r\n touched\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n let newValues: string[];\r\n \r\n if (checked) {\r\n newValues = [...values, value];\r\n } else {\r\n newValues = values.filter(v => v !== value);\r\n }\r\n \r\n onChange?.(name, newValues);\r\n };\r\n\r\n return (\r\n <div className={`checkbox-group ${className}`}>\r\n {options.map(option => (\r\n <label key={option.value} className=\"checkbox-label\">\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={() => onBlur?.(name)}\r\n className={`checkbox-input ${error && touched ? 'error' : ''}`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n {error && touched && (\r\n <div className=\"error-message\">{error}</div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":[],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/components/CheckboxGroup.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\r\n );\r\n}","import React, { useState, useCallback, ReactElement } from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport styles from '../styles/animations.module.css';\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = 'light',\r\n customStyles = {},\r\n enableDebounce = true,\r\n debounceDelay = 300\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n // Only show errors for touched fields\r\n const getVisibleErrors = useCallback(() => {\r\n const visibleErrors: ErrorState = {};\r\n Object.keys(errors).forEach(fieldName => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n visibleErrors[fieldName] = errors[fieldName];\r\n }\r\n });\r\n return visibleErrors;\r\n }, [errors, touched]);\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n // Handle different input types\r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n setFormValues(prev => ({ ...prev, [name]: fieldValue }));\r\n\r\n if (enableDebounce) {\r\n debouncedValidate(name, fieldValue);\r\n } else {\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }\r\n }, [enableDebounce, debouncedValidate, validationRules]);\r\n\r\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n // Mark field as touched\r\n setTouched(prev => ({ ...prev, [name]: true }));\r\n\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n const handleSubmit = useCallback((e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n \r\n // Mark ALL fields as touched on submit\r\n const allTouched: Record<string, boolean> = {};\r\n Object.keys(validationRules).forEach(fieldName => {\r\n allTouched[fieldName] = true;\r\n });\r\n setTouched(allTouched);\r\n\r\n if (Object.keys(formErrors).length === 0) {\r\n onSubmit(formValues);\r\n }\r\n }, [formValues, validationRules, onSubmit]);\r\n\r\n const childrenWithProps = React.Children.map(children, child => {\r\n if (React.isValidElement(child)) {\r\n const element = child as React.ReactElement<Record<string, any>>;\r\n\r\n if (element.props.name) {\r\n const fieldName = element.props.name;\r\n const hasError = !!errors[fieldName];\r\n const isTouched = touched[fieldName];\r\n const isSuccess = isTouched && !hasError;\r\n \r\n // Generate className\r\n let className = 'form-validator-field';\r\n if (hasError) className += ' error';\r\n if (isSuccess) className += ' form-validator-success';\r\n if (element.props.className) className += ` ${element.props.className}`;\r\n\r\n // Pass all props to the child\r\n const props: any = {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[fieldName] || '',\r\n className,\r\n style: customStyles[fieldName],\r\n 'data-theme': theme,\r\n 'data-touched': isTouched,\r\n 'data-error': hasError\r\n };\r\n\r\n return React.cloneElement(child, props);\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n const visibleErrors = getVisibleErrors();\r\n const errorElements = Object.keys(visibleErrors).map(fieldName => (\r\n <div \r\n key={fieldName} \r\n className=\"form-validator-error-message\"\r\n data-field={fieldName}\r\n >\r\n {visibleErrors[fieldName]}\r\n </div>\r\n ));\r\n\r\n return (\r\n <form \r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n {errorElements}\r\n {/* Hidden submit button - user should provide their own */}\r\n <button type=\"submit\" style={{ display: 'none' }}>Submit</button>\r\n </form>\r\n );\r\n};","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","import React from 'react';\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = '',\r\n error,\r\n touched\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n let newValues: string[];\r\n \r\n if (checked) {\r\n newValues = [...values, value];\r\n } else {\r\n newValues = values.filter(v => v !== value);\r\n }\r\n \r\n onChange?.(name, newValues);\r\n };\r\n\r\n return (\r\n <div className={`checkbox-group ${className}`}>\r\n {options.map(option => (\r\n <label key={option.value} className=\"checkbox-label\">\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={() => onBlur?.(name)}\r\n className={`checkbox-input ${error && touched ? 'error' : ''}`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n {error && touched && (\r\n <div className=\"error-message\">{error}</div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":[],"mappings":";;;IAIa,aAAa,GAAG,UAC3B,KAAU,EACV,KAAsB,EACtB,SAA+B,EAAA;;AAE/B,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,SAAS,CAAC;AAE7B,IAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,IAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,wBAAwB,CAAC;AAErE,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,OAAO,CAAC;SAC5B;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,OAAO,CAAC;SACxC;AAAM,aAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAClF,YAAA,OAAO,OAAO,CAAC;SAChB;KACF;AAED,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;AAAE,QAAA,OAAO,SAAS,CAAC;AAEhD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAE7B,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE;AACrD,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,KAAI,mBAAoB,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,gBAAa,CAAC;SACtF;AAED,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE;AACrD,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,KAAI,uBAAwB,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,gBAAa,CAAC;SAC1F;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/C,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,gBAAgB,CAAC;SACpD;KACF;AAED,IAAA,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;QACxB,IAAM,UAAU,GAAG,4BAA4B,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,oCAAoC,CAAC;SACtE;KACF;AAED,IAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,EAAE;QAC7B,IAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,KAAI,4FAA4F,CAAC;QAE3I,IAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;AAChE,YAAA,OAAO,OAAO,CAAC;SAChB;KACF;AAED,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AAC9B,QAAA,IAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE1B,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,6BAA6B,CAAC;SAChE;AAED,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AAC9C,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,KAAI,mBAAoB,CAAA,MAAA,CAAA,KAAK,CAAC,GAAG,CAAE,CAAC;SAC/D;AAED,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AAC9C,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,KAAI,uBAAwB,CAAA,MAAA,CAAA,KAAK,CAAC,GAAG,CAAE,CAAC;SACnE;KACF;AAED,IAAA,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE;AACtB,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;SAChB;AAAC,QAAA,OAAA,EAAA,EAAM;YACN,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,KAAI,wDAAwD,CAAC;SACxF;KACF;AAED,IAAA,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE;QACtB,IAAM,UAAU,GAAG,yFAAyF,CAAC;QAC7G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,KAAI,mCAAmC,CAAC;SACnE;KACF;AAED,IAAA,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE;AACvB,QAAA,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;YACzB,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,2BAA2B,CAAC;SAC5D;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,IAAI,GAAG,OAAO,EAAE;AAClB,gBAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,qBAAA,CAAA,MAAA,CAAsB,OAAO,CAAC,kBAAkB,EAAE,CAAE,CAAC;aACxF;SACF;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,IAAI,GAAG,OAAO,EAAE;AAClB,gBAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,sBAAA,CAAA,MAAA,CAAuB,OAAO,CAAC,kBAAkB,EAAE,CAAE,CAAC;aACzF;SACF;KACF;IAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,mCAAmC,CAAC;SACxE;AAED,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;AACvE,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,KAAI,yBAA0B,CAAA,MAAA,CAAA,KAAK,CAAC,WAAW,aAAU,CAAC;SAC7F;AAED,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;AACvE,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,KAAI,6BAA8B,CAAA,MAAA,CAAA,KAAK,CAAC,WAAW,aAAU,CAAC;SACjG;KACF;IAED,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;AACtC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE;YAC1B,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,yBAAyB,CAAC;SAC9D;KACF;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,EAAE;YAC5E,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,yBAAyB,CAAC;SAC9D;KACF;AAED,IAAA,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KACvC;AAED,IAAA,OAAO,SAAS,CAAC;AACnB,EAAE;AAEW,IAAA,YAAY,GAAG,UAC1B,MAA2B,EAC3B,KAAqC,EAAA;IAErC,IAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AAClC,QAAA,IAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;SAC3B;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,MAAM,CAAC;AAChB;;AC7JgB,SAAA,WAAW,CACvB,EAAK,EACL,KAAa,EAAA;AAEb,IAAA,IAAM,UAAU,GAAG,MAAM,CAA4C,SAAS,CAAC,CAAC;IAEhF,OAAO,WAAW,EACb,YAAA;QAAC,IAAc,IAAA,GAAA,EAAA,CAAA;aAAd,IAAc,EAAA,GAAA,CAAA,EAAd,EAAc,GAAA,SAAA,CAAA,MAAA,EAAd,EAAc,EAAA,EAAA;YAAd,IAAc,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;AACZ,QAAA,IAAG,UAAU,CAAC,OAAO,EAAE;AACnB,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACpC;AAED,QAAA,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,YAAA;YAC5B,EAAE,CAAA,KAAA,CAAA,KAAA,CAAA,EAAI,IAAI,CAAE,CAAA;SACf,EAAE,KAAK,CAAC,CAAC;KACb,GACD,CAAC,EAAE,EAAE,KAAK,CAAC,CACd,CAAC;AACN;;ACdO,IAAM,aAAa,GAAiC,UAAC,EAQ3D,EAAA;AAPG,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,KAAe,EAAf,KAAK,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,OAAO,GAAA,EAAA,EACf,EAAiB,GAAA,EAAA,CAAA,YAAA,EAAjB,YAAY,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAA,EAAA,EACjB,EAAA,GAAA,EAAA,CAAA,cAAqB,EAArB,cAAc,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,IAAI,GAAA,EAAA,EACrB,EAAmB,GAAA,EAAA,CAAA,aAAA,EAAnB,aAAa,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,GAAG,GAAA,EAAA,CAAA;IAEb,IAAA,EAAA,GAA8B,QAAQ,CAAY,EAAE,CAAC,EAApD,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAA2B,CAAC;IACtD,IAAA,EAAA,GAAsB,QAAQ,CAAa,EAAE,CAAC,EAA7C,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAA4B,CAAC;IAC/C,IAAA,EAAA,GAAwB,QAAQ,CAA0B,EAAE,CAAC,EAA5D,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAyC,CAAC;;IAGpE,IAAM,gBAAgB,GAAG,WAAW,CAAC,YAAA;QACjC,IAAM,aAAa,GAAe,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;YACjC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;gBACzC,aAAa,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;aAChD;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,aAAa,CAAC;AACzB,KAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtB,IAAA,IAAM,iBAAiB,GAAG,WAAW,CAAC,UAAC,IAAY,EAAE,KAAU,EAAA;QAC3D,IAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,SAAS,CAAC,UAAA,IAAI,EAAA;;YAAI,QAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAG,KAAK,IAAI,EAAE,EAAG,EAAA,EAAA,EAAA;AAAlC,SAAkC,CAAC,CAAC;KACzD,EAAE,aAAa,CAAC,CAAC;AAElB,IAAA,IAAM,YAAY,GAAG,WAAW,CAAC,UAAC,CAAsC,EAAA;AAC9D,QAAA,IAAA,KAAiC,CAAC,CAAC,MAAM,EAAvC,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,aAAa,CAAC;;QAGhD,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;YACrB,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;SACrC;AAAM,aAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACzB,UAAU,GAAG,KAAK,CAAC;SACtB;QAED,aAAa,CAAC,UAAA,IAAI,EAAA;;AAAI,YAAA,8BAAM,IAAI,CAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAG,IAAI,CAAA,GAAG,UAAU,EAAG,EAAA,EAAA,EAAA;AAAjC,SAAiC,CAAC,CAAC;QAEzD,IAAI,cAAc,EAAE;AAChB,YAAA,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACvC;aAAM;YACH,IAAM,OAAK,GAAG,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,SAAS,CAAC,UAAA,IAAI,EAAA;;gBAAI,QAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAG,OAAK,IAAI,EAAE,EAAG,EAAA,EAAA,EAAA;AAAlC,aAAkC,CAAC,CAAC;SACzD;KACJ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;AAEzD,IAAA,IAAM,UAAU,GAAG,WAAW,CAAC,UAAC,CAAqC,EAAA;AAC3D,QAAA,IAAA,KAAiC,CAAC,CAAC,MAAM,EAAvC,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,aAAa,CAAC;QAEhD,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;YACrB,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;SACrC;AAAM,aAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACzB,UAAU,GAAG,KAAK,CAAC;SACtB;;QAGD,UAAU,CAAC,UAAA,IAAI,EAAA;;AAAI,YAAA,8BAAM,IAAI,CAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAG,IAAI,CAAA,GAAG,IAAI,EAAG,EAAA,EAAA,EAAA;AAA3B,SAA2B,CAAC,CAAC;QAEhD,IAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,SAAS,CAAC,UAAA,IAAI,EAAA;;YAAI,QAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAG,KAAK,IAAI,EAAE,EAAG,EAAA,EAAA,EAAA;AAAlC,SAAkC,CAAC,CAAC;AAC1D,KAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtB,IAAA,IAAM,YAAY,GAAG,WAAW,CAAC,UAAC,CAAkB,EAAA;QAChD,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC7D,SAAS,CAAC,UAAU,CAAC,CAAC;;QAGtB,IAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AAC1C,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AACjC,SAAC,CAAC,CAAC;QACH,UAAU,CAAC,UAAU,CAAC,CAAC;QAEvB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACxB;KACJ,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE5C,IAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAA,KAAK,EAAA;AACxD,QAAA,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAM,OAAO,GAAG,KAAgD,CAAC;AAEjE,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;AACpB,gBAAA,IAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,IAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACrC,gBAAA,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,gBAAA,IAAM,SAAS,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC;;gBAGzC,IAAI,SAAS,GAAG,sBAAsB,CAAC;AACvC,gBAAA,IAAI,QAAQ;oBAAE,SAAS,IAAI,QAAQ,CAAC;AACpC,gBAAA,IAAI,SAAS;oBAAE,SAAS,IAAI,yBAAyB,CAAC;AACtD,gBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS;oBAAE,SAAS,IAAI,WAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;;AAGxE,gBAAA,IAAM,KAAK,GAAQ;AACf,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE;AAClC,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC;AAC9B,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,cAAc,EAAE,SAAS;AACzB,oBAAA,YAAY,EAAE,QAAQ;iBACzB,CAAC;gBAEF,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC3C;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC,CAAC;AAEH,IAAA,IAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AACzC,IAAA,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,EAAI,EAAA,QAC9D,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,8BAA8B,EAAA,YAAA,EAC5B,SAAS,EAEpB,EAAA,aAAa,CAAC,SAAS,CAAC,CACvB,EAPwD,EAQjE,CAAC,CAAC;AAEH,IAAA,QACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,uBAAA,CAAA,MAAA,CAAwB,KAAK,CAAE,EAC1C,KAAK,EAAE,YAAY,CAAC,IAAI,EACxB,UAAU,EAAA,IAAA,EAAA;QAET,iBAAiB;QACjB,aAAa;AAEd,QAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAiB,EAAA,QAAA,CAAA,CAC9D,EACT;AACN;;AC7IO,IAAM,SAAS,GAA6B,UAAC,EAOnD,EAAA;IANG,IAAA,KAAK,WAAA,EACL,MAAM,YAAA,EACN,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAa,GAAA,EAAA,CAAA,SAAA,EAAb,SAAS,GAAE,EAAA,KAAA,KAAA,CAAA,GAAA,EAAE,KAAA,EACb,EAAE,QAAA,EACC,KAAK,GANwC,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAOnD,CADW,CAAA;AAER,IAAA,IAAM,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC;AAEjC,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA;AAC1C,QAAA,KAAK,KACF,KAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,sBAAsB,EACpD,EAAA,KAAK,CACF,CACX;QAED,KAAO,CAAA,aAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,uBAAA,CAAA,MAAA,CAAwB,MAAM,GAAG,QAAQ,GAAG,EAAE,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAE,EACrH,cAAA,EAAA,CAAC,CAAC,MAAM,EACJ,kBAAA,EAAA,MAAM,GAAG,EAAG,CAAA,MAAA,CAAA,OAAO,EAAS,SAAA,CAAA,GAAG,SAAS,EACtD,EAAA,KAAK,CAAG,CAAA;QAEX,MAAM,KACH,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,EAAG,CAAA,MAAA,CAAA,OAAO,EAAS,SAAA,CAAA,EACvB,SAAS,EAAC,+BAA+B,EACzC,IAAI,EAAC,OAAO,EAAA,EAEX,MAAM,CACL,CACT,CACC,EACR;AACN;;ACxBO,IAAM,aAAa,GAAiC,UAAC,EAS3D,EAAA;AARC,IAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAA,GAAA,EAAA,CAAA,MAAW,EAAX,MAAM,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,EAAE,GAAA,EAAA,EACX,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAc,GAAA,EAAA,CAAA,SAAA,EAAd,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAA,EAAA,EACd,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;IAEP,IAAM,YAAY,GAAG,UAAC,CAAsC,EAAA;QACpD,IAAA,EAAA,GAAqB,CAAC,CAAC,MAAM,EAA3B,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAa,CAAC;AACpC,QAAA,IAAI,SAAmB,CAAC;QAExB,IAAI,OAAO,EAAE;AACX,YAAA,SAAS,GAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAM,EAAE,IAAA,CAAA,EAAA,CAAA,KAAK,SAAC,CAAC;SAChC;aAAM;AACL,YAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,KAAK,KAAK,CAAX,EAAW,CAAC,CAAC;SAC7C;QAED,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9B,KAAC,CAAC;AAEF,IAAA,QACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,iBAAA,CAAA,MAAA,CAAkB,SAAS,CAAE,EAAA;AAC1C,QAAA,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,QACrB,KAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAC,gBAAgB,EAAA;YAClD,KACE,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACtC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAM,EAAA,OAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAG,IAAI,CAAC,CAAd,EAAc,EAC5B,SAAS,EAAE,iBAAA,CAAA,MAAA,CAAkB,KAAK,IAAI,OAAO,GAAG,OAAO,GAAG,EAAE,CAAE,EAC9D,CAAA;AACD,YAAA,MAAM,CAAC,KAAK,CACP,EACT,EAAA,CAAC;AACD,QAAA,KAAK,IAAI,OAAO,KACf,6BAAK,SAAS,EAAC,eAAe,EAAA,EAAE,KAAK,CAAO,CAC7C,CACG,EACN;AACJ;;AC7DA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAC;IACtB,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,UAEnB,QAA0D,EAAE,OAAa,EAAA;AAEzE,QAAA,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;AAC7B,YAAA,IAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC;aACf;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC;AACN,CAAC;AAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAC;IACvB,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAEpB,QAA0D,EAAE,OAAa,EAAA;AAEzE,QAAA,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;AAC7B,YAAA,IAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;AAC1C,gBAAA,OAAO,KAAK,CAAC;aAChB;SACJ;AACD,QAAA,OAAO,IAAI,CAAC;AAChB,KAAiC,CAAC;AACtC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAC;AACvB,IAAA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,YAAA;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AAClE,KAAC,CAAC;AACN,CAAC;AAEY,IAAA,QAAQ,GAAG,UACpB,IAAO,EACP,KAAa,EAAA;AAEb,IAAA,IAAI,UAAmB,CAAC;AACxB,IAAA,IAAI,UAAyB,CAAC;IAE9B,OAAO,YAAA;QAAoB,IAAc,IAAA,GAAA,EAAA,CAAA;aAAd,IAAc,EAAA,GAAA,CAAA,EAAd,EAAc,GAAA,SAAA,CAAA,MAAA,EAAd,EAAc,EAAA,EAAA;YAAd,IAAc,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;QACrC,IAAG,CAAC,UAAU,EAAE;YACZ,UAAU,GAAG,IAAI,CAAC;YAClB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,UAAU,CAAC,YAAM,EAAA,OAAA,UAAU,GAAG,KAAK,CAAA,EAAA,EAAE,KAAK,CAAC,CAAC;SAC/C;AACD,QAAA,OAAO,UAAU,CAAC;AACtB,KAAM,CAAC;AACX;;;;"}
package/dist/index.js CHANGED
@@ -147,41 +147,21 @@ function useDebounce(fn, delay) {
147
147
  }), [fn, delay]);
148
148
  }
149
149
 
150
- function styleInject(css, ref) {
151
- if ( ref === void 0 ) ref = {};
152
- var insertAt = ref.insertAt;
153
-
154
- if (!css || typeof document === 'undefined') { return; }
155
-
156
- var head = document.head || document.getElementsByTagName('head')[0];
157
- var style = document.createElement('style');
158
- style.type = 'text/css';
159
-
160
- if (insertAt === 'top') {
161
- if (head.firstChild) {
162
- head.insertBefore(style, head.firstChild);
163
- } else {
164
- head.appendChild(style);
165
- }
166
- } else {
167
- head.appendChild(style);
168
- }
169
-
170
- if (style.styleSheet) {
171
- style.styleSheet.cssText = css;
172
- } else {
173
- style.appendChild(document.createTextNode(css));
174
- }
175
- }
176
-
177
- var css_248z = "@keyframes animations-module_shake__qVr3b{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}@keyframes animations-module_slideIn__lwqyK{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes animations-module_gentlePulse__xvUHG{0%{box-shadow:0 0 0 0 rgba(59,130,246,.5)}70%{box-shadow:0 0 0 5px rgba(59,130,246,0)}to{box-shadow:0 0 0 0 rgba(59,130,246,0)}}.animations-module_form-validator-field__pirKM{transition:border-color .2s ease,box-shadow .2s ease}.animations-module_form-validator-field__pirKM:focus{animation:animations-module_gentlePulse__xvUHG 1.5s infinite;border-color:#3b82f6;outline:none}.animations-module_form-validator-field__pirKM.animations-module_error__Vq-ZO{animation:animations-module_shake__qVr3b .5s cubic-bezier(.36,.07,.19,.97) both;border-color:#ef4444}.animations-module_form-validator-error-message__h1Ge-{animation:animations-module_slideIn__lwqyK .2s ease-out;color:#ef4444;font-size:.875rem;margin-top:.25rem}.animations-module_form-validator-theme-dark__ySqnh .animations-module_form-validator-field__pirKM{background-color:#1f2937;border-color:#4b5563;color:#fff}.animations-module_form-validator-success__JkYav{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2310b981' stroke-width='2'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E\");background-position:right .5rem center;background-repeat:no-repeat;border-color:#10b981!important;padding-right:2rem}.animations-module_form-validator-field-container__9P7zl{margin-bottom:1rem}.animations-module_form-validator-label__O7u2s{color:#374151;display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem}.animations-module_form-validator-theme-dark__ySqnh .animations-module_form-validator-label__O7u2s{color:#e5e7eb}.animations-module_checkbox-group__nmUwv{border:1px solid #e5e7eb;border-radius:.375rem;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:.5rem}.animations-module_checkbox-label__XD-M1{align-items:center;color:#374151;cursor:pointer;display:flex;font-size:.95rem;gap:.75rem;transition:color .2s ease}.animations-module_checkbox-label__XD-M1:hover{color:#1f2937}.animations-module_checkbox-input__hRJLO{border:2px solid #d1d5db;border-radius:.25rem;cursor:pointer;height:1.2rem;transition:all .2s ease;width:1.2rem}.animations-module_checkbox-input__hRJLO:checked{background-color:#3b82f6;border-color:#3b82f6}.animations-module_checkbox-input__hRJLO.animations-module_error__Vq-ZO{animation:animations-module_pulse__JOYAq 1s infinite;border-color:#ef4444}.animations-module_checkbox-input__hRJLO:focus{ring:2px solid #3b82f6;ring-offset:2px;outline:none}.animations-module_form-validator-theme-dark__ySqnh .animations-module_checkbox-label__XD-M1{color:#e5e7eb}.animations-module_form-validator-theme-dark__ySqnh .animations-module_checkbox-group__nmUwv{border-color:#4b5563}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuaW1hdGlvbnMubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSwwQ0FDRSxNQUFXLHVCQUEwQixDQUNyQyxvQkFBMEIsMEJBQTZCLENBQ3ZELGdCQUFxQix5QkFBNEIsQ0FDbkQsQ0FFQSw0Q0FDRSxHQUNFLFNBQVUsQ0FDViwyQkFDRixDQUNBLEdBQ0UsU0FBVSxDQUNWLHVCQUNGLENBQ0YsQ0FFQSxnREFDRSxHQUFLLHNDQUE2QyxDQUNsRCxJQUFNLHVDQUE2QyxDQUNuRCxHQUFPLHFDQUEyQyxDQUNwRCxDQUVBLCtDQUNFLG9EQUNGLENBRUEscURBR0UsNERBQW9DLENBRHBDLG9CQUFxQixDQURyQixZQUdGLENBRUEsOEVBRUUsK0VBQStELENBRC9ELG9CQUVGLENBRUEsdURBSUUsdURBQWdDLENBSGhDLGFBQWMsQ0FDZCxpQkFBbUIsQ0FDbkIsaUJBRUYsQ0FFQSxtR0FDRSx3QkFBeUIsQ0FDekIsb0JBQXFCLENBQ3JCLFVBQ0YsQ0FFQSxpREFFRSx5T0FBa1AsQ0FFbFAsc0NBQXdDLENBRHhDLDJCQUE0QixDQUY1Qiw4QkFBZ0MsQ0FJaEMsa0JBQ0YsQ0FFQSx5REFDRSxrQkFDRixDQUVBLCtDQUtFLGFBQWMsQ0FKZCxhQUFjLENBRWQsaUJBQW1CLENBQ25CLGVBQWdCLENBRmhCLG9CQUlGLENBRUEsbUdBQ0UsYUFDRixDQU1BLHlDQU1FLHdCQUF5QixDQUN6QixxQkFBdUIsQ0FOdkIsWUFBYSxDQUNiLHFCQUFzQixDQUN0QixVQUFZLENBQ1osa0JBQW1CLENBQ25CLGFBR0YsQ0FFQSx5Q0FFRSxrQkFBbUIsQ0FJbkIsYUFBYyxDQUZkLGNBQWUsQ0FIZixZQUFhLENBSWIsZ0JBQWtCLENBRmxCLFVBQVksQ0FJWix5QkFDRixDQUVBLCtDQUNFLGFBQ0YsQ0FFQSx5Q0FJRSx3QkFBeUIsQ0FDekIsb0JBQXNCLENBRnRCLGNBQWUsQ0FEZixhQUFjLENBSWQsdUJBQXlCLENBTHpCLFlBTUYsQ0FFQSxpREFDRSx3QkFBeUIsQ0FDekIsb0JBQ0YsQ0FFQSx3RUFFRSxvREFBNEIsQ0FENUIsb0JBRUYsQ0FFQSwrQ0FFRSxzQkFBdUIsQ0FDdkIsZUFBZ0IsQ0FGaEIsWUFHRixDQUVBLDZGQUNFLGFBQ0YsQ0FFQSw2RkFDRSxvQkFDRiIsImZpbGUiOiJhbmltYXRpb25zLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuQGtleWZyYW1lcyBzaGFrZSB7XHJcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH1cclxuICAxMCUsIDMwJSwgNTAlLCA3MCUsIDkwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNXB4KTsgfVxyXG4gIDIwJSwgNDAlLCA2MCUsIDgwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpOyB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVJbiB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZ2VudGxlUHVsc2Uge1xyXG4gIDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDU5LCAxMzAsIDI0NiwgMC41KTsgfVxyXG4gIDcwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDU5LCAxMzAsIDI0NiwgMCk7IH1cclxuICAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDU5LCAxMzAsIDI0NiwgMCk7IH1cclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLWZpZWxkIHtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLWZpZWxkOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJvcmRlci1jb2xvcjogIzNiODJmNjtcclxuICBhbmltYXRpb246IGdlbnRsZVB1bHNlIDEuNXMgaW5maW5pdGU7XHJcbn1cclxuXHJcbi5mb3JtLXZhbGlkYXRvci1maWVsZC5lcnJvciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZWY0NDQ0O1xyXG4gIGFuaW1hdGlvbjogc2hha2UgMC41cyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLWVycm9yLW1lc3NhZ2Uge1xyXG4gIGNvbG9yOiAjZWY0NDQ0O1xyXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcclxuICBhbmltYXRpb246IHNsaWRlSW4gMC4ycyBlYXNlLW91dDtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLXRoZW1lLWRhcmsgLmZvcm0tdmFsaWRhdG9yLWZpZWxkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWYyOTM3O1xyXG4gIGJvcmRlci1jb2xvcjogIzRiNTU2MztcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5mb3JtLXZhbGlkYXRvci1zdWNjZXNzIHtcclxuICBib3JkZXItY29sb3I6ICMxMGI5ODEgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE2JyBoZWlnaHQ9JzE2JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzMTBiOTgxJyBzdHJva2Utd2lkdGg9JzInJTNFJTNDcG9seWxpbmUgcG9pbnRzPScyMCA2IDkgMTcgNCAxMiclM0UlM0MvcG9seWxpbmUlM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMC41cmVtIGNlbnRlcjtcclxuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItZmllbGQtY29udGFpbmVyIHtcclxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItbGFiZWwge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAjMzc0MTUxO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItdGhlbWUtZGFyayAuZm9ybS12YWxpZGF0b3ItbGFiZWwge1xyXG4gIGNvbG9yOiAjZTVlN2ViO1xyXG59XHJcblxyXG4uZm9ybS12YWxpZGF0b3ItaW5wdXQge1xyXG4gIGNvbXBvc2VzOiBmb3JtLXZhbGlkYXRvci1maWVsZDtcclxufVxyXG5cclxuLmNoZWNrYm94LWdyb3VwIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAwLjc1cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgcGFkZGluZzogMC41cmVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNWU3ZWI7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XHJcbn1cclxuXHJcbi5jaGVja2JveC1sYWJlbCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC43NXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZm9udC1zaXplOiAwLjk1cmVtO1xyXG4gIGNvbG9yOiAjMzc0MTUxO1xyXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmNoZWNrYm94LWxhYmVsOmhvdmVyIHtcclxuICBjb2xvcjogIzFmMjkzNztcclxufVxyXG5cclxuLmNoZWNrYm94LWlucHV0IHtcclxuICB3aWR0aDogMS4ycmVtO1xyXG4gIGhlaWdodDogMS4ycmVtO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjZDFkNWRiO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmNoZWNrYm94LWlucHV0OmNoZWNrZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMzYjgyZjY7XHJcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xyXG59XHJcblxyXG4uY2hlY2tib3gtaW5wdXQuZXJyb3Ige1xyXG4gIGJvcmRlci1jb2xvcjogI2VmNDQ0NDtcclxuICBhbmltYXRpb246IHB1bHNlIDFzIGluZmluaXRlO1xyXG59XHJcblxyXG4uY2hlY2tib3gtaW5wdXQ6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcmluZzogMnB4IHNvbGlkICMzYjgyZjY7XHJcbiAgcmluZy1vZmZzZXQ6IDJweDtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLXRoZW1lLWRhcmsgLmNoZWNrYm94LWxhYmVsIHtcclxuICBjb2xvcjogI2U1ZTdlYjtcclxufVxyXG5cclxuLmZvcm0tdmFsaWRhdG9yLXRoZW1lLWRhcmsgLmNoZWNrYm94LWdyb3VwIHtcclxuICBib3JkZXItY29sb3I6ICM0YjU1NjM7XHJcbn0iXX0= */";
178
- styleInject(css_248z);
179
-
180
150
  var FormValidator = function (_a) {
181
151
  var children = _a.children, validationRules = _a.validationRules, onSubmit = _a.onSubmit, _b = _a.theme, theme = _b === void 0 ? 'light' : _b, _c = _a.customStyles, customStyles = _c === void 0 ? {} : _c, _d = _a.enableDebounce, enableDebounce = _d === void 0 ? true : _d, _e = _a.debounceDelay, debounceDelay = _e === void 0 ? 300 : _e;
182
152
  var _f = React.useState({}), formValues = _f[0], setFormValues = _f[1];
183
153
  var _g = React.useState({}), errors = _g[0], setErrors = _g[1];
184
154
  var _h = React.useState({}), touched = _h[0], setTouched = _h[1];
155
+ // Only show errors for touched fields
156
+ var getVisibleErrors = React.useCallback(function () {
157
+ var visibleErrors = {};
158
+ Object.keys(errors).forEach(function (fieldName) {
159
+ if (touched[fieldName] && errors[fieldName]) {
160
+ visibleErrors[fieldName] = errors[fieldName];
161
+ }
162
+ });
163
+ return visibleErrors;
164
+ }, [errors, touched]);
185
165
  var debouncedValidate = useDebounce(function (name, value) {
186
166
  var error = validateField(value, validationRules[name]);
187
167
  setErrors(function (prev) {
@@ -190,16 +170,24 @@ var FormValidator = function (_a) {
190
170
  });
191
171
  }, debounceDelay);
192
172
  var handleChange = React.useCallback(function (e) {
193
- var _a = e.target, name = _a.name, value = _a.value;
173
+ var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
174
+ // Handle different input types
175
+ var fieldValue = value;
176
+ if (type === 'checkbox') {
177
+ fieldValue = checked ? value : '';
178
+ }
179
+ else if (type === 'radio') {
180
+ fieldValue = value;
181
+ }
194
182
  setFormValues(function (prev) {
195
183
  var _a;
196
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = value, _a)));
184
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = fieldValue, _a)));
197
185
  });
198
186
  if (enableDebounce) {
199
- debouncedValidate(name, value);
187
+ debouncedValidate(name, fieldValue);
200
188
  }
201
189
  else {
202
- var error_1 = validateField(value, validationRules[name]);
190
+ var error_1 = validateField(fieldValue, validationRules[name]);
203
191
  setErrors(function (prev) {
204
192
  var _a;
205
193
  return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error_1 || '', _a)));
@@ -207,12 +195,20 @@ var FormValidator = function (_a) {
207
195
  }
208
196
  }, [enableDebounce, debouncedValidate, validationRules]);
209
197
  var handleBlur = React.useCallback(function (e) {
210
- var _a = e.target, name = _a.name, value = _a.value;
198
+ var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
199
+ var fieldValue = value;
200
+ if (type === 'checkbox') {
201
+ fieldValue = checked ? value : '';
202
+ }
203
+ else if (type === 'radio') {
204
+ fieldValue = value;
205
+ }
206
+ // Mark field as touched
211
207
  setTouched(function (prev) {
212
208
  var _a;
213
209
  return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = true, _a)));
214
210
  });
215
- var error = validateField(value, validationRules[name]);
211
+ var error = validateField(fieldValue, validationRules[name]);
216
212
  setErrors(function (prev) {
217
213
  var _a;
218
214
  return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
@@ -222,6 +218,12 @@ var FormValidator = function (_a) {
222
218
  e.preventDefault();
223
219
  var formErrors = validateForm(formValues, validationRules);
224
220
  setErrors(formErrors);
221
+ // Mark ALL fields as touched on submit
222
+ var allTouched = {};
223
+ Object.keys(validationRules).forEach(function (fieldName) {
224
+ allTouched[fieldName] = true;
225
+ });
226
+ setTouched(allTouched);
225
227
  if (Object.keys(formErrors).length === 0) {
226
228
  onSubmit(formValues);
227
229
  }
@@ -230,25 +232,40 @@ var FormValidator = function (_a) {
230
232
  if (React.isValidElement(child)) {
231
233
  var element = child;
232
234
  if (element.props.name) {
233
- return React.cloneElement(child, {
235
+ var fieldName = element.props.name;
236
+ var hasError = !!errors[fieldName];
237
+ var isTouched = touched[fieldName];
238
+ var isSuccess = isTouched && !hasError;
239
+ // Generate className
240
+ var className = 'form-validator-field';
241
+ if (hasError)
242
+ className += ' error';
243
+ if (isSuccess)
244
+ className += ' form-validator-success';
245
+ if (element.props.className)
246
+ className += " ".concat(element.props.className);
247
+ // Pass all props to the child
248
+ var props = {
234
249
  onChange: handleChange,
235
250
  onBlur: handleBlur,
236
- value: formValues[element.props.name] || '',
237
- className: "form-validator-field ".concat(errors[element.props.name] ? 'error' : '', " ").concat(touched[element.props.name] && !errors[element.props.name] ? 'form-validator-success' : '', " "),
238
- style: customStyles[element.props.name],
251
+ value: formValues[fieldName] || '',
252
+ className: className,
253
+ style: customStyles[fieldName],
239
254
  'data-theme': theme,
240
- 'data-touched': touched[element.props.name],
241
- 'data-error': !!errors[element.props.name]
242
- });
255
+ 'data-touched': isTouched,
256
+ 'data-error': hasError
257
+ };
258
+ return React.cloneElement(child, props);
243
259
  }
244
260
  }
245
261
  return child;
246
262
  });
247
- var errorElements = Object.keys(errors).map(function (fieldName) { return (errors[fieldName] && (React.createElement("div", { key: fieldName, className: "form-validator-error-message", "data-field": fieldName }, errors[fieldName]))); });
263
+ var visibleErrors = getVisibleErrors();
264
+ var errorElements = Object.keys(visibleErrors).map(function (fieldName) { return (React.createElement("div", { key: fieldName, className: "form-validator-error-message", "data-field": fieldName }, visibleErrors[fieldName])); });
248
265
  return (React.createElement("form", { onSubmit: handleSubmit, className: "form-validator-theme-".concat(theme), style: customStyles.form, noValidate: true },
249
266
  childrenWithProps,
250
267
  errorElements,
251
- React.createElement("button", { type: "submit" }, "Submit")));
268
+ React.createElement("button", { type: "submit", style: { display: 'none' } }, "Submit")));
252
269
  };
253
270
 
254
271
  var FormField = function (_a) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/components/CheckboxGroup.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\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","import React, {useState, useCallback} from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport '../styles/animations.module.css';\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = 'light',\r\n customStyles = {} ,\r\n enableDebounce = true,\r\n debounceDelay = 300\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({...prev, [name]: error || ''}));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const {name, value} = e.target;\r\n\r\n setFormValues(prev => ({...prev, [name]: value }));\r\n\r\n if(enableDebounce) {\r\n debouncedValidate(name, value);\r\n } else {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({...prev, [name]: error || '' }));\r\n }\r\n }, [enableDebounce, debouncedValidate, validationRules]);\r\n\r\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\r\n const { name, value } = e.target;\r\n\r\n setTouched(prev => ({...prev, [name]: true }));\r\n\r\n\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n const handleSubmit = useCallback((e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n\r\n if(Object.keys(formErrors).length === 0){\r\n onSubmit(formValues);\r\n }\r\n }, [formValues, validationRules, onSubmit]);\r\n\r\n const childrenWithProps = React.Children.map(children, child => {\r\n if (React.isValidElement(child)) {\r\n const element = child as React.ReactElement<{ name?: string }>;\r\n\r\n if(element.props.name) {\r\n return React.cloneElement(child, {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[element.props.name] || '',\r\n className: `form-validator-field ${errors[element.props.name] ? 'error' : ''} ${touched[element.props.name] && !errors[element.props.name] ? 'form-validator-success' : ''} `,\r\n style: customStyles[element.props.name],\r\n 'data-theme': theme,\r\n 'data-touched': touched[element.props.name],\r\n 'data-error': !!errors[element.props.name]\r\n } as any);\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n const errorElements = Object.keys(errors).map(fieldName => (\r\n errors[fieldName] && (\r\n <div key={fieldName} className=\"form-validator-error-message\" data-field={fieldName}>\r\n {errors[fieldName]}\r\n </div>\r\n )\r\n ));\r\n\r\n return (\r\n <form \r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n {errorElements}\r\n <button type=\"submit\">Submit</button>\r\n </form>\r\n );\r\n}","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","import React from 'react';\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = '',\r\n error,\r\n touched\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n let newValues: string[];\r\n \r\n if (checked) {\r\n newValues = [...values, value];\r\n } else {\r\n newValues = values.filter(v => v !== value);\r\n }\r\n \r\n onChange?.(name, newValues);\r\n };\r\n\r\n return (\r\n <div className={`checkbox-group ${className}`}>\r\n {options.map(option => (\r\n <label key={option.value} className=\"checkbox-label\">\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={() => onBlur?.(name)}\r\n className={`checkbox-input ${error && touched ? 'error' : ''}`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n {error && touched && (\r\n <div className=\"error-message\">{error}</div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":["useRef","useCallback","useState","__assign","__rest","__spreadArray"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/components/CheckboxGroup.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\r\n );\r\n}","import React, { useState, useCallback, ReactElement } from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport styles from '../styles/animations.module.css';\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = 'light',\r\n customStyles = {},\r\n enableDebounce = true,\r\n debounceDelay = 300\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n // Only show errors for touched fields\r\n const getVisibleErrors = useCallback(() => {\r\n const visibleErrors: ErrorState = {};\r\n Object.keys(errors).forEach(fieldName => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n visibleErrors[fieldName] = errors[fieldName];\r\n }\r\n });\r\n return visibleErrors;\r\n }, [errors, touched]);\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n // Handle different input types\r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n setFormValues(prev => ({ ...prev, [name]: fieldValue }));\r\n\r\n if (enableDebounce) {\r\n debouncedValidate(name, fieldValue);\r\n } else {\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }\r\n }, [enableDebounce, debouncedValidate, validationRules]);\r\n\r\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n // Mark field as touched\r\n setTouched(prev => ({ ...prev, [name]: true }));\r\n\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n const handleSubmit = useCallback((e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n \r\n // Mark ALL fields as touched on submit\r\n const allTouched: Record<string, boolean> = {};\r\n Object.keys(validationRules).forEach(fieldName => {\r\n allTouched[fieldName] = true;\r\n });\r\n setTouched(allTouched);\r\n\r\n if (Object.keys(formErrors).length === 0) {\r\n onSubmit(formValues);\r\n }\r\n }, [formValues, validationRules, onSubmit]);\r\n\r\n const childrenWithProps = React.Children.map(children, child => {\r\n if (React.isValidElement(child)) {\r\n const element = child as React.ReactElement<Record<string, any>>;\r\n\r\n if (element.props.name) {\r\n const fieldName = element.props.name;\r\n const hasError = !!errors[fieldName];\r\n const isTouched = touched[fieldName];\r\n const isSuccess = isTouched && !hasError;\r\n \r\n // Generate className\r\n let className = 'form-validator-field';\r\n if (hasError) className += ' error';\r\n if (isSuccess) className += ' form-validator-success';\r\n if (element.props.className) className += ` ${element.props.className}`;\r\n\r\n // Pass all props to the child\r\n const props: any = {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[fieldName] || '',\r\n className,\r\n style: customStyles[fieldName],\r\n 'data-theme': theme,\r\n 'data-touched': isTouched,\r\n 'data-error': hasError\r\n };\r\n\r\n return React.cloneElement(child, props);\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n const visibleErrors = getVisibleErrors();\r\n const errorElements = Object.keys(visibleErrors).map(fieldName => (\r\n <div \r\n key={fieldName} \r\n className=\"form-validator-error-message\"\r\n data-field={fieldName}\r\n >\r\n {visibleErrors[fieldName]}\r\n </div>\r\n ));\r\n\r\n return (\r\n <form \r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n {errorElements}\r\n {/* Hidden submit button - user should provide their own */}\r\n <button type=\"submit\" style={{ display: 'none' }}>Submit</button>\r\n </form>\r\n );\r\n};","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","import React from 'react';\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = '',\r\n error,\r\n touched\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n let newValues: string[];\r\n \r\n if (checked) {\r\n newValues = [...values, value];\r\n } else {\r\n newValues = values.filter(v => v !== value);\r\n }\r\n \r\n onChange?.(name, newValues);\r\n };\r\n\r\n return (\r\n <div className={`checkbox-group ${className}`}>\r\n {options.map(option => (\r\n <label key={option.value} className=\"checkbox-label\">\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={() => onBlur?.(name)}\r\n className={`checkbox-input ${error && touched ? 'error' : ''}`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n {error && touched && (\r\n <div className=\"error-message\">{error}</div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":["useRef","useCallback","useState","__assign","__rest","__spreadArray"],"mappings":";;;;;IAIa,aAAa,GAAG,UAC3B,KAAU,EACV,KAAsB,EACtB,SAA+B,EAAA;;AAE/B,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,SAAS,CAAC;AAE7B,IAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,IAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,wBAAwB,CAAC;AAErE,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,OAAO,CAAC;SAC5B;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,OAAO,CAAC;SACxC;AAAM,aAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAClF,YAAA,OAAO,OAAO,CAAC;SAChB;KACF;AAED,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;AAAE,QAAA,OAAO,SAAS,CAAC;AAEhD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAE7B,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE;AACrD,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,KAAI,mBAAoB,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,gBAAa,CAAC;SACtF;AAED,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE;AACrD,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,KAAI,uBAAwB,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,gBAAa,CAAC;SAC1F;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/C,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,gBAAgB,CAAC;SACpD;KACF;AAED,IAAA,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;QACxB,IAAM,UAAU,GAAG,4BAA4B,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,oCAAoC,CAAC;SACtE;KACF;AAED,IAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,EAAE;QAC7B,IAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,KAAI,4FAA4F,CAAC;QAE3I,IAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;AAChE,YAAA,OAAO,OAAO,CAAC;SAChB;KACF;AAED,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AAC9B,QAAA,IAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE1B,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,6BAA6B,CAAC;SAChE;AAED,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AAC9C,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,KAAI,mBAAoB,CAAA,MAAA,CAAA,KAAK,CAAC,GAAG,CAAE,CAAC;SAC/D;AAED,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AAC9C,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,KAAI,uBAAwB,CAAA,MAAA,CAAA,KAAK,CAAC,GAAG,CAAE,CAAC;SACnE;KACF;AAED,IAAA,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE;AACtB,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;SAChB;AAAC,QAAA,OAAA,EAAA,EAAM;YACN,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,KAAI,wDAAwD,CAAC;SACxF;KACF;AAED,IAAA,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE;QACtB,IAAM,UAAU,GAAG,yFAAyF,CAAC;QAC7G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,KAAI,mCAAmC,CAAC;SACnE;KACF;AAED,IAAA,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE;AACvB,QAAA,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;YACzB,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,2BAA2B,CAAC;SAC5D;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,IAAI,GAAG,OAAO,EAAE;AAClB,gBAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,qBAAA,CAAA,MAAA,CAAsB,OAAO,CAAC,kBAAkB,EAAE,CAAE,CAAC;aACxF;SACF;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,IAAI,GAAG,OAAO,EAAE;AAClB,gBAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,sBAAA,CAAA,MAAA,CAAuB,OAAO,CAAC,kBAAkB,EAAE,CAAE,CAAC;aACzF;SACF;KACF;IAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,mCAAmC,CAAC;SACxE;AAED,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;AACvE,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,KAAI,yBAA0B,CAAA,MAAA,CAAA,KAAK,CAAC,WAAW,aAAU,CAAC;SAC7F;AAED,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;AACvE,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,KAAI,6BAA8B,CAAA,MAAA,CAAA,KAAK,CAAC,WAAW,aAAU,CAAC;SACjG;KACF;IAED,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;AACtC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE;YAC1B,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,yBAAyB,CAAC;SAC9D;KACF;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,EAAE;YAC5E,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,yBAAyB,CAAC;SAC9D;KACF;AAED,IAAA,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KACvC;AAED,IAAA,OAAO,SAAS,CAAC;AACnB,EAAE;AAEW,IAAA,YAAY,GAAG,UAC1B,MAA2B,EAC3B,KAAqC,EAAA;IAErC,IAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AAClC,QAAA,IAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QACzE,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;SAC3B;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,MAAM,CAAC;AAChB;;AC7JgB,SAAA,WAAW,CACvB,EAAK,EACL,KAAa,EAAA;AAEb,IAAA,IAAM,UAAU,GAAGA,YAAM,CAA4C,SAAS,CAAC,CAAC;IAEhF,OAAOC,iBAAW,EACb,YAAA;QAAC,IAAc,IAAA,GAAA,EAAA,CAAA;aAAd,IAAc,EAAA,GAAA,CAAA,EAAd,EAAc,GAAA,SAAA,CAAA,MAAA,EAAd,EAAc,EAAA,EAAA;YAAd,IAAc,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;AACZ,QAAA,IAAG,UAAU,CAAC,OAAO,EAAE;AACnB,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACpC;AAED,QAAA,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,YAAA;YAC5B,EAAE,CAAA,KAAA,CAAA,KAAA,CAAA,EAAI,IAAI,CAAE,CAAA;SACf,EAAE,KAAK,CAAC,CAAC;KACb,GACD,CAAC,EAAE,EAAE,KAAK,CAAC,CACd,CAAC;AACN;;ACdO,IAAM,aAAa,GAAiC,UAAC,EAQ3D,EAAA;AAPG,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,KAAe,EAAf,KAAK,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,OAAO,GAAA,EAAA,EACf,EAAiB,GAAA,EAAA,CAAA,YAAA,EAAjB,YAAY,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAA,EAAA,EACjB,EAAA,GAAA,EAAA,CAAA,cAAqB,EAArB,cAAc,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,IAAI,GAAA,EAAA,EACrB,EAAmB,GAAA,EAAA,CAAA,aAAA,EAAnB,aAAa,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,GAAG,GAAA,EAAA,CAAA;IAEb,IAAA,EAAA,GAA8BC,cAAQ,CAAY,EAAE,CAAC,EAApD,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAA2B,CAAC;IACtD,IAAA,EAAA,GAAsBA,cAAQ,CAAa,EAAE,CAAC,EAA7C,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAA4B,CAAC;IAC/C,IAAA,EAAA,GAAwBA,cAAQ,CAA0B,EAAE,CAAC,EAA5D,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAyC,CAAC;;IAGpE,IAAM,gBAAgB,GAAGD,iBAAW,CAAC,YAAA;QACjC,IAAM,aAAa,GAAe,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;YACjC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;gBACzC,aAAa,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;aAChD;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,aAAa,CAAC;AACzB,KAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtB,IAAA,IAAM,iBAAiB,GAAG,WAAW,CAAC,UAAC,IAAY,EAAE,KAAU,EAAA;QAC3D,IAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,SAAS,CAAC,UAAA,IAAI,EAAA;;YAAI,QAAAE,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAG,KAAK,IAAI,EAAE,EAAG,EAAA,EAAA,EAAA;AAAlC,SAAkC,CAAC,CAAC;KACzD,EAAE,aAAa,CAAC,CAAC;AAElB,IAAA,IAAM,YAAY,GAAGF,iBAAW,CAAC,UAAC,CAAsC,EAAA;AAC9D,QAAA,IAAA,KAAiC,CAAC,CAAC,MAAM,EAAvC,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,aAAa,CAAC;;QAGhD,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;YACrB,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;SACrC;AAAM,aAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACzB,UAAU,GAAG,KAAK,CAAC;SACtB;QAED,aAAa,CAAC,UAAA,IAAI,EAAA;;AAAI,YAAA,0CAAM,IAAI,CAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAG,IAAI,CAAA,GAAG,UAAU,EAAG,EAAA,EAAA,EAAA;AAAjC,SAAiC,CAAC,CAAC;QAEzD,IAAI,cAAc,EAAE;AAChB,YAAA,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACvC;aAAM;YACH,IAAM,OAAK,GAAG,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,SAAS,CAAC,UAAA,IAAI,EAAA;;gBAAI,QAAAE,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAG,OAAK,IAAI,EAAE,EAAG,EAAA,EAAA,EAAA;AAAlC,aAAkC,CAAC,CAAC;SACzD;KACJ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;AAEzD,IAAA,IAAM,UAAU,GAAGF,iBAAW,CAAC,UAAC,CAAqC,EAAA;AAC3D,QAAA,IAAA,KAAiC,CAAC,CAAC,MAAM,EAAvC,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,aAAa,CAAC;QAEhD,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;YACrB,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;SACrC;AAAM,aAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACzB,UAAU,GAAG,KAAK,CAAC;SACtB;;QAGD,UAAU,CAAC,UAAA,IAAI,EAAA;;AAAI,YAAA,0CAAM,IAAI,CAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAG,IAAI,CAAA,GAAG,IAAI,EAAG,EAAA,EAAA,EAAA;AAA3B,SAA2B,CAAC,CAAC;QAEhD,IAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,SAAS,CAAC,UAAA,IAAI,EAAA;;YAAI,QAAAE,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAG,KAAK,IAAI,EAAE,EAAG,EAAA,EAAA,EAAA;AAAlC,SAAkC,CAAC,CAAC;AAC1D,KAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtB,IAAA,IAAM,YAAY,GAAGF,iBAAW,CAAC,UAAC,CAAkB,EAAA;QAChD,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC7D,SAAS,CAAC,UAAU,CAAC,CAAC;;QAGtB,IAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AAC1C,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AACjC,SAAC,CAAC,CAAC;QACH,UAAU,CAAC,UAAU,CAAC,CAAC;QAEvB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACxB;KACJ,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE5C,IAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAA,KAAK,EAAA;AACxD,QAAA,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAM,OAAO,GAAG,KAAgD,CAAC;AAEjE,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;AACpB,gBAAA,IAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,IAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACrC,gBAAA,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,gBAAA,IAAM,SAAS,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC;;gBAGzC,IAAI,SAAS,GAAG,sBAAsB,CAAC;AACvC,gBAAA,IAAI,QAAQ;oBAAE,SAAS,IAAI,QAAQ,CAAC;AACpC,gBAAA,IAAI,SAAS;oBAAE,SAAS,IAAI,yBAAyB,CAAC;AACtD,gBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS;oBAAE,SAAS,IAAI,WAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;;AAGxE,gBAAA,IAAM,KAAK,GAAQ;AACf,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE;AAClC,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC;AAC9B,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,cAAc,EAAE,SAAS;AACzB,oBAAA,YAAY,EAAE,QAAQ;iBACzB,CAAC;gBAEF,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC3C;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC,CAAC;AAEH,IAAA,IAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AACzC,IAAA,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,EAAI,EAAA,QAC9D,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,8BAA8B,EAAA,YAAA,EAC5B,SAAS,EAEpB,EAAA,aAAa,CAAC,SAAS,CAAC,CACvB,EAPwD,EAQjE,CAAC,CAAC;AAEH,IAAA,QACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,uBAAA,CAAA,MAAA,CAAwB,KAAK,CAAE,EAC1C,KAAK,EAAE,YAAY,CAAC,IAAI,EACxB,UAAU,EAAA,IAAA,EAAA;QAET,iBAAiB;QACjB,aAAa;AAEd,QAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAiB,EAAA,QAAA,CAAA,CAC9D,EACT;AACN;;AC7IO,IAAM,SAAS,GAA6B,UAAC,EAOnD,EAAA;IANG,IAAA,KAAK,WAAA,EACL,MAAM,YAAA,EACN,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAa,GAAA,EAAA,CAAA,SAAA,EAAb,SAAS,GAAE,EAAA,KAAA,KAAA,CAAA,GAAA,EAAE,KAAA,EACb,EAAE,QAAA,EACC,KAAK,GANwCG,YAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAOnD,CADW,CAAA;AAER,IAAA,IAAM,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC;AAEjC,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA;AAC1C,QAAA,KAAK,KACF,KAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,sBAAsB,EACpD,EAAA,KAAK,CACF,CACX;QAED,KAAO,CAAA,aAAA,CAAA,OAAA,EAAAD,cAAA,CAAA,EAAA,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,uBAAA,CAAA,MAAA,CAAwB,MAAM,GAAG,QAAQ,GAAG,EAAE,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAE,EACrH,cAAA,EAAA,CAAC,CAAC,MAAM,EACJ,kBAAA,EAAA,MAAM,GAAG,EAAG,CAAA,MAAA,CAAA,OAAO,EAAS,SAAA,CAAA,GAAG,SAAS,EACtD,EAAA,KAAK,CAAG,CAAA;QAEX,MAAM,KACH,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,EAAG,CAAA,MAAA,CAAA,OAAO,EAAS,SAAA,CAAA,EACvB,SAAS,EAAC,+BAA+B,EACzC,IAAI,EAAC,OAAO,EAAA,EAEX,MAAM,CACL,CACT,CACC,EACR;AACN;;ACxBO,IAAM,aAAa,GAAiC,UAAC,EAS3D,EAAA;AARC,IAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAA,GAAA,EAAA,CAAA,MAAW,EAAX,MAAM,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,EAAE,GAAA,EAAA,EACX,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAc,GAAA,EAAA,CAAA,SAAA,EAAd,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAA,EAAA,EACd,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;IAEP,IAAM,YAAY,GAAG,UAAC,CAAsC,EAAA;QACpD,IAAA,EAAA,GAAqB,CAAC,CAAC,MAAM,EAA3B,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAa,CAAC;AACpC,QAAA,IAAI,SAAmB,CAAC;QAExB,IAAI,OAAO,EAAE;AACX,YAAA,SAAS,GAAOE,mBAAA,CAAAA,mBAAA,CAAA,EAAA,EAAA,MAAM,EAAE,IAAA,CAAA,EAAA,CAAA,KAAK,SAAC,CAAC;SAChC;aAAM;AACL,YAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,KAAK,KAAK,CAAX,EAAW,CAAC,CAAC;SAC7C;QAED,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9B,KAAC,CAAC;AAEF,IAAA,QACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,iBAAA,CAAA,MAAA,CAAkB,SAAS,CAAE,EAAA;AAC1C,QAAA,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,QACrB,KAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAC,gBAAgB,EAAA;YAClD,KACE,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACtC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAM,EAAA,OAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAG,IAAI,CAAC,CAAd,EAAc,EAC5B,SAAS,EAAE,iBAAA,CAAA,MAAA,CAAkB,KAAK,IAAI,OAAO,GAAG,OAAO,GAAG,EAAE,CAAE,EAC9D,CAAA;AACD,YAAA,MAAM,CAAC,KAAK,CACP,EACT,EAAA,CAAC;AACD,QAAA,KAAK,IAAI,OAAO,KACf,6BAAK,SAAS,EAAC,eAAe,EAAA,EAAE,KAAK,CAAO,CAC7C,CACG,EACN;AACJ;;AC7DA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAC;IACtB,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,UAEnB,QAA0D,EAAE,OAAa,EAAA;AAEzE,QAAA,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;AAC7B,YAAA,IAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC;aACf;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC;AACN,CAAC;AAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAC;IACvB,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAEpB,QAA0D,EAAE,OAAa,EAAA;AAEzE,QAAA,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;AAC7B,YAAA,IAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;AAC1C,gBAAA,OAAO,KAAK,CAAC;aAChB;SACJ;AACD,QAAA,OAAO,IAAI,CAAC;AAChB,KAAiC,CAAC;AACtC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAC;AACvB,IAAA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,YAAA;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AAClE,KAAC,CAAC;AACN,CAAC;AAEY,IAAA,QAAQ,GAAG,UACpB,IAAO,EACP,KAAa,EAAA;AAEb,IAAA,IAAI,UAAmB,CAAC;AACxB,IAAA,IAAI,UAAyB,CAAC;IAE9B,OAAO,YAAA;QAAoB,IAAc,IAAA,GAAA,EAAA,CAAA;aAAd,IAAc,EAAA,GAAA,CAAA,EAAd,EAAc,GAAA,SAAA,CAAA,MAAA,EAAd,EAAc,EAAA,EAAA;YAAd,IAAc,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;QACrC,IAAG,CAAC,UAAU,EAAE;YACZ,UAAU,GAAG,IAAI,CAAC;YAClB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,UAAU,CAAC,YAAM,EAAA,OAAA,UAAU,GAAG,KAAK,CAAA,EAAA,EAAE,KAAK,CAAC,CAAC;SAC/C;AACD,QAAA,OAAO,UAAU,CAAC;AACtB,KAAM,CAAC;AACX;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "form-validator-widget",
3
- "version": "1.1.1",
3
+ "version": "2.1.0",
4
4
  "description": "A reusable form validation widget with animations and advanced JavaScript concepts",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  "react-dom": ">=16.8.0"
34
34
  },
35
35
  "dependencies": {
36
- "tslib": "^2.6.0"
36
+ "tslib": "^2.8.1"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@rollup/plugin-commonjs": "^25.0.0",