@ttoss/forms 0.22.7 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,828 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ "use strict";
3
+
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all) __defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
19
+ get: () => from[key],
20
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
21
+ });
22
+ }
23
+ return to;
24
+ };
25
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
26
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
27
+ // If the importer is in node compatibility mode or this is not an ESM
28
+ // file that has been converted to a CommonJS file using a Babel-
29
+ // compatible transform (i.e. "__esModule" has not been set), then set
30
+ // "default" to the CommonJS "module.exports" for node compatibility.
31
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
32
+ value: mod,
33
+ enumerable: true
34
+ }) : target, mod));
35
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
36
+ value: true
37
+ }), mod);
38
+
39
+ // src/Brazil/index.ts
40
+ var Brazil_exports = {};
41
+ __export(Brazil_exports, {
42
+ FormFieldCEP: () => FormFieldCEP,
43
+ FormFieldCNPJ: () => FormFieldCNPJ,
44
+ FormFieldPhone: () => FormFieldPhone,
45
+ isCnpjValid: () => isCnpjValid
46
+ });
47
+ module.exports = __toCommonJS(Brazil_exports);
48
+
49
+ // src/index.ts
50
+ var src_exports = {};
51
+ __export(src_exports, {
52
+ Controller: () => import_react_hook_form6.Controller,
53
+ Form: () => Form,
54
+ FormField: () => FormField,
55
+ FormFieldCheckbox: () => FormFieldCheckbox,
56
+ FormFieldCreditCardNumber: () => FormFieldCreditCardNumber,
57
+ FormFieldCurrencyInput: () => FormFieldCurrencyInput,
58
+ FormFieldInput: () => FormFieldInput,
59
+ FormFieldNumericFormat: () => FormFieldNumericFormat,
60
+ FormFieldPassword: () => FormFieldPassword,
61
+ FormFieldPatternFormat: () => FormFieldPatternFormat,
62
+ FormFieldRadio: () => FormFieldRadio,
63
+ FormFieldSelect: () => FormFieldSelect,
64
+ FormFieldTextarea: () => FormFieldTextarea,
65
+ FormGroup: () => FormGroup,
66
+ FormProvider: () => import_react_hook_form6.FormProvider,
67
+ useController: () => import_react_hook_form6.useController,
68
+ useFieldArray: () => import_react_hook_form6.useFieldArray,
69
+ useForm: () => import_react_hook_form6.useForm,
70
+ useFormContext: () => import_react_hook_form6.useFormContext,
71
+ useFormGroup: () => useFormGroup,
72
+ useFormState: () => import_react_hook_form6.useFormState,
73
+ useWatch: () => import_react_hook_form6.useWatch,
74
+ yup: () => yup2,
75
+ yupResolver: () => import_yup2.yupResolver
76
+ });
77
+ var import_yup2 = require("@hookform/resolvers/yup");
78
+
79
+ // src/yup/i18n.ts
80
+ var import_react_i18n = require("@ttoss/react-i18n");
81
+ var import_yup = require("yup");
82
+ (0, import_yup.setLocale)({
83
+ mixed: {
84
+ required: (0, import_react_i18n.defineMessage)({
85
+ defaultMessage: "Field is required",
86
+ description: "Field is required"
87
+ }),
88
+ notType: ({
89
+ type
90
+ }) => {
91
+ return {
92
+ ...(0, import_react_i18n.defineMessage)({
93
+ defaultMessage: "Invalid Value for Field of type {type}",
94
+ description: "Invalid Value"
95
+ }),
96
+ values: {
97
+ type
98
+ }
99
+ };
100
+ }
101
+ },
102
+ string: {
103
+ min: ({
104
+ min
105
+ }) => {
106
+ return {
107
+ ...(0, import_react_i18n.defineMessage)({
108
+ defaultMessage: "Field must be at least {min} characters",
109
+ description: "Min length field"
110
+ }),
111
+ values: {
112
+ min
113
+ }
114
+ };
115
+ }
116
+ }
117
+ });
118
+
119
+ // src/yup/schema.ts
120
+ var yup = __toESM(require("yup"));
121
+ yup.addMethod(yup.string, "cnpj", function () {
122
+ return this.test("valid-cnpj", "Invalid CNPJ", value => {
123
+ return isCnpjValid(value);
124
+ });
125
+ });
126
+
127
+ // src/yup/yup.ts
128
+ var yup2 = __toESM(require("yup"));
129
+
130
+ // src/Form.tsx
131
+ var import_ui = require("@ttoss/ui");
132
+ var import_react_hook_form = require("react-hook-form");
133
+ var import_jsx_runtime = require("react/jsx-runtime");
134
+ var Form = ({
135
+ children,
136
+ onSubmit,
137
+ sx,
138
+ ...formMethods
139
+ }) => {
140
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_hook_form.FormProvider, {
141
+ ...formMethods,
142
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ui.Box, {
143
+ as: "form",
144
+ variant: "forms.form",
145
+ onSubmit: formMethods.handleSubmit(data => {
146
+ return onSubmit?.(data);
147
+ }),
148
+ sx,
149
+ children
150
+ })
151
+ });
152
+ };
153
+
154
+ // src/FormField.tsx
155
+ var React = __toESM(require("react"));
156
+
157
+ // src/ErrorMessage.tsx
158
+ var import_react_hook_form2 = require("react-hook-form");
159
+ var import_react_i18n2 = require("@ttoss/react-i18n");
160
+ var import_ui2 = require("@ttoss/ui");
161
+ var import_error_message = require("@hookform/error-message");
162
+ var import_jsx_runtime2 = require("react/jsx-runtime");
163
+ var isMessageDescriptor = possibleMessageDescriptor => {
164
+ return possibleMessageDescriptor !== void 0 && possibleMessageDescriptor.defaultMessage !== void 0;
165
+ };
166
+ var ErrorMessage = ({
167
+ name,
168
+ disabled
169
+ }) => {
170
+ const {
171
+ formState: {
172
+ errors
173
+ }
174
+ } = (0, import_react_hook_form2.useFormContext)();
175
+ return /* @__PURE__ */(0, import_jsx_runtime2.jsx)(import_error_message.ErrorMessage, {
176
+ name,
177
+ errors,
178
+ render: ({
179
+ message
180
+ }) => {
181
+ return /* @__PURE__ */(0, import_jsx_runtime2.jsx)(import_ui2.HelpText, {
182
+ negative: true,
183
+ disabled,
184
+ children: (() => {
185
+ if (typeof message === "string") {
186
+ return message;
187
+ }
188
+ if (isMessageDescriptor(message)) {
189
+ return /* @__PURE__ */(0, import_jsx_runtime2.jsx)(import_react_i18n2.FormattedMessage, {
190
+ ...message
191
+ });
192
+ }
193
+ return JSON.stringify(message);
194
+ })()
195
+ });
196
+ }
197
+ });
198
+ };
199
+
200
+ // src/FormField.tsx
201
+ var import_react_hook_form3 = require("react-hook-form");
202
+ var import_ui3 = require("@ttoss/ui");
203
+ var import_jsx_runtime3 = require("react/jsx-runtime");
204
+ var FormField = ({
205
+ label,
206
+ id: idProp,
207
+ name,
208
+ defaultValue,
209
+ disabled,
210
+ tooltip,
211
+ onTooltipClick,
212
+ sx,
213
+ css,
214
+ render
215
+ }) => {
216
+ const controllerReturn = (0, import_react_hook_form3.useController)({
217
+ name,
218
+ defaultValue
219
+ });
220
+ const id = idProp || `form-field-${name}`;
221
+ const memoizedRender = React.useMemo(() => {
222
+ return React.Children.map(render(controllerReturn), child => {
223
+ return /* @__PURE__ */(0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, {
224
+ children: [label && /* @__PURE__ */(0, import_jsx_runtime3.jsx)(import_ui3.Label, {
225
+ "aria-disabled": disabled,
226
+ htmlFor: id,
227
+ tooltip,
228
+ onTooltipClick,
229
+ children: label
230
+ }), React.createElement(child.type, {
231
+ id,
232
+ ...child.props
233
+ })]
234
+ });
235
+ });
236
+ }, [controllerReturn, disabled, onTooltipClick, tooltip, id, label, render]);
237
+ return /* @__PURE__ */(0, import_jsx_runtime3.jsxs)(import_ui3.Flex, {
238
+ sx: {
239
+ flexDirection: "column",
240
+ width: "100%",
241
+ gap: "md",
242
+ ...sx
243
+ },
244
+ css,
245
+ children: [memoizedRender, /* @__PURE__ */(0, import_jsx_runtime3.jsx)(ErrorMessage, {
246
+ name
247
+ })]
248
+ });
249
+ };
250
+
251
+ // src/FormFieldCheckbox.tsx
252
+ var import_ui4 = require("@ttoss/ui");
253
+ var import_react_hook_form4 = require("react-hook-form");
254
+ var import_jsx_runtime4 = require("react/jsx-runtime");
255
+ var FormFieldCheckbox = ({
256
+ label,
257
+ name,
258
+ sx,
259
+ ...checkboxProps
260
+ }) => {
261
+ const {
262
+ field: {
263
+ onChange,
264
+ onBlur,
265
+ value,
266
+ ref
267
+ },
268
+ formState: {
269
+ errors
270
+ }
271
+ } = (0, import_react_hook_form4.useController)({
272
+ name,
273
+ defaultValue: false
274
+ });
275
+ const id = `form-field-checkbox-${name}`;
276
+ const error = !!errors[name]?.message;
277
+ return /* @__PURE__ */(0, import_jsx_runtime4.jsxs)(import_ui4.Flex, {
278
+ sx: {
279
+ flexDirection: "column",
280
+ width: "100%",
281
+ ...sx
282
+ },
283
+ children: [/* @__PURE__ */(0, import_jsx_runtime4.jsx)(import_ui4.Flex, {
284
+ sx: {
285
+ alignItems: "center"
286
+ },
287
+ children: /* @__PURE__ */(0, import_jsx_runtime4.jsxs)(import_ui4.Label, {
288
+ "aria-disabled": checkboxProps.disabled,
289
+ htmlFor: id,
290
+ children: [/* @__PURE__ */(0, import_jsx_runtime4.jsx)(import_ui4.Checkbox, {
291
+ id,
292
+ ref,
293
+ checked: value,
294
+ onChange,
295
+ onBlur,
296
+ name,
297
+ "aria-invalid": error ? "true" : "false",
298
+ ...checkboxProps
299
+ }), label]
300
+ })
301
+ }), /* @__PURE__ */(0, import_jsx_runtime4.jsx)(ErrorMessage, {
302
+ name
303
+ })]
304
+ });
305
+ };
306
+
307
+ // src/FormFieldPatternFormat.tsx
308
+ var import_ui5 = require("@ttoss/ui");
309
+ var import_react_number_format = require("react-number-format");
310
+ var import_jsx_runtime5 = require("react/jsx-runtime");
311
+ var FormFieldPatternFormat = ({
312
+ label,
313
+ name,
314
+ ...patternFormatProps
315
+ }) => {
316
+ return /* @__PURE__ */(0, import_jsx_runtime5.jsx)(FormField, {
317
+ name,
318
+ label,
319
+ render: ({
320
+ field,
321
+ fieldState
322
+ }) => {
323
+ return /* @__PURE__ */(0, import_jsx_runtime5.jsx)(import_react_number_format.PatternFormat, {
324
+ name: field.name,
325
+ value: field.value,
326
+ onBlur: field.onBlur,
327
+ onValueChange: values => {
328
+ field.onChange(values.value);
329
+ },
330
+ customInput: import_ui5.Input,
331
+ "aria-invalid": Boolean(fieldState.error).valueOf(),
332
+ ...patternFormatProps
333
+ });
334
+ }
335
+ });
336
+ };
337
+
338
+ // src/FormFieldCreditCardNumber.tsx
339
+ var import_jsx_runtime6 = require("react/jsx-runtime");
340
+ var FormFieldCreditCardNumber = ({
341
+ label,
342
+ name,
343
+ ...formFieldPatternFormatProps
344
+ }) => {
345
+ return /* @__PURE__ */(0, import_jsx_runtime6.jsx)(FormFieldPatternFormat, {
346
+ name,
347
+ label,
348
+ format: "#### #### #### ####",
349
+ placeholder: "1234 1234 1234 1234",
350
+ ...formFieldPatternFormatProps
351
+ });
352
+ };
353
+
354
+ // src/FormFieldNumericFormat.tsx
355
+ var import_ui6 = require("@ttoss/ui");
356
+ var import_react_number_format2 = require("react-number-format");
357
+ var import_jsx_runtime7 = require("react/jsx-runtime");
358
+ var FormFieldNumericFormat = ({
359
+ label,
360
+ name,
361
+ ...numericFormatProps
362
+ }) => {
363
+ return /* @__PURE__ */(0, import_jsx_runtime7.jsx)(FormField, {
364
+ label,
365
+ name,
366
+ render: ({
367
+ field
368
+ }) => {
369
+ return /* @__PURE__ */(0, import_jsx_runtime7.jsx)(import_react_number_format2.NumericFormat, {
370
+ name: field.name,
371
+ value: field.value,
372
+ onBlur: field.onBlur,
373
+ onValueChange: values => {
374
+ field.onChange(values.floatValue);
375
+ },
376
+ customInput: import_ui6.Input,
377
+ ...numericFormatProps
378
+ });
379
+ }
380
+ });
381
+ };
382
+
383
+ // src/FormFieldCurrencyInput.tsx
384
+ var import_jsx_runtime8 = require("react/jsx-runtime");
385
+ var FormFieldCurrencyInput = ({
386
+ label,
387
+ name,
388
+ prefix,
389
+ decimalSeparator,
390
+ thousandSeparator,
391
+ ...formFieldNumericFormatProps
392
+ }) => {
393
+ return /* @__PURE__ */(0, import_jsx_runtime8.jsx)(FormFieldNumericFormat, {
394
+ name,
395
+ label,
396
+ fixedDecimalScale: true,
397
+ decimalScale: 2,
398
+ prefix,
399
+ decimalSeparator,
400
+ thousandSeparator,
401
+ placeholder: `${prefix} 0${decimalSeparator}00`,
402
+ allowNegative: false,
403
+ ...formFieldNumericFormatProps
404
+ });
405
+ };
406
+
407
+ // src/FormFieldInput.tsx
408
+ var import_ui7 = require("@ttoss/ui");
409
+ var import_jsx_runtime9 = require("react/jsx-runtime");
410
+ var FormFieldInput = ({
411
+ label,
412
+ name,
413
+ tooltip,
414
+ onTooltipClick,
415
+ sx,
416
+ defaultValue = "",
417
+ ...inputProps
418
+ }) => {
419
+ return /* @__PURE__ */(0, import_jsx_runtime9.jsx)(FormField, {
420
+ name,
421
+ label,
422
+ disabled: inputProps.disabled,
423
+ tooltip,
424
+ onTooltipClick,
425
+ sx,
426
+ defaultValue,
427
+ render: ({
428
+ field,
429
+ fieldState
430
+ }) => {
431
+ return /* @__PURE__ */(0, import_jsx_runtime9.jsx)(import_ui7.Input, {
432
+ ...inputProps,
433
+ ...field,
434
+ "aria-invalid": fieldState.error ? "true" : void 0
435
+ });
436
+ }
437
+ });
438
+ };
439
+
440
+ // src/FormFieldPassword.tsx
441
+ var import_ui8 = require("@ttoss/ui");
442
+ var import_jsx_runtime10 = require("react/jsx-runtime");
443
+ var FormFieldPassword = ({
444
+ label,
445
+ name,
446
+ tooltip,
447
+ onTooltipClick,
448
+ sx,
449
+ defaultValue = "",
450
+ ...inputProps
451
+ }) => {
452
+ return /* @__PURE__ */(0, import_jsx_runtime10.jsx)(FormField, {
453
+ name,
454
+ label,
455
+ disabled: inputProps.disabled,
456
+ tooltip,
457
+ onTooltipClick,
458
+ sx,
459
+ defaultValue,
460
+ render: ({
461
+ field,
462
+ fieldState
463
+ }) => {
464
+ return /* @__PURE__ */(0, import_jsx_runtime10.jsx)(import_ui8.InputPassword, {
465
+ ...inputProps,
466
+ ...field,
467
+ "aria-invalid": fieldState.error ? "true" : void 0
468
+ });
469
+ }
470
+ });
471
+ };
472
+
473
+ // src/FormFieldRadio.tsx
474
+ var import_ui9 = require("@ttoss/ui");
475
+ var import_react_hook_form5 = require("react-hook-form");
476
+ var import_jsx_runtime11 = require("react/jsx-runtime");
477
+ var FormFieldRadio = ({
478
+ label,
479
+ name,
480
+ options,
481
+ sx,
482
+ ...radioProps
483
+ }) => {
484
+ const {
485
+ field: {
486
+ onChange,
487
+ onBlur,
488
+ value,
489
+ ref
490
+ }
491
+ } = (0, import_react_hook_form5.useController)({
492
+ name,
493
+ defaultValue: ""
494
+ });
495
+ return /* @__PURE__ */(0, import_jsx_runtime11.jsxs)(import_ui9.Flex, {
496
+ sx: {
497
+ flexDirection: "column",
498
+ width: "100%",
499
+ ...sx
500
+ },
501
+ children: [label && /* @__PURE__ */(0, import_jsx_runtime11.jsx)(import_ui9.Label, {
502
+ sx: {
503
+ marginBottom: "md"
504
+ },
505
+ children: label
506
+ }), /* @__PURE__ */(0, import_jsx_runtime11.jsx)(import_ui9.Box, {
507
+ children: options.map(option => {
508
+ const id = `form-field-radio-${name}-${option.value}`;
509
+ return /* @__PURE__ */(0, import_jsx_runtime11.jsxs)(import_ui9.Label, {
510
+ htmlFor: id,
511
+ children: [/* @__PURE__ */(0, import_jsx_runtime11.jsx)(import_ui9.Radio, {
512
+ ref,
513
+ onChange,
514
+ onBlur,
515
+ value: option.value,
516
+ checked: value === option.value,
517
+ name,
518
+ id,
519
+ ...radioProps
520
+ }), option.label]
521
+ }, id);
522
+ })
523
+ }), /* @__PURE__ */(0, import_jsx_runtime11.jsx)(ErrorMessage, {
524
+ name
525
+ })]
526
+ });
527
+ };
528
+
529
+ // src/FormFieldSelect.tsx
530
+ var import_ui10 = require("@ttoss/ui");
531
+ var import_jsx_runtime12 = require("react/jsx-runtime");
532
+ var FormFieldSelect = ({
533
+ label,
534
+ name,
535
+ id,
536
+ defaultValue,
537
+ sx,
538
+ css,
539
+ disabled,
540
+ tooltip,
541
+ onTooltipClick,
542
+ ...selectProps
543
+ }) => {
544
+ return /* @__PURE__ */(0, import_jsx_runtime12.jsx)(FormField, {
545
+ name,
546
+ label,
547
+ id,
548
+ defaultValue,
549
+ disabled,
550
+ tooltip,
551
+ onTooltipClick,
552
+ sx,
553
+ css,
554
+ render: ({
555
+ field,
556
+ fieldState
557
+ }) => {
558
+ return /* @__PURE__ */(0, import_jsx_runtime12.jsx)(import_ui10.Select, {
559
+ ...selectProps,
560
+ ...field,
561
+ isDisabled: disabled,
562
+ "aria-invalid": fieldState.error ? "true" : void 0
563
+ });
564
+ }
565
+ });
566
+ };
567
+
568
+ // src/FormFieldTextarea.tsx
569
+ var import_ui11 = require("@ttoss/ui");
570
+ var import_jsx_runtime13 = require("react/jsx-runtime");
571
+ var FormFieldTextarea = ({
572
+ label,
573
+ name,
574
+ sx,
575
+ ...textareaProps
576
+ }) => {
577
+ const id = `form-field-textarea-${name}`;
578
+ return /* @__PURE__ */(0, import_jsx_runtime13.jsx)(FormField, {
579
+ label,
580
+ name,
581
+ id,
582
+ sx,
583
+ render: ({
584
+ field,
585
+ fieldState
586
+ }) => {
587
+ return /* @__PURE__ */(0, import_jsx_runtime13.jsx)(import_ui11.Textarea, {
588
+ ...field,
589
+ ...textareaProps,
590
+ "aria-invalid": fieldState.error ? "true" : void 0
591
+ });
592
+ }
593
+ });
594
+ };
595
+
596
+ // src/FormGroup.tsx
597
+ var React2 = __toESM(require("react"));
598
+ var import_ui12 = require("@ttoss/ui");
599
+ var import_jsx_runtime14 = require("react/jsx-runtime");
600
+ var FormGroupLevelsManagerContext = React2.createContext({
601
+ levelsLength: 1,
602
+ registerChild: () => {
603
+ return null;
604
+ }
605
+ });
606
+ var FormGroupLevelsManager = ({
607
+ children
608
+ }) => {
609
+ const [levelsLength, setLevelsLength] = React2.useState(0);
610
+ const registerChild = React2.useCallback(level => {
611
+ if (level + 1 > levelsLength) {
612
+ setLevelsLength(level + 1);
613
+ }
614
+ }, [levelsLength]);
615
+ return /* @__PURE__ */(0, import_jsx_runtime14.jsx)(FormGroupLevelsManagerContext.Provider, {
616
+ value: {
617
+ levelsLength,
618
+ registerChild
619
+ },
620
+ children
621
+ });
622
+ };
623
+ var FormGroupContext = React2.createContext({});
624
+ var useFormGroup = () => {
625
+ const {
626
+ parentLevel
627
+ } = React2.useContext(FormGroupContext);
628
+ const {
629
+ levelsLength
630
+ } = React2.useContext(FormGroupLevelsManagerContext);
631
+ return {
632
+ level: parentLevel,
633
+ levelsLength
634
+ };
635
+ };
636
+ var FormGroupWrapper = ({
637
+ title,
638
+ direction,
639
+ children,
640
+ ...boxProps
641
+ }) => {
642
+ const {
643
+ level
644
+ } = useFormGroup();
645
+ const {
646
+ registerChild
647
+ } = React2.useContext(FormGroupLevelsManagerContext);
648
+ React2.useEffect(() => {
649
+ if (typeof level === "number") {
650
+ registerChild(level);
651
+ }
652
+ }, [level, registerChild]);
653
+ const childrenContainerSx = {
654
+ flexDirection: direction || "column",
655
+ gap: "md",
656
+ width: "100%"
657
+ };
658
+ return /* @__PURE__ */(0, import_jsx_runtime14.jsxs)(import_ui12.Box, {
659
+ "aria-level": level,
660
+ ...boxProps,
661
+ sx: {
662
+ marginTop: level === 0 ? "none" : "lg",
663
+ marginBottom: "lg",
664
+ ...boxProps.sx
665
+ },
666
+ children: [title && /* @__PURE__ */(0, import_jsx_runtime14.jsx)(import_ui12.Box, {
667
+ sx: {
668
+ marginBottom: "md"
669
+ },
670
+ children: /* @__PURE__ */(0, import_jsx_runtime14.jsx)(import_ui12.Text, {
671
+ sx: {
672
+ fontSize: "2xl",
673
+ fontWeight: "bold"
674
+ },
675
+ children: title
676
+ })
677
+ }), /* @__PURE__ */(0, import_jsx_runtime14.jsx)(import_ui12.Flex, {
678
+ sx: childrenContainerSx,
679
+ children
680
+ })]
681
+ });
682
+ };
683
+ var FormGroup = props => {
684
+ const {
685
+ level
686
+ } = useFormGroup();
687
+ const currentLevel = level === void 0 ? 0 : level + 1;
688
+ return /* @__PURE__ */(0, import_jsx_runtime14.jsx)(FormGroupContext.Provider, {
689
+ value: {
690
+ parentLevel: currentLevel
691
+ },
692
+ children: currentLevel === 0 ? /* @__PURE__ */(0, import_jsx_runtime14.jsx)(FormGroupLevelsManager, {
693
+ children: /* @__PURE__ */(0, import_jsx_runtime14.jsx)(FormGroupWrapper, {
694
+ ...props
695
+ })
696
+ }) : /* @__PURE__ */(0, import_jsx_runtime14.jsx)(FormGroupWrapper, {
697
+ ...props
698
+ })
699
+ });
700
+ };
701
+
702
+ // src/index.ts
703
+ var import_react_hook_form6 = require("react-hook-form");
704
+ __reExport(src_exports, require("react-hook-form"));
705
+
706
+ // src/Brazil/FormFieldCNPJ.tsx
707
+ var import_ui13 = require("@ttoss/ui");
708
+ var import_react_number_format3 = require("react-number-format");
709
+ var import_jsx_runtime15 = require("react/jsx-runtime");
710
+ var isCnpjValid = cnpj => {
711
+ if (cnpj?.length != 14) {
712
+ return false;
713
+ }
714
+ if (cnpj == "00000000000000" || cnpj == "11111111111111" || cnpj == "22222222222222" || cnpj == "33333333333333" || cnpj == "44444444444444" || cnpj == "55555555555555" || cnpj == "66666666666666" || cnpj == "77777777777777" || cnpj == "88888888888888" || cnpj == "99999999999999") {
715
+ return false;
716
+ }
717
+ let size = cnpj.length - 2;
718
+ let numbers = cnpj.substring(0, size);
719
+ const digits = cnpj.substring(size);
720
+ let soma = 0;
721
+ let pos = size - 7;
722
+ for (let i = size; i >= 1; i--) {
723
+ soma += numbers.charAt(size - i) * pos--;
724
+ if (pos < 2) {
725
+ pos = 9;
726
+ }
727
+ }
728
+ let result = soma % 11 < 2 ? 0 : 11 - soma % 11;
729
+ if (result != digits.charAt(0)) {
730
+ return false;
731
+ }
732
+ size = size + 1;
733
+ numbers = cnpj.substring(0, size);
734
+ soma = 0;
735
+ pos = size - 7;
736
+ for (let i = size; i >= 1; i--) {
737
+ soma += numbers.charAt(size - i) * pos--;
738
+ if (pos < 2) {
739
+ pos = 9;
740
+ }
741
+ }
742
+ result = soma % 11 < 2 ? 0 : 11 - soma % 11;
743
+ if (result != digits.charAt(1)) {
744
+ return false;
745
+ }
746
+ return true;
747
+ };
748
+ var FormFieldCNPJ = ({
749
+ label,
750
+ name,
751
+ ...patternFormatProps
752
+ }) => {
753
+ return /* @__PURE__ */(0, import_jsx_runtime15.jsx)(FormField, {
754
+ name,
755
+ label,
756
+ render: ({
757
+ field
758
+ }) => {
759
+ return /* @__PURE__ */(0, import_jsx_runtime15.jsx)(import_react_number_format3.PatternFormat, {
760
+ name: field.name,
761
+ value: field.value,
762
+ onBlur: field.onBlur,
763
+ onValueChange: values => {
764
+ field.onChange(values.value);
765
+ },
766
+ format: "##.###.###/####-##",
767
+ customInput: import_ui13.Input,
768
+ placeholder: "12.345.678/0000-00",
769
+ ...patternFormatProps
770
+ });
771
+ }
772
+ });
773
+ };
774
+
775
+ // src/Brazil/FormFieldPhone.tsx
776
+ var import_ui14 = require("@ttoss/ui");
777
+ var import_react_number_format4 = require("react-number-format");
778
+ var import_jsx_runtime16 = require("react/jsx-runtime");
779
+ var FormFieldPhone = ({
780
+ label,
781
+ name,
782
+ ...patternFormatProps
783
+ }) => {
784
+ return /* @__PURE__ */(0, import_jsx_runtime16.jsx)(FormField, {
785
+ name,
786
+ label,
787
+ render: ({
788
+ field
789
+ }) => {
790
+ const format = field.value?.length > 10 ? "(##) #####-####" : "(##) ####-#####";
791
+ return /* @__PURE__ */(0, import_jsx_runtime16.jsx)(import_react_number_format4.PatternFormat, {
792
+ name: field.name,
793
+ value: field.value,
794
+ onBlur: field.onBlur,
795
+ onValueChange: values => {
796
+ field.onChange(values.value);
797
+ },
798
+ format,
799
+ customInput: import_ui14.Input,
800
+ placeholder: "(11) 91234-1234",
801
+ ...patternFormatProps
802
+ });
803
+ }
804
+ });
805
+ };
806
+
807
+ // src/Brazil/FormFieldCEP.tsx
808
+ var import_jsx_runtime17 = require("react/jsx-runtime");
809
+ var FormFieldCEP = ({
810
+ label,
811
+ name,
812
+ ...formFieldPatternFormatProps
813
+ }) => {
814
+ return /* @__PURE__ */(0, import_jsx_runtime17.jsx)(FormFieldPatternFormat, {
815
+ name,
816
+ label,
817
+ format: "#####-###",
818
+ placeholder: "12345-678",
819
+ ...formFieldPatternFormatProps
820
+ });
821
+ };
822
+ // Annotate the CommonJS export names for ESM import in node:
823
+ 0 && (module.exports = {
824
+ FormFieldCEP,
825
+ FormFieldCNPJ,
826
+ FormFieldPhone,
827
+ isCnpjValid
828
+ });