@fuf-stack/uniform 1.17.0 → 1.17.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.
- package/dist/Checkboxes/index.cjs +1 -1
- package/dist/Checkboxes/index.d.cts +1 -1
- package/dist/Checkboxes/index.d.ts +1 -1
- package/dist/Checkboxes/index.js +1 -1
- package/dist/{Checkboxes-3Rg0gyfO.cjs → Checkboxes-C_9dL-jU.cjs} +2 -2
- package/dist/{Checkboxes-3Rg0gyfO.cjs.map → Checkboxes-C_9dL-jU.cjs.map} +1 -1
- package/dist/{Checkboxes-BfUtbKe-.js → Checkboxes-OSGkqKi3.js} +3 -3
- package/dist/{Checkboxes-BfUtbKe-.js.map → Checkboxes-OSGkqKi3.js.map} +1 -1
- package/dist/FieldArray/index.cjs +1 -1
- package/dist/FieldArray/index.d.cts +1 -1
- package/dist/FieldArray/index.d.ts +1 -1
- package/dist/FieldArray/index.js +1 -1
- package/dist/{FieldArray-BgvSTDWi.cjs → FieldArray-BEoSGlMB.cjs} +3 -3
- package/dist/{FieldArray-BgvSTDWi.cjs.map → FieldArray-BEoSGlMB.cjs.map} +1 -1
- package/dist/{FieldArray-C8Ipn-tM.js → FieldArray-BKwkAfut.js} +6 -6
- package/dist/{FieldArray-C8Ipn-tM.js.map → FieldArray-BKwkAfut.js.map} +1 -1
- package/dist/FieldCard/index.cjs +1 -1
- package/dist/FieldCard/index.d.cts +1 -1
- package/dist/FieldCard/index.d.ts +1 -1
- package/dist/FieldCard/index.js +1 -1
- package/dist/{FieldCard-7XiCb6jZ.js → FieldCard-BcqvCtMy.js} +6 -5
- package/dist/FieldCard-BcqvCtMy.js.map +1 -0
- package/dist/{FieldCard-38ZBBWyE.cjs → FieldCard-Dtfs_Fjj.cjs} +4 -3
- package/dist/FieldCard-Dtfs_Fjj.cjs.map +1 -0
- package/dist/{FieldCopyTestIdButton-D9f1B-VS.js → FieldCopyTestIdButton-BoEdlzLs.js} +1 -1
- package/dist/{FieldCopyTestIdButton-D9f1B-VS.js.map → FieldCopyTestIdButton-BoEdlzLs.js.map} +1 -1
- package/dist/{FieldValidationError-BYwitb_B.js → FieldValidationError-XQaViV52.js} +1 -1
- package/dist/{FieldValidationError-BYwitb_B.js.map → FieldValidationError-XQaViV52.js.map} +1 -1
- package/dist/Form/index.d.cts +1 -1
- package/dist/Form/index.d.ts +2 -2
- package/dist/Form/index.js +1 -1
- package/dist/{Form-B7bv9fDO.js → Form-BbbWZlQr.js} +3 -3
- package/dist/{Form-B7bv9fDO.js.map → Form-BbbWZlQr.js.map} +1 -1
- package/dist/{FormContext-DHYlCZ2u.js → FormContext-B_3BaWao.js} +2 -2
- package/dist/{FormContext-DHYlCZ2u.js.map → FormContext-B_3BaWao.js.map} +1 -1
- package/dist/{FormContext-C2_WMi_v.d.ts → FormContext-CCe8drkp.d.ts} +1 -1
- package/dist/FormContext-CCe8drkp.d.ts.map +1 -0
- package/dist/{FormContext-Dl7KL_wl.d.cts → FormContext-RSA21aDt.d.cts} +1 -1
- package/dist/FormContext-RSA21aDt.d.cts.map +1 -0
- package/dist/Grid/index.d.cts +1 -1
- package/dist/Grid/index.d.ts +1 -1
- package/dist/Grid/index.js +1 -1
- package/dist/{Grid-LRjQlZms.js → Grid-CeaybCIF.js} +1 -1
- package/dist/{Grid-LRjQlZms.js.map → Grid-CeaybCIF.js.map} +1 -1
- package/dist/Input/index.cjs +1 -1
- package/dist/Input/index.d.cts +1 -1
- package/dist/Input/index.d.ts +1 -1
- package/dist/Input/index.js +1 -1
- package/dist/{Input-ChXItabV.js → Input-DC52CW1u.js} +3 -3
- package/dist/{Input-ChXItabV.js.map → Input-DC52CW1u.js.map} +1 -1
- package/dist/{Input-DlyrGFYf.cjs → Input-yRPZxEhX.cjs} +2 -2
- package/dist/{Input-DlyrGFYf.cjs.map → Input-yRPZxEhX.cjs.map} +1 -1
- package/dist/RadioBoxes/index.cjs +1 -1
- package/dist/RadioBoxes/index.d.cts +1 -1
- package/dist/RadioBoxes/index.d.ts +1 -1
- package/dist/RadioBoxes/index.js +1 -1
- package/dist/{RadioBoxes-D6ULFGfd.js → RadioBoxes-CLjpYP_X.js} +3 -3
- package/dist/{RadioBoxes-D6ULFGfd.js.map → RadioBoxes-CLjpYP_X.js.map} +1 -1
- package/dist/{RadioBoxes-ClDOhQkO.cjs → RadioBoxes-ccNSOcIQ.cjs} +2 -2
- package/dist/{RadioBoxes-ClDOhQkO.cjs.map → RadioBoxes-ccNSOcIQ.cjs.map} +1 -1
- package/dist/RadioTabs/index.cjs +1 -1
- package/dist/RadioTabs/index.d.cts +1 -1
- package/dist/RadioTabs/index.d.ts +1 -1
- package/dist/RadioTabs/index.js +1 -1
- package/dist/{RadioTabs-CgB0MmbK.cjs → RadioTabs-Dmumff0s.cjs} +2 -2
- package/dist/{RadioTabs-CgB0MmbK.cjs.map → RadioTabs-Dmumff0s.cjs.map} +1 -1
- package/dist/{RadioTabs-eSB6OXD7.js → RadioTabs-lzEZtxZG.js} +3 -3
- package/dist/{RadioTabs-eSB6OXD7.js.map → RadioTabs-lzEZtxZG.js.map} +1 -1
- package/dist/Radios/index.cjs +1 -1
- package/dist/Radios/index.d.cts +1 -1
- package/dist/Radios/index.d.ts +1 -1
- package/dist/Radios/index.js +1 -1
- package/dist/{Radios-DWsCLUVl.cjs → Radios-BmkiGbwa.cjs} +2 -2
- package/dist/{Radios-DWsCLUVl.cjs.map → Radios-BmkiGbwa.cjs.map} +1 -1
- package/dist/{Radios-BXuyREKO.js → Radios-DTy3T0CS.js} +3 -3
- package/dist/{Radios-BXuyREKO.js.map → Radios-DTy3T0CS.js.map} +1 -1
- package/dist/Select/index.cjs +1 -1
- package/dist/Select/index.d.cts +1 -1
- package/dist/Select/index.d.ts +1 -1
- package/dist/Select/index.js +1 -1
- package/dist/{Select-Dk_K_Q0F.js → Select-CAyABB8R.js} +4 -4
- package/dist/{Select-Dk_K_Q0F.js.map → Select-CAyABB8R.js.map} +1 -1
- package/dist/{Select-CTbXrAjL.cjs → Select-DC84wZMS.cjs} +2 -2
- package/dist/{Select-CTbXrAjL.cjs.map → Select-DC84wZMS.cjs.map} +1 -1
- package/dist/Slider/index.cjs +1 -1
- package/dist/Slider/index.d.cts +1 -1
- package/dist/Slider/index.d.ts +1 -1
- package/dist/Slider/index.js +1 -1
- package/dist/{Slider-ChGkOSJJ.cjs → Slider-C_xuM49X.cjs} +2 -2
- package/dist/{Slider-ChGkOSJJ.cjs.map → Slider-C_xuM49X.cjs.map} +1 -1
- package/dist/{Slider-DdF0ZBzn.js → Slider-D1kO4BkJ.js} +2 -2
- package/dist/{Slider-DdF0ZBzn.js.map → Slider-D1kO4BkJ.js.map} +1 -1
- package/dist/SubmitButton/index.d.cts +1 -1
- package/dist/SubmitButton/index.d.ts +1 -1
- package/dist/SubmitButton/index.js +1 -1
- package/dist/{SubmitButton-BrbHJcb4.js → SubmitButton-DfCRZzAS.js} +2 -2
- package/dist/{SubmitButton-BrbHJcb4.js.map → SubmitButton-DfCRZzAS.js.map} +1 -1
- package/dist/Switch/index.cjs +1 -1
- package/dist/Switch/index.d.cts +1 -1
- package/dist/Switch/index.d.ts +1 -1
- package/dist/Switch/index.js +1 -1
- package/dist/{Switch-DW9SOeIv.js → Switch-BOhTVztK.js} +2 -2
- package/dist/{Switch-DW9SOeIv.js.map → Switch-BOhTVztK.js.map} +1 -1
- package/dist/{Switch-Lt61rKxf.cjs → Switch-CzvHbEpO.cjs} +2 -2
- package/dist/{Switch-Lt61rKxf.cjs.map → Switch-CzvHbEpO.cjs.map} +1 -1
- package/dist/SwitchBox/index.cjs +1 -1
- package/dist/SwitchBox/index.d.cts +1 -1
- package/dist/SwitchBox/index.d.ts +1 -1
- package/dist/SwitchBox/index.js +1 -1
- package/dist/{SwitchBox-D-EI9Sl-.cjs → SwitchBox-A_sUyrOh.cjs} +2 -2
- package/dist/{SwitchBox-D-EI9Sl-.cjs.map → SwitchBox-A_sUyrOh.cjs.map} +1 -1
- package/dist/{SwitchBox-9KAu4WWd.js → SwitchBox-CwUlFw3i.js} +2 -2
- package/dist/{SwitchBox-9KAu4WWd.js.map → SwitchBox-CwUlFw3i.js.map} +1 -1
- package/dist/TextArea/index.cjs +1 -1
- package/dist/TextArea/index.d.cts +1 -1
- package/dist/TextArea/index.d.ts +1 -1
- package/dist/TextArea/index.js +1 -1
- package/dist/{TextArea-DRSFdn5v.cjs → TextArea-ByiaX6_0.cjs} +2 -2
- package/dist/{TextArea-DRSFdn5v.cjs.map → TextArea-ByiaX6_0.cjs.map} +1 -1
- package/dist/{TextArea-B0zYpNy-.js → TextArea-GpElAFYY.js} +3 -3
- package/dist/{TextArea-B0zYpNy-.js.map → TextArea-GpElAFYY.js.map} +1 -1
- package/dist/helpers/index.d.cts.map +1 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +1 -1
- package/dist/{helpers-D3A5d3M1.js → helpers-B6Iozj-0.js} +1 -1
- package/dist/{helpers-D3A5d3M1.js.map → helpers-B6Iozj-0.js.map} +1 -1
- package/dist/hooks/useClientValidation/index.d.cts +1 -1
- package/dist/hooks/useClientValidation/index.d.ts +1 -1
- package/dist/hooks/useClientValidation/index.js +1 -1
- package/dist/hooks/useController/index.d.cts +1 -1
- package/dist/hooks/useController/index.d.ts +2 -2
- package/dist/hooks/useController/index.js +1 -1
- package/dist/hooks/useFormContext/index.d.cts +1 -1
- package/dist/hooks/useFormContext/index.d.ts +3 -3
- package/dist/hooks/useFormContext/index.js +1 -1
- package/dist/hooks/useInput/index.d.cts +1 -1
- package/dist/hooks/useInput/index.d.ts +1 -1
- package/dist/hooks/useInput/index.js +1 -1
- package/dist/hooks/useInputValueDebounce/index.d.cts +1 -1
- package/dist/hooks/useInputValueDebounce/index.d.ts +1 -1
- package/dist/hooks/useInputValueDebounce/index.js +1 -1
- package/dist/hooks/useInputValueTransform/index.d.cts +1 -1
- package/dist/hooks/useInputValueTransform/index.d.ts +1 -1
- package/dist/hooks/useInputValueTransform/index.js +1 -1
- package/dist/hooks/useUniformField/index.cjs +1 -1
- package/dist/hooks/useUniformField/index.d.cts +1 -1
- package/dist/hooks/useUniformField/index.d.ts +5 -5
- package/dist/hooks/useUniformField/index.js +1 -1
- package/dist/hooks/useUniformFieldArray/index.cjs +1 -1
- package/dist/hooks/useUniformFieldArray/index.d.cts +1 -1
- package/dist/hooks/useUniformFieldArray/index.d.ts +6 -6
- package/dist/hooks/useUniformFieldArray/index.js +1 -1
- package/dist/hooks/useWatchUserChange/index.d.cts +1 -1
- package/dist/hooks/useWatchUserChange/index.d.ts +1 -1
- package/dist/hooks/useWatchUserChange/index.js +1 -1
- package/dist/{index-C3CvgmJw.d.ts → index-BRbX95cI.d.ts} +4 -4
- package/dist/index-BRbX95cI.d.ts.map +1 -0
- package/dist/{index-DAeb_8Q4.d.cts → index-BSlkEyYs.d.ts} +17 -29
- package/dist/index-BSlkEyYs.d.ts.map +1 -0
- package/dist/{index-BD9y--o2.d.cts → index-BXY7kYLp.d.cts} +6 -6
- package/dist/index-BXY7kYLp.d.cts.map +1 -0
- package/dist/{index-BgXr1v45.d.cts → index-Bb8SoybO.d.cts} +34 -34
- package/dist/index-Bb8SoybO.d.cts.map +1 -0
- package/dist/{index-CUy2EDqc.d.cts → index-BhOmmLn7.d.cts} +40 -78
- package/dist/index-BhOmmLn7.d.cts.map +1 -0
- package/dist/{index-aHcGnXHf.d.ts → index-C0CTs3Qk.d.ts} +4 -4
- package/dist/index-C0CTs3Qk.d.ts.map +1 -0
- package/dist/{index-B_1td56I.d.ts → index-C0ovsjPe.d.ts} +6 -6
- package/dist/index-C0ovsjPe.d.ts.map +1 -0
- package/dist/{index-CB00FCyi.d.ts → index-CFDs62p3.d.cts} +31 -43
- package/dist/index-CFDs62p3.d.cts.map +1 -0
- package/dist/{index-C4-1V8jn.d.ts → index-CMIxDe3l.d.ts} +3 -3
- package/dist/index-CMIxDe3l.d.ts.map +1 -0
- package/dist/index-CPJWPL1V.d.ts +278 -0
- package/dist/index-CPJWPL1V.d.ts.map +1 -0
- package/dist/{index-DjDR6FpI.d.ts → index-CSpIVjkS.d.ts} +36 -36
- package/dist/index-CSpIVjkS.d.ts.map +1 -0
- package/dist/{index-Cj5CLBt2.d.cts → index-CnEcnY6I.d.cts} +4 -4
- package/dist/index-CnEcnY6I.d.cts.map +1 -0
- package/dist/{index-DxfiwbJb.d.cts → index-Cte7ndgs.d.cts} +18 -34
- package/dist/index-Cte7ndgs.d.cts.map +1 -0
- package/dist/{index-nVYabHcT.d.cts → index-CuFzW4Oh.d.cts} +35 -35
- package/dist/index-CuFzW4Oh.d.cts.map +1 -0
- package/dist/{index-CrxSEKKb.d.cts → index-Cw2iSfpt.d.ts} +48 -48
- package/dist/index-Cw2iSfpt.d.ts.map +1 -0
- package/dist/index-D2VfkbWH.d.cts +85 -0
- package/dist/index-D2VfkbWH.d.cts.map +1 -0
- package/dist/{index-DTURD6sl.d.cts → index-D8DBXhSt.d.cts} +7 -7
- package/dist/index-D8DBXhSt.d.cts.map +1 -0
- package/dist/{index-pE9osud2.d.ts → index-DIMnCRyt.d.ts} +3 -3
- package/dist/index-DIMnCRyt.d.ts.map +1 -0
- package/dist/index-DKZNtov1.d.ts +85 -0
- package/dist/index-DKZNtov1.d.ts.map +1 -0
- package/dist/{index-DsyY9X04.d.cts → index-DMoH0fuj.d.cts} +3 -3
- package/dist/index-DMoH0fuj.d.cts.map +1 -0
- package/dist/index-DbJdf7rl.d.cts +278 -0
- package/dist/index-DbJdf7rl.d.cts.map +1 -0
- package/dist/{index-Cj-PU3Ck.d.ts → index-Dbptn5fZ.d.ts} +35 -35
- package/dist/index-Dbptn5fZ.d.ts.map +1 -0
- package/dist/{index-Bo79xzb4.d.cts → index-DjFBshmt.d.cts} +4 -4
- package/dist/index-DjFBshmt.d.cts.map +1 -0
- package/dist/{index-BV_YDI6g.d.ts → index-DmV9SW74.d.ts} +40 -78
- package/dist/index-DmV9SW74.d.ts.map +1 -0
- package/dist/{index-DJbdReTK.d.ts → index-DmlsX2k6.d.ts} +3 -3
- package/dist/index-DmlsX2k6.d.ts.map +1 -0
- package/dist/{index-DEJghucW.d.cts → index-DrIoPfZ5.d.cts} +3 -3
- package/dist/index-DrIoPfZ5.d.cts.map +1 -0
- package/dist/{index-D3RMbKbP.d.cts → index-DyEXTKt7.d.cts} +36 -36
- package/dist/index-DyEXTKt7.d.cts.map +1 -0
- package/dist/{index-DebErIUS.d.ts → index-JZN6NULG.d.cts} +48 -48
- package/dist/index-JZN6NULG.d.cts.map +1 -0
- package/dist/{index-BFLKkqA3.d.ts → index-Me4MKtCU.d.cts} +3 -3
- package/dist/index-Me4MKtCU.d.cts.map +1 -0
- package/dist/{index-Dy0m4FQj.d.ts → index-SH6SweXJ.d.ts} +7 -7
- package/dist/index-SH6SweXJ.d.ts.map +1 -0
- package/dist/{index-796vjEop.d.ts → index-Uv1u4DLk.d.ts} +34 -34
- package/dist/index-Uv1u4DLk.d.ts.map +1 -0
- package/dist/{index-CbAh0Kfo.d.cts → index-WWXULpwC.d.cts} +1 -1
- package/dist/index-WWXULpwC.d.cts.map +1 -0
- package/dist/{index-gWYaaO6O.d.ts → index-bFxTqfn4.d.ts} +18 -34
- package/dist/index-bFxTqfn4.d.ts.map +1 -0
- package/dist/{index-BW9EUWZE.d.cts → index-ttNINAv3.d.ts} +3 -3
- package/dist/index-ttNINAv3.d.ts.map +1 -0
- package/dist/index.cjs +14 -14
- package/dist/index.d.cts +26 -26
- package/dist/index.d.ts +29 -29
- package/dist/index.js +27 -27
- package/dist/partials/FieldCopyTestIdButton/index.d.cts +1 -1
- package/dist/partials/FieldCopyTestIdButton/index.d.ts +1 -1
- package/dist/partials/FieldCopyTestIdButton/index.js +1 -1
- package/dist/partials/FieldValidationError/index.d.cts +1 -1
- package/dist/partials/FieldValidationError/index.d.ts +1 -1
- package/dist/partials/FieldValidationError/index.js +1 -1
- package/dist/{useClientValidation-C6Daq53C.js → useClientValidation-Dg1CfArx.js} +3 -3
- package/dist/{useClientValidation-C6Daq53C.js.map → useClientValidation-Dg1CfArx.js.map} +1 -1
- package/dist/{useClientValidation-Bg0q3Axc.d.ts → useClientValidation-Dw-dmynu.d.cts} +1 -2
- package/dist/useClientValidation-Dw-dmynu.d.cts.map +1 -0
- package/dist/{useClientValidation-BvPDQmf6.d.cts → useClientValidation-DxFgfsEI.d.ts} +1 -2
- package/dist/useClientValidation-DxFgfsEI.d.ts.map +1 -0
- package/dist/{useController-QcOl0O0v.js → useController-C0eij9zb.js} +3 -3
- package/dist/{useController-QcOl0O0v.js.map → useController-C0eij9zb.js.map} +1 -1
- package/dist/{useController-C6Pg9T_3.d.cts → useController-CvPWE2Sy.d.cts} +1 -1
- package/dist/useController-CvPWE2Sy.d.cts.map +1 -0
- package/dist/{useController-BJ2SBdky.d.ts → useController-DfiNbuEz.d.ts} +1 -1
- package/dist/useController-DfiNbuEz.d.ts.map +1 -0
- package/dist/{useFormContext-B2TS6xq0.d.ts → useFormContext-C6OOtqZ5.d.ts} +18 -18
- package/dist/useFormContext-C6OOtqZ5.d.ts.map +1 -0
- package/dist/{useFormContext-356X5XAY.js → useFormContext-CLymm_7t.js} +1 -1
- package/dist/{useFormContext-356X5XAY.js.map → useFormContext-CLymm_7t.js.map} +1 -1
- package/dist/{useFormContext-n3WYgGkW.d.cts → useFormContext-Dh97YG47.d.cts} +18 -18
- package/dist/useFormContext-Dh97YG47.d.cts.map +1 -0
- package/dist/{useFormContext-UFBqUfOr.js → useFormContext-yC0bzokU.js} +3 -3
- package/dist/{useFormContext-UFBqUfOr.js.map → useFormContext-yC0bzokU.js.map} +1 -1
- package/dist/{useInputValueDebounce-D9wArTKz.js → useInputValueDebounce-CH_3h67c.js} +2 -2
- package/dist/{useInputValueDebounce-D9wArTKz.js.map → useInputValueDebounce-CH_3h67c.js.map} +1 -1
- package/dist/{useInputValueDebounce-fhmVn1aO.d.ts → useInputValueDebounce-Dhlv1NUY.d.ts} +1 -1
- package/dist/useInputValueDebounce-Dhlv1NUY.d.ts.map +1 -0
- package/dist/{useInputValueDebounce-DI1C6oaU.d.cts → useInputValueDebounce-ZLyAmuXV.d.cts} +1 -1
- package/dist/useInputValueDebounce-ZLyAmuXV.d.cts.map +1 -0
- package/dist/{useInputValueTransform-CMNC21vX.js → useInputValueTransform-C-fmz3ke.js} +1 -1
- package/dist/{useInputValueTransform-CMNC21vX.js.map → useInputValueTransform-C-fmz3ke.js.map} +1 -1
- package/dist/{useInputValueTransform-BV8o0PMI.d.cts → useInputValueTransform-CNCBU7a9.d.cts} +1 -1
- package/dist/useInputValueTransform-CNCBU7a9.d.cts.map +1 -0
- package/dist/{useInputValueTransform-Cc0qEsnS.d.ts → useInputValueTransform-tsMNM7g_.d.ts} +1 -1
- package/dist/useInputValueTransform-tsMNM7g_.d.ts.map +1 -0
- package/dist/{useUniformField-CXSaAVTt.d.ts → useUniformField-CqqIJtqo.d.ts} +5 -5
- package/dist/useUniformField-CqqIJtqo.d.ts.map +1 -0
- package/dist/{useUniformField-ETnay_UI.d.cts → useUniformField-DIb__gKK.d.cts} +5 -5
- package/dist/useUniformField-DIb__gKK.d.cts.map +1 -0
- package/dist/{useUniformField-C6oSAFa3.js → useUniformField-DIdjVLj3.js} +9 -29
- package/dist/useUniformField-DIdjVLj3.js.map +1 -0
- package/dist/{useUniformField-Dd3AnpgE.cjs → useUniformField-hjd0F3HI.cjs} +2 -22
- package/dist/useUniformField-hjd0F3HI.cjs.map +1 -0
- package/dist/{useUniformFieldArray-COtgcAnp.d.ts → useUniformFieldArray-4MOU0xac.d.ts} +14 -14
- package/dist/useUniformFieldArray-4MOU0xac.d.ts.map +1 -0
- package/dist/{useUniformFieldArray-4pUdrWYT.d.cts → useUniformFieldArray-BChcZvc5.d.cts} +14 -14
- package/dist/useUniformFieldArray-BChcZvc5.d.cts.map +1 -0
- package/dist/{useUniformFieldArray-DNrmEXLg.js → useUniformFieldArray-CPBQciJw.js} +4 -4
- package/dist/{useUniformFieldArray-DNrmEXLg.js.map → useUniformFieldArray-CPBQciJw.js.map} +1 -1
- package/dist/{useUniformFieldArray-D93AUZI4.cjs → useUniformFieldArray-CXdW_Teb.cjs} +2 -2
- package/dist/{useUniformFieldArray-D93AUZI4.cjs.map → useUniformFieldArray-CXdW_Teb.cjs.map} +1 -1
- package/dist/{useWatchUserChange-DyhUYlrN.js → useWatchUserChange-BtqaujL4.js} +2 -2
- package/dist/{useWatchUserChange-DyhUYlrN.js.map → useWatchUserChange-BtqaujL4.js.map} +1 -1
- package/dist/{useWatchUserChange-DX6gUHvM.d.ts → useWatchUserChange-CYd_8zeN.d.ts} +1 -1
- package/dist/useWatchUserChange-CYd_8zeN.d.ts.map +1 -0
- package/dist/{useWatchUserChange-cI5-j6M4.d.cts → useWatchUserChange-DedTNvGV.d.cts} +1 -1
- package/dist/useWatchUserChange-DedTNvGV.d.cts.map +1 -0
- package/package.json +2 -2
- package/dist/FieldCard-38ZBBWyE.cjs.map +0 -1
- package/dist/FieldCard-7XiCb6jZ.js.map +0 -1
- package/dist/FormContext-C2_WMi_v.d.ts.map +0 -1
- package/dist/FormContext-Dl7KL_wl.d.cts.map +0 -1
- package/dist/index-796vjEop.d.ts.map +0 -1
- package/dist/index-B62CWrcm.d.ts +0 -97
- package/dist/index-B62CWrcm.d.ts.map +0 -1
- package/dist/index-BD9y--o2.d.cts.map +0 -1
- package/dist/index-BFLKkqA3.d.ts.map +0 -1
- package/dist/index-BV_YDI6g.d.ts.map +0 -1
- package/dist/index-BW9EUWZE.d.cts.map +0 -1
- package/dist/index-B_1td56I.d.ts.map +0 -1
- package/dist/index-BgXr1v45.d.cts.map +0 -1
- package/dist/index-Bo79xzb4.d.cts.map +0 -1
- package/dist/index-C3CvgmJw.d.ts.map +0 -1
- package/dist/index-C4-1V8jn.d.ts.map +0 -1
- package/dist/index-CB00FCyi.d.ts.map +0 -1
- package/dist/index-COwP53Gx.d.ts +0 -278
- package/dist/index-COwP53Gx.d.ts.map +0 -1
- package/dist/index-CUy2EDqc.d.cts.map +0 -1
- package/dist/index-CbAh0Kfo.d.cts.map +0 -1
- package/dist/index-Cj-PU3Ck.d.ts.map +0 -1
- package/dist/index-Cj5CLBt2.d.cts.map +0 -1
- package/dist/index-CrxSEKKb.d.cts.map +0 -1
- package/dist/index-D3RMbKbP.d.cts.map +0 -1
- package/dist/index-DAeb_8Q4.d.cts.map +0 -1
- package/dist/index-DEJghucW.d.cts.map +0 -1
- package/dist/index-DJbdReTK.d.ts.map +0 -1
- package/dist/index-DTURD6sl.d.cts.map +0 -1
- package/dist/index-DebErIUS.d.ts.map +0 -1
- package/dist/index-DfGCI-K_.d.cts +0 -278
- package/dist/index-DfGCI-K_.d.cts.map +0 -1
- package/dist/index-DjDR6FpI.d.ts.map +0 -1
- package/dist/index-DsyY9X04.d.cts.map +0 -1
- package/dist/index-DxfiwbJb.d.cts.map +0 -1
- package/dist/index-Dy0m4FQj.d.ts.map +0 -1
- package/dist/index-Y8XsRdxS.d.cts +0 -97
- package/dist/index-Y8XsRdxS.d.cts.map +0 -1
- package/dist/index-aHcGnXHf.d.ts.map +0 -1
- package/dist/index-gWYaaO6O.d.ts.map +0 -1
- package/dist/index-nVYabHcT.d.cts.map +0 -1
- package/dist/index-pE9osud2.d.ts.map +0 -1
- package/dist/useClientValidation-Bg0q3Axc.d.ts.map +0 -1
- package/dist/useClientValidation-BvPDQmf6.d.cts.map +0 -1
- package/dist/useController-BJ2SBdky.d.ts.map +0 -1
- package/dist/useController-C6Pg9T_3.d.cts.map +0 -1
- package/dist/useFormContext-B2TS6xq0.d.ts.map +0 -1
- package/dist/useFormContext-n3WYgGkW.d.cts.map +0 -1
- package/dist/useInputValueDebounce-DI1C6oaU.d.cts.map +0 -1
- package/dist/useInputValueDebounce-fhmVn1aO.d.ts.map +0 -1
- package/dist/useInputValueTransform-BV8o0PMI.d.cts.map +0 -1
- package/dist/useInputValueTransform-Cc0qEsnS.d.ts.map +0 -1
- package/dist/useUniformField-C6oSAFa3.js.map +0 -1
- package/dist/useUniformField-CXSaAVTt.d.ts.map +0 -1
- package/dist/useUniformField-Dd3AnpgE.cjs.map +0 -1
- package/dist/useUniformField-ETnay_UI.d.cts.map +0 -1
- package/dist/useUniformFieldArray-4pUdrWYT.d.cts.map +0 -1
- package/dist/useUniformFieldArray-COtgcAnp.d.ts.map +0 -1
- package/dist/useWatchUserChange-DX6gUHvM.d.ts.map +0 -1
- package/dist/useWatchUserChange-cI5-j6M4.d.cts.map +0 -1
- /package/dist/{index-BLREDRDJ.d.cts → index-BMCcWGYS.d.ts} +0 -0
- /package/dist/{index-BRLjimYW.d.ts → index-C8k_zgEm.d.cts} +0 -0
- /package/dist/{index-BYrmFhKl.d.ts → index-D86jXpHS.d.cts} +0 -0
- /package/dist/{index-CFBmva_r.d.ts → index-DDRpa5CJ.d.cts} +0 -0
- /package/dist/{index-DpEKQcoR.d.cts → index-GGHuYh77.d.ts} +0 -0
- /package/dist/{index-lQ_hGQ08.d.cts → index-hIBrhvnj.d.ts} +0 -0
- /package/dist/{useInput--wjwIBc5.d.cts → useInput-BVZvtfNg.d.ts} +0 -0
- /package/dist/{useInput-DZ6KGBxw.js → useInput-BWzvIUpW.js} +0 -0
- /package/dist/{useInput-BCdeYOOg.d.ts → useInput-CKmKH9Ij.d.cts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as useController$1 } from "./useController-
|
|
2
|
-
import { n as useFormContext$1 } from "./useFormContext-
|
|
1
|
+
import { r as useController$1 } from "./useController-DfiNbuEz.js";
|
|
2
|
+
import { n as useFormContext$1 } from "./useFormContext-C6OOtqZ5.js";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
|
-
import * as
|
|
4
|
+
import * as react_hook_form14 from "react-hook-form";
|
|
5
5
|
import { ArrayPath, FieldValues } from "react-hook-form";
|
|
6
6
|
import * as _heroui_input0 from "@heroui/input";
|
|
7
7
|
|
|
@@ -44,36 +44,36 @@ declare const useUniformFieldArray: <TFieldValues extends FieldValues = FieldVal
|
|
|
44
44
|
label
|
|
45
45
|
}: UseUniformFieldArrayProps<TFieldValues>) => {
|
|
46
46
|
ariaLabel: string | undefined;
|
|
47
|
-
control:
|
|
47
|
+
control: react_hook_form14.Control<TFieldValues, any, TFieldValues>;
|
|
48
48
|
debugMode: ReturnType<typeof useFormContext$1<TFieldValues_1>>["debugMode"];
|
|
49
49
|
defaultValue: unknown;
|
|
50
50
|
disabled: boolean | undefined;
|
|
51
|
-
error:
|
|
51
|
+
error: react_hook_form14.FieldError[] | undefined;
|
|
52
52
|
errorMessage: ReactNode | null;
|
|
53
|
-
field: Omit<
|
|
53
|
+
field: Omit<react_hook_form14.ControllerRenderProps<TFieldValues>, "value" | "onChange"> & {
|
|
54
54
|
onChange: (...event: any[]) => void;
|
|
55
55
|
value: string;
|
|
56
56
|
};
|
|
57
57
|
getErrorMessageProps: ReturnType<typeof _heroui_input0.useInput>["getErrorMessageProps"];
|
|
58
58
|
getHelperWrapperProps: ReturnType<typeof _heroui_input0.useInput>["getHelperWrapperProps"];
|
|
59
59
|
getLabelProps: ReturnType<typeof _heroui_input0.useInput>["getLabelProps"];
|
|
60
|
-
getValues:
|
|
60
|
+
getValues: react_hook_form14.UseFormGetValues<TFieldValues>;
|
|
61
61
|
invalid: boolean;
|
|
62
62
|
label: ReactNode | null;
|
|
63
63
|
onBlur: ReturnType<typeof useController$1>["field"]["onBlur"];
|
|
64
64
|
onChange: ReturnType<typeof useController$1>["field"]["onChange"];
|
|
65
65
|
ref: ReturnType<typeof useController$1>["field"]["ref"];
|
|
66
66
|
required: boolean;
|
|
67
|
-
resetField:
|
|
67
|
+
resetField: react_hook_form14.UseFormResetField<TFieldValues>;
|
|
68
68
|
testId: string;
|
|
69
|
-
fields:
|
|
70
|
-
append:
|
|
71
|
-
remove:
|
|
72
|
-
insert:
|
|
73
|
-
move:
|
|
69
|
+
fields: react_hook_form14.FieldArrayWithId<TFieldValues, ArrayPath<TFieldValues>, "id">[];
|
|
70
|
+
append: react_hook_form14.UseFieldArrayAppend<TFieldValues, ArrayPath<TFieldValues>>;
|
|
71
|
+
remove: react_hook_form14.UseFieldArrayRemove;
|
|
72
|
+
insert: react_hook_form14.UseFieldArrayInsert<TFieldValues, ArrayPath<TFieldValues>>;
|
|
73
|
+
move: react_hook_form14.UseFieldArrayMove;
|
|
74
74
|
disableAnimation: boolean;
|
|
75
75
|
elementInitialValue: {};
|
|
76
76
|
};
|
|
77
77
|
//#endregion
|
|
78
78
|
export { useUniformFieldArray as n, UseUniformFieldArrayProps as t };
|
|
79
|
-
//# sourceMappingURL=useUniformFieldArray-
|
|
79
|
+
//# sourceMappingURL=useUniformFieldArray-4MOU0xac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUniformFieldArray-4MOU0xac.d.ts","names":[],"sources":["../src/hooks/useUniformFieldArray/useUniformFieldArray.ts"],"mappings":";;;;;;;;UAYiB,yBAAA,sBACM,WAAA,GAAc,WAAA;;EAGnC,IAAA,EAAM,SAAA,CAAU,YAAA;;EAEhB,IAAA;EANe;EAQf,mBAAA;EARwC;EAUxC,uBAAA;EATmC;EAWnC,QAAA;EARM;EAUN,MAAA;EAEiB;EAAjB,KAAA,GAAQ,SAAA;AAAA;;;;;;;;;;;;;cAeG,oBAAA,wBACU,WAAA,GAAc,WAAA;EACnC,IAAA;EAAA,IAAA;EAAA,mBAAA,EAAA,oBAAA;EAAA,uBAAA;EAAA,QAAA;EAAA,MAAA,EAAA,cAAA;EAAA;AAAA,GAQC,yBAAA,CAA0B,YAAA;;;;;;;;;kBAhC+B,KAAA;;;;;;;;;UAqExB,UAAA;YAEX,UAAA,QAFW,eAAA;OAKzB,UAAA,QAHc,eAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as useController } from "./useController-
|
|
2
|
-
import { n as useFormContext } from "./useFormContext-
|
|
1
|
+
import { r as useController } from "./useController-CvPWE2Sy.cjs";
|
|
2
|
+
import { n as useFormContext } from "./useFormContext-Dh97YG47.cjs";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
|
-
import * as
|
|
4
|
+
import * as react_hook_form14 from "react-hook-form";
|
|
5
5
|
import { ArrayPath, FieldValues } from "react-hook-form";
|
|
6
6
|
import * as _heroui_input0 from "@heroui/input";
|
|
7
7
|
|
|
@@ -44,36 +44,36 @@ declare const useUniformFieldArray: <TFieldValues extends FieldValues = FieldVal
|
|
|
44
44
|
label
|
|
45
45
|
}: UseUniformFieldArrayProps<TFieldValues>) => {
|
|
46
46
|
ariaLabel: string | undefined;
|
|
47
|
-
control:
|
|
47
|
+
control: react_hook_form14.Control<TFieldValues, any, TFieldValues>;
|
|
48
48
|
debugMode: ReturnType<typeof useFormContext<TFieldValues_1>>["debugMode"];
|
|
49
49
|
defaultValue: unknown;
|
|
50
50
|
disabled: boolean | undefined;
|
|
51
|
-
error:
|
|
51
|
+
error: react_hook_form14.FieldError[] | undefined;
|
|
52
52
|
errorMessage: ReactNode | null;
|
|
53
|
-
field: Omit<
|
|
53
|
+
field: Omit<react_hook_form14.ControllerRenderProps<TFieldValues>, "value" | "onChange"> & {
|
|
54
54
|
onChange: (...event: any[]) => void;
|
|
55
55
|
value: string;
|
|
56
56
|
};
|
|
57
57
|
getErrorMessageProps: ReturnType<typeof _heroui_input0.useInput>["getErrorMessageProps"];
|
|
58
58
|
getHelperWrapperProps: ReturnType<typeof _heroui_input0.useInput>["getHelperWrapperProps"];
|
|
59
59
|
getLabelProps: ReturnType<typeof _heroui_input0.useInput>["getLabelProps"];
|
|
60
|
-
getValues:
|
|
60
|
+
getValues: react_hook_form14.UseFormGetValues<TFieldValues>;
|
|
61
61
|
invalid: boolean;
|
|
62
62
|
label: ReactNode | null;
|
|
63
63
|
onBlur: ReturnType<typeof useController>["field"]["onBlur"];
|
|
64
64
|
onChange: ReturnType<typeof useController>["field"]["onChange"];
|
|
65
65
|
ref: ReturnType<typeof useController>["field"]["ref"];
|
|
66
66
|
required: boolean;
|
|
67
|
-
resetField:
|
|
67
|
+
resetField: react_hook_form14.UseFormResetField<TFieldValues>;
|
|
68
68
|
testId: string;
|
|
69
|
-
fields:
|
|
70
|
-
append:
|
|
71
|
-
remove:
|
|
72
|
-
insert:
|
|
73
|
-
move:
|
|
69
|
+
fields: react_hook_form14.FieldArrayWithId<TFieldValues, ArrayPath<TFieldValues>, "id">[];
|
|
70
|
+
append: react_hook_form14.UseFieldArrayAppend<TFieldValues, ArrayPath<TFieldValues>>;
|
|
71
|
+
remove: react_hook_form14.UseFieldArrayRemove;
|
|
72
|
+
insert: react_hook_form14.UseFieldArrayInsert<TFieldValues, ArrayPath<TFieldValues>>;
|
|
73
|
+
move: react_hook_form14.UseFieldArrayMove;
|
|
74
74
|
disableAnimation: boolean;
|
|
75
75
|
elementInitialValue: {};
|
|
76
76
|
};
|
|
77
77
|
//#endregion
|
|
78
78
|
export { useUniformFieldArray as n, UseUniformFieldArrayProps as t };
|
|
79
|
-
//# sourceMappingURL=useUniformFieldArray-
|
|
79
|
+
//# sourceMappingURL=useUniformFieldArray-BChcZvc5.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUniformFieldArray-BChcZvc5.d.cts","names":[],"sources":["../src/hooks/useUniformFieldArray/useUniformFieldArray.ts"],"mappings":";;;;;;;;UAYiB,yBAAA,sBACM,WAAA,GAAc,WAAA;;EAGnC,IAAA,EAAM,SAAA,CAAU,YAAA;;EAEhB,IAAA;EANe;EAQf,mBAAA;EARwC;EAUxC,uBAAA;EATmC;EAWnC,QAAA;EARM;EAUN,MAAA;EAEiB;EAAjB,KAAA,GAAQ,SAAA;AAAA;;;;;;;;;;;;;cAeG,oBAAA,wBACU,WAAA,GAAc,WAAA;EACnC,IAAA;EAAA,IAAA;EAAA,mBAAA,EAAA,oBAAA;EAAA,uBAAA;EAAA,QAAA;EAAA,MAAA,EAAA,cAAA;EAAA;AAAA,GAQC,yBAAA,CAA0B,YAAA;;;;;;;;;kBAhC+B,KAAA;;;;;;;;;UAqExB,UAAA;YAEX,UAAA,QAFW,aAAA;OAKzB,UAAA,QAHc,aAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as flatArrayKey } from "./helpers-
|
|
2
|
-
import { n as useFormContext$1 } from "./useFormContext-
|
|
3
|
-
import { t as useUniformField } from "./useUniformField-
|
|
1
|
+
import { t as flatArrayKey } from "./helpers-B6Iozj-0.js";
|
|
2
|
+
import { n as useFormContext$1 } from "./useFormContext-yC0bzokU.js";
|
|
3
|
+
import { t as useUniformField } from "./useUniformField-DIdjVLj3.js";
|
|
4
4
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { useReducedMotion } from "@fuf-stack/pixel-motion";
|
|
6
6
|
import { useFieldArray } from "react-hook-form";
|
|
@@ -81,4 +81,4 @@ const useUniformFieldArray = ({ name, flat = false, elementInitialValue: _elemen
|
|
|
81
81
|
|
|
82
82
|
//#endregion
|
|
83
83
|
export { useUniformFieldArray as t };
|
|
84
|
-
//# sourceMappingURL=useUniformFieldArray-
|
|
84
|
+
//# sourceMappingURL=useUniformFieldArray-CPBQciJw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUniformFieldArray-
|
|
1
|
+
{"version":3,"file":"useUniformFieldArray-CPBQciJw.js","names":["useRHFFieldArray","useFormContext"],"sources":["../src/hooks/useUniformFieldArray/useUniformFieldArray.ts","../src/hooks/useUniformFieldArray/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { ArrayPath, FieldValues, Path } from 'react-hook-form';\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useFieldArray as useRHFFieldArray } from 'react-hook-form';\n\nimport { useReducedMotion } from '@fuf-stack/pixel-motion';\n\nimport { flatArrayKey } from '../../helpers';\nimport { useFormContext } from '../useFormContext';\nimport { useUniformField } from '../useUniformField';\n\nexport interface UseUniformFieldArrayProps<\n TFieldValues extends FieldValues = FieldValues,\n> {\n /** Field name for the array */\n name: ArrayPath<TFieldValues>;\n /** Whether this is a flat array (array of primitives) */\n flat?: boolean;\n /** Initial value for new array elements */\n elementInitialValue?: unknown;\n /** Whether the last element cannot be removed (always maintain at least one element) */\n lastElementNotRemovable?: boolean;\n /** Disable the field */\n disabled?: boolean;\n /** Optional explicit test id used to build stable test ids */\n testId?: string;\n /** Optional label content */\n label?: ReactNode;\n}\n\n/**\n * Enhanced useFieldArray hook with initialization and animation logic.\n * Based on React Hook Form's useFieldArray with additional features:\n * - Automatic initialization when lastElementNotRemovable is set\n * - Animation control (disabled during initialization)\n * - Support for flat arrays (arrays of primitives)\n *\n * Note: Automatic validation triggering on length change is disabled to prevent\n * triggering form-wide validation. Array validation still runs on form submission.\n *\n * @see https://react-hook-form.com/docs/usefieldarray\n */\nexport const useUniformFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n>({\n name,\n flat = false,\n elementInitialValue: _elementInitialValue = null,\n lastElementNotRemovable = false,\n disabled,\n testId: explicitTestId,\n label,\n}: UseUniformFieldArrayProps<TFieldValues>) => {\n // Get uniform field state and utilities\n const uniformField = useUniformField<TFieldValues>({\n name: name as Path<TFieldValues> & string,\n disabled,\n testId: explicitTestId,\n label,\n });\n\n const { control } = uniformField;\n\n const { fields, append, remove, insert, move } = useRHFFieldArray({\n control,\n name,\n });\n\n const { trigger, setValue } = useFormContext<TFieldValues>();\n\n // Determine if initialization is needed (initially or after reset).\n // This flag automatically handles both scenarios:\n // - Initial mount: fields.length starts at 0\n // - Form reset: fields.length becomes 0 again\n // Additional initialization conditions can be added here later (e.g., minElements > 0)\n // Using useMemo ensures this value is properly tracked by React and effects can depend on it\n const needsInitialize = useMemo(() => {\n return lastElementNotRemovable && fields.length === 0;\n }, [lastElementNotRemovable, fields.length]);\n\n // Track whether initialization has completed. Initialized contextually:\n // - If initialization IS needed (needsInitialize = true): starts as false, set to true after init\n // - If initialization is NOT needed (needsInitialize = false): starts as true (already initialized)\n // This ref is used to:\n // 1. Skip validation during initialization/re-initialization\n // 2. Gate animation enabling until after initialization\n // 3. Gate motion preference effect until after initialization\n const hasInitialized = useRef(!needsInitialize);\n\n // Reset initialization flag when needsInitialize changes to true.\n // This handles form reset: when fields become empty (needsInitialize becomes true),\n // hasInitialized is reset to false, triggering re-initialization in the effect below.\n useEffect(() => {\n if (needsInitialize) {\n hasInitialized.current = false;\n }\n }, [needsInitialize]);\n\n // Validate array-level constraints (min/max items) when length changes.\n // This ensures min/max errors appear instantly when user adds/removes items.\n // Note: Child field validation also runs, but new empty fields won't show as invalid\n // because useFormContext only sets invalid=true for touched fields or after form submission.\n // Skip validation during initialization/re-initialization to avoid showing errors prematurely.\n useEffect(() => {\n if (hasInitialized.current) {\n setTimeout(() => {\n trigger(name as Path<TFieldValues>);\n }, 200);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fields.length]);\n\n // Animation control: Start with animations disabled to prevent animating in initial elements.\n // Will be enabled after initialization completes (unless user prefers reduced motion).\n const [disableAnimation, setDisableAnimation] = useState(true);\n\n // Respond to user's motion preference changes (after initialization).\n // During initialization, animations stay disabled regardless of preference.\n const prefersReducedMotion = useReducedMotion();\n useEffect(() => {\n if (hasInitialized.current) {\n setDisableAnimation(!!prefersReducedMotion);\n }\n }, [prefersReducedMotion]);\n\n // Prepare initial element value based on mode\n // - flat=true: arrays of primitives → object with flatArrayKey and null value by default\n // - flat=false: arrays of objects → empty object by default\n const elementInitialValue = useMemo(() => {\n return flat\n ? { [flatArrayKey]: _elementInitialValue ?? null }\n : (_elementInitialValue ?? {});\n }, [flat, _elementInitialValue]);\n\n // Initialization/Re-initialization: Add initial element when needed.\n // This handles both initial mount and form reset scenarios by reacting to needsInitialize.\n // CRITICAL: This effect MUST be the LAST hook in this component.\n // It sets hasInitialized.current = true, which acts as a gate for other effects.\n // If this runs before other effects, hasInitialized will be true during their first run,\n // causing them to execute logic meant only for post-initialization (e.g., validation,\n // animation enabling). By placing this last, all other effects run first with\n // hasInitialized = false, allowing them to skip initialization-phase logic.\n useEffect(\n () => {\n if (needsInitialize) {\n // use setValue instead of append to avoid focusing the added element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(name as Path<TFieldValues>, [elementInitialValue] as any, {\n shouldDirty: false,\n shouldTouch: false,\n });\n\n // Mark initialization as complete\n hasInitialized.current = true;\n\n // Enable animations after a brief delay (unless user prefers reduced motion or animations are already enabled).\n // This only runs on initial mount when animations start disabled.\n // On reset, disableAnimation is typically false, so this setTimeout won't run and animations stay enabled.\n if (!prefersReducedMotion && disableAnimation) {\n setTimeout(() => {\n setDisableAnimation(false);\n }, 1);\n }\n }\n },\n // Run when needsInitialize changes (initial mount or reset)\n // needsInitialize is memoized based on fields.length and lastElementNotRemovable\n // Other dependencies are intentionally omitted:\n // - append, setValue, trigger, setDisableAnimation are stable refs/functions\n // - elementInitialValue, name, flat, prefersReducedMotion, disableAnimation are props/stable values\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [needsInitialize],\n );\n\n return {\n // Field array methods and state\n fields,\n append,\n remove,\n insert,\n move,\n disableAnimation,\n elementInitialValue,\n // Uniform field state and utilities (spread all)\n ...uniformField,\n };\n};\n","/* v8 ignore start */\n\nexport * from './useUniformFieldArray';\n\n/* v8 ignore stop */\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA2CA,MAAa,wBAEX,EACA,MACA,OAAO,OACP,qBAAqB,uBAAuB,MAC5C,0BAA0B,OAC1B,UACA,QAAQ,gBACR,YAC6C;CAE7C,MAAM,eAAe,gBAA8B;EAC3C;EACN;EACA,QAAQ;EACR;EACD,CAAC;CAEF,MAAM,EAAE,YAAY;CAEpB,MAAM,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,SAASA,cAAiB;EAChE;EACA;EACD,CAAC;CAEF,MAAM,EAAE,SAAS,aAAaC,kBAA8B;CAQ5D,MAAM,kBAAkB,cAAc;AACpC,SAAO,2BAA2B,OAAO,WAAW;IACnD,CAAC,yBAAyB,OAAO,OAAO,CAAC;CAS5C,MAAM,iBAAiB,OAAO,CAAC,gBAAgB;AAK/C,iBAAgB;AACd,MAAI,gBACF,gBAAe,UAAU;IAE1B,CAAC,gBAAgB,CAAC;AAOrB,iBAAgB;AACd,MAAI,eAAe,QACjB,kBAAiB;AACf,WAAQ,KAA2B;KAClC,IAAI;IAGR,CAAC,OAAO,OAAO,CAAC;CAInB,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,KAAK;CAI9D,MAAM,uBAAuB,kBAAkB;AAC/C,iBAAgB;AACd,MAAI,eAAe,QACjB,qBAAoB,CAAC,CAAC,qBAAqB;IAE5C,CAAC,qBAAqB,CAAC;CAK1B,MAAM,sBAAsB,cAAc;AACxC,SAAO,OACH,GAAG,eAAe,wBAAwB,MAAM,GAC/C,wBAAwB,EAAE;IAC9B,CAAC,MAAM,qBAAqB,CAAC;AAUhC,iBACQ;AACJ,MAAI,iBAAiB;AAGnB,YAAS,MAA4B,CAAC,oBAAoB,EAAS;IACjE,aAAa;IACb,aAAa;IACd,CAAC;AAGF,kBAAe,UAAU;AAKzB,OAAI,CAAC,wBAAwB,iBAC3B,kBAAiB;AACf,wBAAoB,MAAM;MACzB,EAAE;;IAUX,CAAC,gBAAgB,CAClB;AAED,QAAO;EAEL;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,GAAG;EACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_FormContext = require('./FormContext-CeFKQmVH.cjs');
|
|
2
2
|
const require_helpers = require('./helpers-CncbgvW_.cjs');
|
|
3
3
|
const require_useFormContext = require('./useFormContext-DJiJlfGJ.cjs');
|
|
4
|
-
const require_useUniformField = require('./useUniformField-
|
|
4
|
+
const require_useUniformField = require('./useUniformField-hjd0F3HI.cjs');
|
|
5
5
|
let react = require("react");
|
|
6
6
|
let _fuf_stack_pixel_motion = require("@fuf-stack/pixel-motion");
|
|
7
7
|
let react_hook_form = require("react-hook-form");
|
|
@@ -87,4 +87,4 @@ Object.defineProperty(exports, 'useUniformFieldArray', {
|
|
|
87
87
|
return useUniformFieldArray;
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
|
-
//# sourceMappingURL=useUniformFieldArray-
|
|
90
|
+
//# sourceMappingURL=useUniformFieldArray-CXdW_Teb.cjs.map
|
package/dist/{useUniformFieldArray-D93AUZI4.cjs.map → useUniformFieldArray-CXdW_Teb.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUniformFieldArray-
|
|
1
|
+
{"version":3,"file":"useUniformFieldArray-CXdW_Teb.cjs","names":["useUniformField","useFormContext","flatArrayKey"],"sources":["../src/hooks/useUniformFieldArray/useUniformFieldArray.ts","../src/hooks/useUniformFieldArray/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { ArrayPath, FieldValues, Path } from 'react-hook-form';\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useFieldArray as useRHFFieldArray } from 'react-hook-form';\n\nimport { useReducedMotion } from '@fuf-stack/pixel-motion';\n\nimport { flatArrayKey } from '../../helpers';\nimport { useFormContext } from '../useFormContext';\nimport { useUniformField } from '../useUniformField';\n\nexport interface UseUniformFieldArrayProps<\n TFieldValues extends FieldValues = FieldValues,\n> {\n /** Field name for the array */\n name: ArrayPath<TFieldValues>;\n /** Whether this is a flat array (array of primitives) */\n flat?: boolean;\n /** Initial value for new array elements */\n elementInitialValue?: unknown;\n /** Whether the last element cannot be removed (always maintain at least one element) */\n lastElementNotRemovable?: boolean;\n /** Disable the field */\n disabled?: boolean;\n /** Optional explicit test id used to build stable test ids */\n testId?: string;\n /** Optional label content */\n label?: ReactNode;\n}\n\n/**\n * Enhanced useFieldArray hook with initialization and animation logic.\n * Based on React Hook Form's useFieldArray with additional features:\n * - Automatic initialization when lastElementNotRemovable is set\n * - Animation control (disabled during initialization)\n * - Support for flat arrays (arrays of primitives)\n *\n * Note: Automatic validation triggering on length change is disabled to prevent\n * triggering form-wide validation. Array validation still runs on form submission.\n *\n * @see https://react-hook-form.com/docs/usefieldarray\n */\nexport const useUniformFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n>({\n name,\n flat = false,\n elementInitialValue: _elementInitialValue = null,\n lastElementNotRemovable = false,\n disabled,\n testId: explicitTestId,\n label,\n}: UseUniformFieldArrayProps<TFieldValues>) => {\n // Get uniform field state and utilities\n const uniformField = useUniformField<TFieldValues>({\n name: name as Path<TFieldValues> & string,\n disabled,\n testId: explicitTestId,\n label,\n });\n\n const { control } = uniformField;\n\n const { fields, append, remove, insert, move } = useRHFFieldArray({\n control,\n name,\n });\n\n const { trigger, setValue } = useFormContext<TFieldValues>();\n\n // Determine if initialization is needed (initially or after reset).\n // This flag automatically handles both scenarios:\n // - Initial mount: fields.length starts at 0\n // - Form reset: fields.length becomes 0 again\n // Additional initialization conditions can be added here later (e.g., minElements > 0)\n // Using useMemo ensures this value is properly tracked by React and effects can depend on it\n const needsInitialize = useMemo(() => {\n return lastElementNotRemovable && fields.length === 0;\n }, [lastElementNotRemovable, fields.length]);\n\n // Track whether initialization has completed. Initialized contextually:\n // - If initialization IS needed (needsInitialize = true): starts as false, set to true after init\n // - If initialization is NOT needed (needsInitialize = false): starts as true (already initialized)\n // This ref is used to:\n // 1. Skip validation during initialization/re-initialization\n // 2. Gate animation enabling until after initialization\n // 3. Gate motion preference effect until after initialization\n const hasInitialized = useRef(!needsInitialize);\n\n // Reset initialization flag when needsInitialize changes to true.\n // This handles form reset: when fields become empty (needsInitialize becomes true),\n // hasInitialized is reset to false, triggering re-initialization in the effect below.\n useEffect(() => {\n if (needsInitialize) {\n hasInitialized.current = false;\n }\n }, [needsInitialize]);\n\n // Validate array-level constraints (min/max items) when length changes.\n // This ensures min/max errors appear instantly when user adds/removes items.\n // Note: Child field validation also runs, but new empty fields won't show as invalid\n // because useFormContext only sets invalid=true for touched fields or after form submission.\n // Skip validation during initialization/re-initialization to avoid showing errors prematurely.\n useEffect(() => {\n if (hasInitialized.current) {\n setTimeout(() => {\n trigger(name as Path<TFieldValues>);\n }, 200);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fields.length]);\n\n // Animation control: Start with animations disabled to prevent animating in initial elements.\n // Will be enabled after initialization completes (unless user prefers reduced motion).\n const [disableAnimation, setDisableAnimation] = useState(true);\n\n // Respond to user's motion preference changes (after initialization).\n // During initialization, animations stay disabled regardless of preference.\n const prefersReducedMotion = useReducedMotion();\n useEffect(() => {\n if (hasInitialized.current) {\n setDisableAnimation(!!prefersReducedMotion);\n }\n }, [prefersReducedMotion]);\n\n // Prepare initial element value based on mode\n // - flat=true: arrays of primitives → object with flatArrayKey and null value by default\n // - flat=false: arrays of objects → empty object by default\n const elementInitialValue = useMemo(() => {\n return flat\n ? { [flatArrayKey]: _elementInitialValue ?? null }\n : (_elementInitialValue ?? {});\n }, [flat, _elementInitialValue]);\n\n // Initialization/Re-initialization: Add initial element when needed.\n // This handles both initial mount and form reset scenarios by reacting to needsInitialize.\n // CRITICAL: This effect MUST be the LAST hook in this component.\n // It sets hasInitialized.current = true, which acts as a gate for other effects.\n // If this runs before other effects, hasInitialized will be true during their first run,\n // causing them to execute logic meant only for post-initialization (e.g., validation,\n // animation enabling). By placing this last, all other effects run first with\n // hasInitialized = false, allowing them to skip initialization-phase logic.\n useEffect(\n () => {\n if (needsInitialize) {\n // use setValue instead of append to avoid focusing the added element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(name as Path<TFieldValues>, [elementInitialValue] as any, {\n shouldDirty: false,\n shouldTouch: false,\n });\n\n // Mark initialization as complete\n hasInitialized.current = true;\n\n // Enable animations after a brief delay (unless user prefers reduced motion or animations are already enabled).\n // This only runs on initial mount when animations start disabled.\n // On reset, disableAnimation is typically false, so this setTimeout won't run and animations stay enabled.\n if (!prefersReducedMotion && disableAnimation) {\n setTimeout(() => {\n setDisableAnimation(false);\n }, 1);\n }\n }\n },\n // Run when needsInitialize changes (initial mount or reset)\n // needsInitialize is memoized based on fields.length and lastElementNotRemovable\n // Other dependencies are intentionally omitted:\n // - append, setValue, trigger, setDisableAnimation are stable refs/functions\n // - elementInitialValue, name, flat, prefersReducedMotion, disableAnimation are props/stable values\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [needsInitialize],\n );\n\n return {\n // Field array methods and state\n fields,\n append,\n remove,\n insert,\n move,\n disableAnimation,\n elementInitialValue,\n // Uniform field state and utilities (spread all)\n ...uniformField,\n };\n};\n","/* v8 ignore start */\n\nexport * from './useUniformFieldArray';\n\n/* v8 ignore stop */\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2CA,MAAa,wBAEX,EACA,MACA,OAAO,OACP,qBAAqB,uBAAuB,MAC5C,0BAA0B,OAC1B,UACA,QAAQ,gBACR,YAC6C;CAE7C,MAAM,eAAeA,wCAA8B;EAC3C;EACN;EACA,QAAQ;EACR;EACD,CAAC;CAEF,MAAM,EAAE,YAAY;CAEpB,MAAM,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,4CAA0B;EAChE;EACA;EACD,CAAC;CAEF,MAAM,EAAE,SAAS,aAAaC,uCAA8B;CAQ5D,MAAM,2CAAgC;AACpC,SAAO,2BAA2B,OAAO,WAAW;IACnD,CAAC,yBAAyB,OAAO,OAAO,CAAC;CAS5C,MAAM,mCAAwB,CAAC,gBAAgB;AAK/C,4BAAgB;AACd,MAAI,gBACF,gBAAe,UAAU;IAE1B,CAAC,gBAAgB,CAAC;AAOrB,4BAAgB;AACd,MAAI,eAAe,QACjB,kBAAiB;AACf,WAAQ,KAA2B;KAClC,IAAI;IAGR,CAAC,OAAO,OAAO,CAAC;CAInB,MAAM,CAAC,kBAAkB,2CAAgC,KAAK;CAI9D,MAAM,sEAAyC;AAC/C,4BAAgB;AACd,MAAI,eAAe,QACjB,qBAAoB,CAAC,CAAC,qBAAqB;IAE5C,CAAC,qBAAqB,CAAC;CAK1B,MAAM,+CAAoC;AACxC,SAAO,OACH,GAAGC,+BAAe,wBAAwB,MAAM,GAC/C,wBAAwB,EAAE;IAC9B,CAAC,MAAM,qBAAqB,CAAC;AAUhC,4BACQ;AACJ,MAAI,iBAAiB;AAGnB,YAAS,MAA4B,CAAC,oBAAoB,EAAS;IACjE,aAAa;IACb,aAAa;IACd,CAAC;AAGF,kBAAe,UAAU;AAKzB,OAAI,CAAC,wBAAwB,iBAC3B,kBAAiB;AACf,wBAAoB,MAAM;MACzB,EAAE;;IAUX,CAAC,gBAAgB,CAClB;AAED,QAAO;EAEL;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,GAAG;EACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as useFormContext } from "./useFormContext-
|
|
1
|
+
import { n as useFormContext } from "./useFormContext-yC0bzokU.js";
|
|
2
2
|
import { useEffect } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/hooks/useWatchUserChange/useWatchUserChange.ts
|
|
@@ -82,4 +82,4 @@ const useWatchUserChange = ({ watch: watchField, onChange }) => {
|
|
|
82
82
|
|
|
83
83
|
//#endregion
|
|
84
84
|
export { useWatchUserChange as t };
|
|
85
|
-
//# sourceMappingURL=useWatchUserChange-
|
|
85
|
+
//# sourceMappingURL=useWatchUserChange-BtqaujL4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWatchUserChange-
|
|
1
|
+
{"version":3,"file":"useWatchUserChange-BtqaujL4.js","names":[],"sources":["../src/hooks/useWatchUserChange/useWatchUserChange.ts"],"sourcesContent":["import type {\n FieldValues,\n Path,\n UseFormReset,\n UseFormResetField,\n UseFormSetValue,\n} from 'react-hook-form';\n\nimport { useEffect } from 'react';\n\nimport { useFormContext } from '../useFormContext/useFormContext';\n\nexport interface UseWatchUserChangeOptions<TFieldValues extends FieldValues> {\n /** Field name to watch for user changes */\n watch: Path<TFieldValues>;\n /**\n * Callback when watched field is changed by user input.\n * Receives the new value and form helpers (setValue, resetField, reset).\n */\n onChange: (\n value: unknown,\n helpers: {\n setValue: UseFormSetValue<TFieldValues>;\n resetField: UseFormResetField<TFieldValues>;\n reset: UseFormReset<TFieldValues>;\n },\n ) => void;\n}\n\n/**\n * Hook that watches for user changes on a specific form field.\n *\n * Only triggers on manual user input (typing, clicking, selecting),\n * NOT on programmatic changes like form.reset() or form.setValue().\n * Also does NOT trigger when selecting the same value (e.g., clicking\n * an already-selected option in a Select).\n *\n * This hook subscribes to field changes at the source (useController),\n * ensuring immediate and accurate detection of user interactions.\n *\n * Use cases:\n * - Reset dependent fields when parent field changes\n * - Set mode-specific default values when a toggle changes\n * - Clear form sections based on user selections\n * - Trigger side effects only on user interaction\n *\n * Note: To watch multiple fields, call this hook multiple times.\n *\n * @example\n * ```tsx\n * // Reset city and address when user changes country\n * useWatchUserChange({\n * watch: 'country',\n * onChange: (value, { resetField }) => {\n * resetField('city');\n * resetField('address');\n * },\n * });\n *\n * // Set defaults when user changes payment method\n * useWatchUserChange({\n * watch: 'paymentMethod',\n * onChange: (value, { setValue }) => {\n * if (value === 'credit') {\n * setValue('installments', 3);\n * } else {\n * setValue('installments', 1);\n * }\n * },\n * });\n *\n * // Watch multiple fields by calling the hook multiple times\n * useWatchUserChange({\n * watch: 'category',\n * onChange: (value, { resetField }) => {\n * resetField('productId');\n * },\n * });\n * useWatchUserChange({\n * watch: 'brand',\n * onChange: (value, { resetField }) => {\n * resetField('productId');\n * },\n * });\n * ```\n */\nexport const useWatchUserChange = <\n TFieldValues extends FieldValues = FieldValues,\n>({\n watch: watchField,\n onChange,\n}: UseWatchUserChangeOptions<TFieldValues>) => {\n const { setValue, resetField, reset, userChange } =\n useFormContext<TFieldValues>();\n\n useEffect(() => {\n // Create listener that checks if changed field is the one we're watching\n const listener = (fieldName: Path<TFieldValues>, value: unknown) => {\n // Check if this is the field we're watching\n if (fieldName === watchField) {\n // Call the onChange callback with helpers\n onChange(value, { setValue, resetField, reset });\n }\n };\n\n // Subscribe to user changes\n const unsubscribe = userChange.subscribe(listener);\n\n // Cleanup on unmount\n return unsubscribe;\n }, [watchField, onChange, setValue, resetField, reset, userChange]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,MAAa,sBAEX,EACA,OAAO,YACP,eAC6C;CAC7C,MAAM,EAAE,UAAU,YAAY,OAAO,eACnC,gBAA8B;AAEhC,iBAAgB;EAEd,MAAM,YAAY,WAA+B,UAAmB;AAElE,OAAI,cAAc,WAEhB,UAAS,OAAO;IAAE;IAAU;IAAY;IAAO,CAAC;;AAQpD,SAHoB,WAAW,UAAU,SAAS;IAIjD;EAAC;EAAY;EAAU;EAAU;EAAY;EAAO;EAAW,CAAC"}
|
|
@@ -77,4 +77,4 @@ declare const useWatchUserChange: <TFieldValues extends FieldValues = FieldValue
|
|
|
77
77
|
}: UseWatchUserChangeOptions<TFieldValues>) => void;
|
|
78
78
|
//#endregion
|
|
79
79
|
export { useWatchUserChange as n, UseWatchUserChangeOptions as t };
|
|
80
|
-
//# sourceMappingURL=useWatchUserChange-
|
|
80
|
+
//# sourceMappingURL=useWatchUserChange-CYd_8zeN.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWatchUserChange-CYd_8zeN.d.ts","names":[],"sources":["../src/hooks/useWatchUserChange/useWatchUserChange.ts"],"mappings":";;;UAYiB,yBAAA,sBAA+C,WAAA;;EAE9D,KAAA,EAAO,IAAA,CAAK,YAAA;EAF4B;;;;EAOxC,QAAA,GACE,KAAA,WACA,OAAA;IACE,QAAA,EAAU,eAAA,CAAgB,YAAA;IAC1B,UAAA,EAAY,iBAAA,CAAkB,YAAA;IAC9B,KAAA,EAAO,YAAA,CAAa,YAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AA8D1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,kBAAA,wBACU,WAAA,GAAc,WAAA;EACnC,KAAA,EAAA,UAAA;EAAA;AAAA,GAGC,yBAAA,CAA0B,YAAA"}
|
|
@@ -77,4 +77,4 @@ declare const useWatchUserChange: <TFieldValues extends FieldValues = FieldValue
|
|
|
77
77
|
}: UseWatchUserChangeOptions<TFieldValues>) => void;
|
|
78
78
|
//#endregion
|
|
79
79
|
export { useWatchUserChange as n, UseWatchUserChangeOptions as t };
|
|
80
|
-
//# sourceMappingURL=useWatchUserChange-
|
|
80
|
+
//# sourceMappingURL=useWatchUserChange-DedTNvGV.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWatchUserChange-DedTNvGV.d.cts","names":[],"sources":["../src/hooks/useWatchUserChange/useWatchUserChange.ts"],"mappings":";;;UAYiB,yBAAA,sBAA+C,WAAA;;EAE9D,KAAA,EAAO,IAAA,CAAK,YAAA;EAF4B;;;;EAOxC,QAAA,GACE,KAAA,WACA,OAAA;IACE,QAAA,EAAU,eAAA,CAAgB,YAAA;IAC1B,UAAA,EAAY,iBAAA,CAAkB,YAAA;IAC9B,KAAA,EAAO,YAAA,CAAa,YAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AA8D1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,kBAAA,wBACU,WAAA,GAAc,WAAA;EACnC,KAAA,EAAA,UAAA;EAAA;AAAA,GAGC,yBAAA,CAA0B,YAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fuf-stack/uniform",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.1",
|
|
4
4
|
"description": "fuf react form library",
|
|
5
5
|
"author": "Fröhlich ∧ Frei",
|
|
6
6
|
"homepage": "https://github.com/fuf-stack/pixels#readme",
|
|
@@ -181,5 +181,5 @@
|
|
|
181
181
|
"react": "19.2.3",
|
|
182
182
|
"react-dom": "19.2.3"
|
|
183
183
|
},
|
|
184
|
-
"gitHead": "
|
|
184
|
+
"gitHead": "c0e4cb595596d21b06e0d04d2403114d09e0c11e"
|
|
185
185
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldCard-38ZBBWyE.cjs","names":["useUniformField","AnimatePresence","motion","FieldValidationError","useUniformField","useFormContext","checkFieldIsRequired","FieldCardValidationError"],"sources":["../src/FieldCard/subcomponents/FieldCardValidationError.tsx","../src/FieldCard/FieldCard.tsx"],"sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport {\n AnimatePresence,\n motion,\n useReducedMotion,\n} from '@fuf-stack/pixel-motion';\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../../hooks/useUniformField';\nimport FieldValidationError from '../../partials/FieldValidationError/FieldValidationError';\n\nexport interface FieldCardValidationErrorProps {\n /** CSS class name for the error footer wrapper */\n className?: string;\n /** Error object from parent FieldCard (passed directly to avoid duplicate hook calls) */\n error?: FieldError[] | undefined;\n /** CSS class name for the error text (controls color based on invalid state) */\n errorTextClassName?: string;\n /** Field name */\n name: string;\n}\n\n/**\n * Renders validation errors in the footer of a FieldCard component.\n *\n * This component handles displaying field-level validation errors with proper\n * accessibility attributes and animates them in/out using Framer Motion.\n *\n * Note: Object-level errors (_errors) are always shown when they exist,\n * but the danger styling is controlled by the parent FieldCard based on\n * whether child fields have been touched.\n */\nconst FieldCardValidationError = ({\n className = undefined,\n error = undefined,\n errorTextClassName = undefined,\n name,\n}: FieldCardValidationErrorProps) => {\n const { getErrorMessageProps, getHelperWrapperProps, testId } =\n useUniformField({\n name,\n });\n\n // disable all animation if user prefers reduced motion\n const disableAnimation = useReducedMotion();\n\n // Always show object-level errors (_errors) when they exist\n // @ts-expect-error - error._errors exists but not typed\n const hasErrors = !!error?._errors;\n\n return (\n <AnimatePresence initial={!disableAnimation}>\n {hasErrors ? (\n <motion.div\n key=\"field-card-errors\"\n exit={disableAnimation ? undefined : { opacity: 0, height: 0 }}\n initial={disableAnimation ? false : { height: 0, opacity: 0 }}\n style={{ overflow: 'hidden' }}\n transition={{ duration: 0.4, ease: 'circOut' }}\n animate={\n disableAnimation ? undefined : { opacity: 1, height: 'auto' }\n }\n >\n <div\n {...getHelperWrapperProps()}\n className={cn(getHelperWrapperProps()?.className, className)}\n >\n <div\n {...getErrorMessageProps()}\n className={cn(\n getErrorMessageProps()?.className,\n errorTextClassName,\n )}\n >\n <FieldValidationError\n // @ts-expect-error - error._errors exists but not typed\n error={error._errors}\n testId={testId}\n />\n </div>\n </div>\n </motion.div>\n ) : null}\n </AnimatePresence>\n );\n};\n\nexport default FieldCardValidationError;\n","import type { TVClassName } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { checkFieldIsRequired, useFormContext } from '../hooks/useFormContext';\nimport { useUniformField } from '../hooks/useUniformField';\nimport FieldCardValidationError from './subcomponents/FieldCardValidationError';\n\n/**\n * Recursively checks if any child field has an error (regardless of touched state).\n * Returns true if at least one child has an error.\n */\nexport const hasAnyChildErrors = (\n errors: Record<string, unknown> | undefined,\n): boolean => {\n if (!errors) {\n return false;\n }\n\n return Object.keys(errors)\n .filter((key) => {\n return key !== '_errors';\n })\n .some((key) => {\n const errorValue = errors[key];\n if (errorValue === undefined) {\n return false;\n }\n // If errorValue is an array, it's a leaf field error\n if (Array.isArray(errorValue)) {\n return true;\n }\n // Recursively check nested objects\n if (typeof errorValue === 'object' && errorValue !== null) {\n return hasAnyChildErrors(errorValue as Record<string, unknown>);\n }\n return false;\n });\n};\n\n/**\n * Recursively checks if any child field is touched.\n * Returns true if at least one child is touched.\n */\nexport const hasAnyChildTouched = (\n touched: Record<string, unknown> | undefined,\n): boolean => {\n if (!touched) {\n return false;\n }\n\n return Object.keys(touched)\n .filter((key) => {\n return key !== '_errors';\n })\n .some((key) => {\n const touchedValue = touched[key];\n if (touchedValue === undefined) {\n return false;\n }\n // If touchedValue is truthy (boolean true), field is touched\n if (touchedValue === true) {\n return true;\n }\n // Recursively check nested objects\n if (typeof touchedValue === 'object' && touchedValue !== null) {\n return hasAnyChildTouched(touchedValue as Record<string, unknown>);\n }\n return false;\n });\n};\n\n/**\n * Recursively checks if any child field with an error is also touched.\n * Returns true if at least one touched child has an error.\n */\nexport const hasVisibleChildErrors = (\n errors: Record<string, unknown> | undefined,\n touched: Record<string, unknown> | undefined,\n): boolean => {\n if (!errors || !touched) {\n return false;\n }\n\n return Object.keys(errors)\n .filter((key) => {\n // Skip object-level errors (_errors) - those are handled separately\n return key !== '_errors';\n })\n .some((key) => {\n const errorValue = errors[key];\n const touchedValue = touched[key];\n\n // If this key doesn't exist in both errors and touched, skip\n if (errorValue === undefined || touchedValue === undefined) {\n return false;\n }\n\n // If errorValue is an array, it's a leaf field error\n if (Array.isArray(errorValue)) {\n // touchedValue being truthy means the field is touched\n return !!touchedValue;\n }\n\n // Recursively check nested objects\n if (typeof errorValue === 'object' && errorValue !== null) {\n return hasVisibleChildErrors(\n errorValue as Record<string, unknown>,\n touchedValue as Record<string, unknown>,\n );\n }\n\n return false;\n });\n};\n\nexport const fieldCardVariants = tv({\n slots: {\n /** base class for the field card wrapper */\n base: [\n // base styles\n 'overflow-hidden rounded-small border bg-content1',\n // animate border color change, respect reduced motion\n 'transition-colors duration-150 motion-reduce:transition-none',\n ],\n /** class for the label/header */\n label: [\n // override HeroUI label positioning and display\n 'pointer-events-auto! static! z-auto! block! w-full!',\n // reset any transforms or translations\n 'translate-x-0! translate-y-0! transform-none!',\n // card header styling - use text-medium (16px) for proper header size\n 'rounded-t-small border-b p-3 font-semibold text-medium',\n // animate border and text color change, respect reduced motion\n 'transition-colors duration-150 motion-reduce:transition-none',\n ],\n /** class for the content */\n content: [\n // same as p-3 of Card component\n 'p-3',\n // default grid for form components (see Grid component)\n 'grid gap-4',\n ],\n /** class for the error footer wrapper */\n errorFooter: [\n 'border-t',\n // force helper to be visible and add padding (pt-1 to compensate for inner content's top padding)\n 'block px-3 pb-2 pt-1',\n // animate border color change, respect reduced motion\n 'transition-colors duration-150 motion-reduce:transition-none',\n ],\n /** class for the error text (empty base, color controlled by variant) */\n errorText: [],\n },\n variants: {\n invalid: {\n true: {\n base: 'border-danger-200',\n label: 'border-danger-200 text-danger',\n errorFooter: 'border-danger-200',\n errorText: '!text-danger text-tiny',\n },\n false: {\n base: 'border-divider',\n label: 'border-divider text-foreground',\n errorFooter: 'border-divider',\n errorText: '!text-foreground-500 text-tiny',\n },\n },\n },\n defaultVariants: {\n invalid: false,\n },\n});\n\ntype ClassName = TVClassName<typeof fieldCardVariants>;\n\nexport interface FieldCardProps {\n /** Content to render inside the card */\n children: ReactNode;\n /** CSS class name */\n className?: ClassName;\n /** Label content for the card header */\n label: ReactNode;\n /** Field name for validation */\n name: string;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * FieldCard component - A card-styled container with label header and error footer\n *\n * Displays form field content in a card layout with:\n * - Label/title in the header\n * - Content in the body\n * - Validation errors in the footer\n * - Danger outline when validation errors exist\n */\nconst FieldCard = ({\n children,\n className: _className = undefined,\n name,\n ...uniformFieldProps\n}: FieldCardProps) => {\n const { error, getLabelProps, label } = useUniformField({\n name,\n ...uniformFieldProps,\n });\n\n const {\n control,\n formState: { touchedFields, submitCount },\n validation,\n } = useFormContext();\n\n // Check if any registered child field is required\n const validationInstance = validation?.baseInstance ?? validation?.instance;\n const registeredFields: string[] = Array.from(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (control as any)._names?.mount ?? [],\n );\n const childFieldPrefix = `${name}.`;\n const isRequired = validationInstance\n ? registeredFields\n .filter((f) => {\n return f.startsWith(childFieldPrefix);\n })\n .some((f) => {\n return checkFieldIsRequired(\n validationInstance,\n f.split('.').filter((k) => {\n return k !== '';\n }),\n );\n })\n : false;\n\n // Get touched state for this field's children by traversing the path\n const getNestedValue = (\n obj: Record<string, unknown> | undefined,\n path: string,\n ): Record<string, unknown> | undefined => {\n if (!obj) {\n return undefined;\n }\n const keys = path.split('.');\n let current: unknown = obj;\n keys.every((key) => {\n if (current && typeof current === 'object') {\n current = (current as Record<string, unknown>)[key];\n return true;\n }\n current = undefined;\n return false;\n });\n return current as Record<string, unknown> | undefined;\n };\n\n const fieldTouched = getNestedValue(\n touchedFields as Record<string, unknown>,\n name,\n );\n\n // Check for object-level errors (_errors)\n // @ts-expect-error - error._errors exists but not typed\n const hasObjectErrors = !!error?._errors;\n\n const errorRecord = error as unknown as Record<string, unknown>;\n\n // Check if any child field has errors (regardless of touched state)\n const hasChildErrors = hasAnyChildErrors(errorRecord);\n // Check if any child field is touched\n const isAnyChildTouched = hasAnyChildTouched(fieldTouched);\n\n // Show invalid styling (danger border/header/error text) when:\n // 1. Any child field has an error AND (it's touched OR form was submitted), OR\n // 2. Object-level _errors exists AND no child errors AND (any child touched OR submitted)\n const showInvalid =\n (hasChildErrors &&\n (hasVisibleChildErrors(errorRecord, fieldTouched) || submitCount > 0)) ||\n (hasObjectErrors &&\n !hasChildErrors &&\n (isAnyChildTouched || submitCount > 0));\n\n // className from slots\n const variants = fieldCardVariants({ invalid: showInvalid });\n const className = variantsToClassNames(variants, _className, 'base');\n\n return (\n <div className={className.base}>\n {/* card header with label */}\n {label ? (\n <div\n {...getLabelProps()}\n aria-level={3}\n // Override getLabelProps className to use our own invalid styling based on hasErrors,\n // not HeroUI's which is based on any child field being invalid\n className={className.label}\n role=\"heading\"\n >\n {label}\n {/* Manual asterisk: getLabelProps uses schema-required for the object itself,\n but FieldCard needs asterisk based on whether any CHILD field is required */}\n {isRequired ? (\n <span aria-hidden=\"true\" className=\"ml-0.5 text-danger\">\n *\n </span>\n ) : null}\n </div>\n ) : null}\n\n {/* card content */}\n <div className={className.content}>{children}</div>\n\n {/* card footer with validation errors - always show _errors, but danger styling controlled by showInvalid */}\n <FieldCardValidationError\n className={className.errorFooter}\n error={error}\n errorTextClassName={className.errorText}\n name={name}\n />\n </div>\n );\n};\n\nexport default FieldCard;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldCard-7XiCb6jZ.js","names":["FieldValidationError","FieldCardValidationError"],"sources":["../src/FieldCard/subcomponents/FieldCardValidationError.tsx","../src/FieldCard/FieldCard.tsx"],"sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport {\n AnimatePresence,\n motion,\n useReducedMotion,\n} from '@fuf-stack/pixel-motion';\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../../hooks/useUniformField';\nimport FieldValidationError from '../../partials/FieldValidationError/FieldValidationError';\n\nexport interface FieldCardValidationErrorProps {\n /** CSS class name for the error footer wrapper */\n className?: string;\n /** Error object from parent FieldCard (passed directly to avoid duplicate hook calls) */\n error?: FieldError[] | undefined;\n /** CSS class name for the error text (controls color based on invalid state) */\n errorTextClassName?: string;\n /** Field name */\n name: string;\n}\n\n/**\n * Renders validation errors in the footer of a FieldCard component.\n *\n * This component handles displaying field-level validation errors with proper\n * accessibility attributes and animates them in/out using Framer Motion.\n *\n * Note: Object-level errors (_errors) are always shown when they exist,\n * but the danger styling is controlled by the parent FieldCard based on\n * whether child fields have been touched.\n */\nconst FieldCardValidationError = ({\n className = undefined,\n error = undefined,\n errorTextClassName = undefined,\n name,\n}: FieldCardValidationErrorProps) => {\n const { getErrorMessageProps, getHelperWrapperProps, testId } =\n useUniformField({\n name,\n });\n\n // disable all animation if user prefers reduced motion\n const disableAnimation = useReducedMotion();\n\n // Always show object-level errors (_errors) when they exist\n // @ts-expect-error - error._errors exists but not typed\n const hasErrors = !!error?._errors;\n\n return (\n <AnimatePresence initial={!disableAnimation}>\n {hasErrors ? (\n <motion.div\n key=\"field-card-errors\"\n exit={disableAnimation ? undefined : { opacity: 0, height: 0 }}\n initial={disableAnimation ? false : { height: 0, opacity: 0 }}\n style={{ overflow: 'hidden' }}\n transition={{ duration: 0.4, ease: 'circOut' }}\n animate={\n disableAnimation ? undefined : { opacity: 1, height: 'auto' }\n }\n >\n <div\n {...getHelperWrapperProps()}\n className={cn(getHelperWrapperProps()?.className, className)}\n >\n <div\n {...getErrorMessageProps()}\n className={cn(\n getErrorMessageProps()?.className,\n errorTextClassName,\n )}\n >\n <FieldValidationError\n // @ts-expect-error - error._errors exists but not typed\n error={error._errors}\n testId={testId}\n />\n </div>\n </div>\n </motion.div>\n ) : null}\n </AnimatePresence>\n );\n};\n\nexport default FieldCardValidationError;\n","import type { TVClassName } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { checkFieldIsRequired, useFormContext } from '../hooks/useFormContext';\nimport { useUniformField } from '../hooks/useUniformField';\nimport FieldCardValidationError from './subcomponents/FieldCardValidationError';\n\n/**\n * Recursively checks if any child field has an error (regardless of touched state).\n * Returns true if at least one child has an error.\n */\nexport const hasAnyChildErrors = (\n errors: Record<string, unknown> | undefined,\n): boolean => {\n if (!errors) {\n return false;\n }\n\n return Object.keys(errors)\n .filter((key) => {\n return key !== '_errors';\n })\n .some((key) => {\n const errorValue = errors[key];\n if (errorValue === undefined) {\n return false;\n }\n // If errorValue is an array, it's a leaf field error\n if (Array.isArray(errorValue)) {\n return true;\n }\n // Recursively check nested objects\n if (typeof errorValue === 'object' && errorValue !== null) {\n return hasAnyChildErrors(errorValue as Record<string, unknown>);\n }\n return false;\n });\n};\n\n/**\n * Recursively checks if any child field is touched.\n * Returns true if at least one child is touched.\n */\nexport const hasAnyChildTouched = (\n touched: Record<string, unknown> | undefined,\n): boolean => {\n if (!touched) {\n return false;\n }\n\n return Object.keys(touched)\n .filter((key) => {\n return key !== '_errors';\n })\n .some((key) => {\n const touchedValue = touched[key];\n if (touchedValue === undefined) {\n return false;\n }\n // If touchedValue is truthy (boolean true), field is touched\n if (touchedValue === true) {\n return true;\n }\n // Recursively check nested objects\n if (typeof touchedValue === 'object' && touchedValue !== null) {\n return hasAnyChildTouched(touchedValue as Record<string, unknown>);\n }\n return false;\n });\n};\n\n/**\n * Recursively checks if any child field with an error is also touched.\n * Returns true if at least one touched child has an error.\n */\nexport const hasVisibleChildErrors = (\n errors: Record<string, unknown> | undefined,\n touched: Record<string, unknown> | undefined,\n): boolean => {\n if (!errors || !touched) {\n return false;\n }\n\n return Object.keys(errors)\n .filter((key) => {\n // Skip object-level errors (_errors) - those are handled separately\n return key !== '_errors';\n })\n .some((key) => {\n const errorValue = errors[key];\n const touchedValue = touched[key];\n\n // If this key doesn't exist in both errors and touched, skip\n if (errorValue === undefined || touchedValue === undefined) {\n return false;\n }\n\n // If errorValue is an array, it's a leaf field error\n if (Array.isArray(errorValue)) {\n // touchedValue being truthy means the field is touched\n return !!touchedValue;\n }\n\n // Recursively check nested objects\n if (typeof errorValue === 'object' && errorValue !== null) {\n return hasVisibleChildErrors(\n errorValue as Record<string, unknown>,\n touchedValue as Record<string, unknown>,\n );\n }\n\n return false;\n });\n};\n\nexport const fieldCardVariants = tv({\n slots: {\n /** base class for the field card wrapper */\n base: [\n // base styles\n 'overflow-hidden rounded-small border bg-content1',\n // animate border color change, respect reduced motion\n 'transition-colors duration-150 motion-reduce:transition-none',\n ],\n /** class for the label/header */\n label: [\n // override HeroUI label positioning and display\n 'pointer-events-auto! static! z-auto! block! w-full!',\n // reset any transforms or translations\n 'translate-x-0! translate-y-0! transform-none!',\n // card header styling - use text-medium (16px) for proper header size\n 'rounded-t-small border-b p-3 font-semibold text-medium',\n // animate border and text color change, respect reduced motion\n 'transition-colors duration-150 motion-reduce:transition-none',\n ],\n /** class for the content */\n content: [\n // same as p-3 of Card component\n 'p-3',\n // default grid for form components (see Grid component)\n 'grid gap-4',\n ],\n /** class for the error footer wrapper */\n errorFooter: [\n 'border-t',\n // force helper to be visible and add padding (pt-1 to compensate for inner content's top padding)\n 'block px-3 pb-2 pt-1',\n // animate border color change, respect reduced motion\n 'transition-colors duration-150 motion-reduce:transition-none',\n ],\n /** class for the error text (empty base, color controlled by variant) */\n errorText: [],\n },\n variants: {\n invalid: {\n true: {\n base: 'border-danger-200',\n label: 'border-danger-200 text-danger',\n errorFooter: 'border-danger-200',\n errorText: '!text-danger text-tiny',\n },\n false: {\n base: 'border-divider',\n label: 'border-divider text-foreground',\n errorFooter: 'border-divider',\n errorText: '!text-foreground-500 text-tiny',\n },\n },\n },\n defaultVariants: {\n invalid: false,\n },\n});\n\ntype ClassName = TVClassName<typeof fieldCardVariants>;\n\nexport interface FieldCardProps {\n /** Content to render inside the card */\n children: ReactNode;\n /** CSS class name */\n className?: ClassName;\n /** Label content for the card header */\n label: ReactNode;\n /** Field name for validation */\n name: string;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * FieldCard component - A card-styled container with label header and error footer\n *\n * Displays form field content in a card layout with:\n * - Label/title in the header\n * - Content in the body\n * - Validation errors in the footer\n * - Danger outline when validation errors exist\n */\nconst FieldCard = ({\n children,\n className: _className = undefined,\n name,\n ...uniformFieldProps\n}: FieldCardProps) => {\n const { error, getLabelProps, label } = useUniformField({\n name,\n ...uniformFieldProps,\n });\n\n const {\n control,\n formState: { touchedFields, submitCount },\n validation,\n } = useFormContext();\n\n // Check if any registered child field is required\n const validationInstance = validation?.baseInstance ?? validation?.instance;\n const registeredFields: string[] = Array.from(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (control as any)._names?.mount ?? [],\n );\n const childFieldPrefix = `${name}.`;\n const isRequired = validationInstance\n ? registeredFields\n .filter((f) => {\n return f.startsWith(childFieldPrefix);\n })\n .some((f) => {\n return checkFieldIsRequired(\n validationInstance,\n f.split('.').filter((k) => {\n return k !== '';\n }),\n );\n })\n : false;\n\n // Get touched state for this field's children by traversing the path\n const getNestedValue = (\n obj: Record<string, unknown> | undefined,\n path: string,\n ): Record<string, unknown> | undefined => {\n if (!obj) {\n return undefined;\n }\n const keys = path.split('.');\n let current: unknown = obj;\n keys.every((key) => {\n if (current && typeof current === 'object') {\n current = (current as Record<string, unknown>)[key];\n return true;\n }\n current = undefined;\n return false;\n });\n return current as Record<string, unknown> | undefined;\n };\n\n const fieldTouched = getNestedValue(\n touchedFields as Record<string, unknown>,\n name,\n );\n\n // Check for object-level errors (_errors)\n // @ts-expect-error - error._errors exists but not typed\n const hasObjectErrors = !!error?._errors;\n\n const errorRecord = error as unknown as Record<string, unknown>;\n\n // Check if any child field has errors (regardless of touched state)\n const hasChildErrors = hasAnyChildErrors(errorRecord);\n // Check if any child field is touched\n const isAnyChildTouched = hasAnyChildTouched(fieldTouched);\n\n // Show invalid styling (danger border/header/error text) when:\n // 1. Any child field has an error AND (it's touched OR form was submitted), OR\n // 2. Object-level _errors exists AND no child errors AND (any child touched OR submitted)\n const showInvalid =\n (hasChildErrors &&\n (hasVisibleChildErrors(errorRecord, fieldTouched) || submitCount > 0)) ||\n (hasObjectErrors &&\n !hasChildErrors &&\n (isAnyChildTouched || submitCount > 0));\n\n // className from slots\n const variants = fieldCardVariants({ invalid: showInvalid });\n const className = variantsToClassNames(variants, _className, 'base');\n\n return (\n <div className={className.base}>\n {/* card header with label */}\n {label ? (\n <div\n {...getLabelProps()}\n aria-level={3}\n // Override getLabelProps className to use our own invalid styling based on hasErrors,\n // not HeroUI's which is based on any child field being invalid\n className={className.label}\n role=\"heading\"\n >\n {label}\n {/* Manual asterisk: getLabelProps uses schema-required for the object itself,\n but FieldCard needs asterisk based on whether any CHILD field is required */}\n {isRequired ? (\n <span aria-hidden=\"true\" className=\"ml-0.5 text-danger\">\n *\n </span>\n ) : null}\n </div>\n ) : null}\n\n {/* card content */}\n <div className={className.content}>{children}</div>\n\n {/* card footer with validation errors - always show _errors, but danger styling controlled by showInvalid */}\n <FieldCardValidationError\n className={className.errorFooter}\n error={error}\n errorTextClassName={className.errorText}\n name={name}\n />\n </div>\n );\n};\n\nexport default FieldCard;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiCA,MAAM,4BAA4B,EAChC,YAAY,QACZ,QAAQ,QACR,qBAAqB,QACrB,WACmC;CACnC,MAAM,EAAE,sBAAsB,uBAAuB,WACnD,gBAAgB,EACd,MACD,CAAC;CAGJ,MAAM,mBAAmB,kBAAkB;CAI3C,MAAM,YAAY,CAAC,CAAC,OAAO;AAE3B,QACE,oBAAC;EAAgB,SAAS,CAAC;YACxB,YACC,oBAAC,OAAO;GAEN,MAAM,mBAAmB,SAAY;IAAE,SAAS;IAAG,QAAQ;IAAG;GAC9D,SAAS,mBAAmB,QAAQ;IAAE,QAAQ;IAAG,SAAS;IAAG;GAC7D,OAAO,EAAE,UAAU,UAAU;GAC7B,YAAY;IAAE,UAAU;IAAK,MAAM;IAAW;GAC9C,SACE,mBAAmB,SAAY;IAAE,SAAS;IAAG,QAAQ;IAAQ;aAG/D,oBAAC;IACC,GAAI,uBAAuB;IAC3B,WAAW,GAAG,uBAAuB,EAAE,WAAW,UAAU;cAE5D,oBAAC;KACC,GAAI,sBAAsB;KAC1B,WAAW,GACT,sBAAsB,EAAE,WACxB,mBACD;eAED,oBAACA;MAEC,OAAO,MAAM;MACL;OACR;MACE;KACF;KA1BF,oBA2BO,GACX;GACY;;AAItB,uCAAe;;;;;;;;AC3Ef,MAAa,qBACX,WACY;AACZ,KAAI,CAAC,OACH,QAAO;AAGT,QAAO,OAAO,KAAK,OAAO,CACvB,QAAQ,QAAQ;AACf,SAAO,QAAQ;GACf,CACD,MAAM,QAAQ;EACb,MAAM,aAAa,OAAO;AAC1B,MAAI,eAAe,OACjB,QAAO;AAGT,MAAI,MAAM,QAAQ,WAAW,CAC3B,QAAO;AAGT,MAAI,OAAO,eAAe,YAAY,eAAe,KACnD,QAAO,kBAAkB,WAAsC;AAEjE,SAAO;GACP;;;;;;AAON,MAAa,sBACX,YACY;AACZ,KAAI,CAAC,QACH,QAAO;AAGT,QAAO,OAAO,KAAK,QAAQ,CACxB,QAAQ,QAAQ;AACf,SAAO,QAAQ;GACf,CACD,MAAM,QAAQ;EACb,MAAM,eAAe,QAAQ;AAC7B,MAAI,iBAAiB,OACnB,QAAO;AAGT,MAAI,iBAAiB,KACnB,QAAO;AAGT,MAAI,OAAO,iBAAiB,YAAY,iBAAiB,KACvD,QAAO,mBAAmB,aAAwC;AAEpE,SAAO;GACP;;;;;;AAON,MAAa,yBACX,QACA,YACY;AACZ,KAAI,CAAC,UAAU,CAAC,QACd,QAAO;AAGT,QAAO,OAAO,KAAK,OAAO,CACvB,QAAQ,QAAQ;AAEf,SAAO,QAAQ;GACf,CACD,MAAM,QAAQ;EACb,MAAM,aAAa,OAAO;EAC1B,MAAM,eAAe,QAAQ;AAG7B,MAAI,eAAe,UAAa,iBAAiB,OAC/C,QAAO;AAIT,MAAI,MAAM,QAAQ,WAAW,CAE3B,QAAO,CAAC,CAAC;AAIX,MAAI,OAAO,eAAe,YAAY,eAAe,KACnD,QAAO,sBACL,YACA,aACD;AAGH,SAAO;GACP;;AAGN,MAAa,oBAAoB,GAAG;CAClC,OAAO;EAEL,MAAM,CAEJ,oDAEA,+DACD;EAED,OAAO;GAEL;GAEA;GAEA;GAEA;GACD;EAED,SAAS,CAEP,OAEA,aACD;EAED,aAAa;GACX;GAEA;GAEA;GACD;EAED,WAAW,EAAE;EACd;CACD,UAAU,EACR,SAAS;EACP,MAAM;GACJ,MAAM;GACN,OAAO;GACP,aAAa;GACb,WAAW;GACZ;EACD,OAAO;GACL,MAAM;GACN,OAAO;GACP,aAAa;GACb,WAAW;GACZ;EACF,EACF;CACD,iBAAiB,EACf,SAAS,OACV;CACF,CAAC;;;;;;;;;;AA0BF,MAAM,aAAa,EACjB,UACA,WAAW,aAAa,QACxB,MACA,GAAG,wBACiB;CACpB,MAAM,EAAE,OAAO,eAAe,UAAU,gBAAgB;EACtD;EACA,GAAG;EACJ,CAAC;CAEF,MAAM,EACJ,SACA,WAAW,EAAE,eAAe,eAC5B,eACE,gBAAgB;CAGpB,MAAM,qBAAqB,YAAY,gBAAgB,YAAY;CACnE,MAAM,mBAA6B,MAAM,KAEtC,QAAgB,QAAQ,SAAS,EAAE,CACrC;CACD,MAAM,mBAAmB,GAAG,KAAK;CACjC,MAAM,aAAa,qBACf,iBACG,QAAQ,MAAM;AACb,SAAO,EAAE,WAAW,iBAAiB;GACrC,CACD,MAAM,MAAM;AACX,SAAO,qBACL,oBACA,EAAE,MAAM,IAAI,CAAC,QAAQ,MAAM;AACzB,UAAO,MAAM;IACb,CACH;GACD,GACJ;CAGJ,MAAM,kBACJ,KACA,SACwC;AACxC,MAAI,CAAC,IACH;EAEF,MAAM,OAAO,KAAK,MAAM,IAAI;EAC5B,IAAI,UAAmB;AACvB,OAAK,OAAO,QAAQ;AAClB,OAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,cAAW,QAAoC;AAC/C,WAAO;;AAET,aAAU;AACV,UAAO;IACP;AACF,SAAO;;CAGT,MAAM,eAAe,eACnB,eACA,KACD;CAID,MAAM,kBAAkB,CAAC,CAAC,OAAO;CAEjC,MAAM,cAAc;CAGpB,MAAM,iBAAiB,kBAAkB,YAAY;CAErD,MAAM,oBAAoB,mBAAmB,aAAa;CAc1D,MAAM,YAAY,qBADD,kBAAkB,EAAE,SAPlC,mBACE,sBAAsB,aAAa,aAAa,IAAI,cAAc,MACpE,mBACC,CAAC,mBACA,qBAAqB,cAAc,IAGmB,CAAC,EACX,YAAY,OAAO;AAEpE,QACE,qBAAC;EAAI,WAAW,UAAU;;GAEvB,QACC,qBAAC;IACC,GAAI,eAAe;IACnB,cAAY;IAGZ,WAAW,UAAU;IACrB,MAAK;eAEJ,OAGA,aACC,oBAAC;KAAK,eAAY;KAAO,WAAU;eAAqB;MAEjD,GACL;KACA,GACJ;GAGJ,oBAAC;IAAI,WAAW,UAAU;IAAU;KAAe;GAGnD,oBAACC;IACC,WAAW,UAAU;IACd;IACP,oBAAoB,UAAU;IACxB;KACN;;GACE;;AAIV,wBAAe"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormContext-C2_WMi_v.d.ts","names":[],"sources":["../src/Form/subcomponents/FormContext.tsx"],"sourcesContent":[],"mappings":";;;;;AAsBiB,UAAA,iBAAA,CAAiB;EAUtB;;;;;;;;KAAA,uEACC,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormContext-Dl7KL_wl.d.cts","names":[],"sources":["../src/Form/subcomponents/FormContext.tsx"],"sourcesContent":[],"mappings":";;;;;AAsBiB,UAAA,iBAAA,CAAiB;EAUtB;;;;;;;;KAAA,uEACC,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-796vjEop.d.ts","names":[],"sources":["../src/Radios/Radios.tsx"],"sourcesContent":[],"mappings":";;;;;cAaa,qCAAc;;mBAgBzB,oBAAA,CAAA,UAAA;MAhBW,IAAA,CAAA,iCAgBX;MAAA,KAAA,CAAA,iCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAhByB;EAAA,KAAA,EAAA,MAAA;EAkBtB,OAAA,EAAA,MAAY;AAAU,CAAA,EAAA,SACtB,EAAA;EAEY,CAAA,GAAA,EAAA,MAAA,CAAA,EAAW;IAaX,CAAA,GAAA,EAAA,MAAY,CAAA,oCAAA;MAIf,IAAA,CAAA,iCAAA;MAMJ,KAAA,CAAA,iCAAA;MAIC,OAAA,CAAA,iCAAA;MAd0B,QAAA,CAAA,iCAAA;MAAY,WAAA,CAAA,iCAAA;MAsB3C,eAkFL,CAAA,iCAAA;MAlFe,SAAA,CAAA,iCAAA;MAAA,gBAAA,CAAA,iCAAA;MAAA,WAAA,CAAA,iCAAA;IAAA,CAAA;EAMb,CAAA;CAAc,GAAA,CAAA,CAAA,EAAA;EA4EhB,IAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;KAxHI,YAAA,GAAe,eAAe;KAC9B,SAAA,GAAY,mBAAmB;UAEnB,WAAA;;;;UAIP;;SAED;;;;;;UAOQ,WAAA,SAAoB;;;;cAIvB;;;;;;UAMJ;;;;WAIC;;;;;;;cAQL;;;;;;GAMH,gBAAc"}
|
package/dist/index-B62CWrcm.d.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { TVClassName, TVProps } from "@fuf-stack/pixel-utils";
|
|
2
|
-
import { ReactNode } from "react";
|
|
3
|
-
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
4
|
-
import * as tailwind_variants30 from "tailwind-variants";
|
|
5
|
-
|
|
6
|
-
//#region src/TextArea/TextArea.d.ts
|
|
7
|
-
declare const textAreaVariants: tailwind_variants30.TVReturnType<{
|
|
8
|
-
[key: string]: {
|
|
9
|
-
[key: string]: tailwind_variants30.ClassValue | {
|
|
10
|
-
base?: tailwind_variants30.ClassValue;
|
|
11
|
-
input?: tailwind_variants30.ClassValue;
|
|
12
|
-
inputWrapper?: tailwind_variants30.ClassValue;
|
|
13
|
-
clearButton?: tailwind_variants30.ClassValue;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
} | {
|
|
17
|
-
[x: string]: {
|
|
18
|
-
[x: string]: tailwind_variants30.ClassValue | {
|
|
19
|
-
base?: tailwind_variants30.ClassValue;
|
|
20
|
-
input?: tailwind_variants30.ClassValue;
|
|
21
|
-
inputWrapper?: tailwind_variants30.ClassValue;
|
|
22
|
-
clearButton?: tailwind_variants30.ClassValue;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
} | {}, {
|
|
26
|
-
/** wrapper around the whole input */
|
|
27
|
-
base: string;
|
|
28
|
-
/** clear button */
|
|
29
|
-
clearButton: string;
|
|
30
|
-
/** actual input element */
|
|
31
|
-
input: string;
|
|
32
|
-
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
33
|
-
inputWrapper: string;
|
|
34
|
-
}, undefined, {
|
|
35
|
-
[key: string]: {
|
|
36
|
-
[key: string]: tailwind_variants30.ClassValue | {
|
|
37
|
-
base?: tailwind_variants30.ClassValue;
|
|
38
|
-
input?: tailwind_variants30.ClassValue;
|
|
39
|
-
inputWrapper?: tailwind_variants30.ClassValue;
|
|
40
|
-
clearButton?: tailwind_variants30.ClassValue;
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
} | {}, {
|
|
44
|
-
/** wrapper around the whole input */
|
|
45
|
-
base: string;
|
|
46
|
-
/** clear button */
|
|
47
|
-
clearButton: string;
|
|
48
|
-
/** actual input element */
|
|
49
|
-
input: string;
|
|
50
|
-
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
51
|
-
inputWrapper: string;
|
|
52
|
-
}, tailwind_variants30.TVReturnType<unknown, {
|
|
53
|
-
/** wrapper around the whole input */
|
|
54
|
-
base: string;
|
|
55
|
-
/** clear button */
|
|
56
|
-
clearButton: string;
|
|
57
|
-
/** actual input element */
|
|
58
|
-
input: string;
|
|
59
|
-
/** inner wrapper (HeroUI inputWrapper slot) */
|
|
60
|
-
inputWrapper: string;
|
|
61
|
-
}, undefined, unknown, unknown, undefined>>;
|
|
62
|
-
type VariantProps = TVProps<typeof textAreaVariants>;
|
|
63
|
-
type ClassName = TVClassName<typeof textAreaVariants>;
|
|
64
|
-
interface TextAreaProps extends VariantProps {
|
|
65
|
-
/** Custom aria-label for accessibility. If not provided, falls back to field name when no visible label exists */
|
|
66
|
-
ariaLabel?: string;
|
|
67
|
-
/** Child components. The content of the textarea. */
|
|
68
|
-
children?: ReactNode;
|
|
69
|
-
/** CSS class name */
|
|
70
|
-
className?: ClassName;
|
|
71
|
-
/** debounce delay in milliseconds for form state updates (default: 300ms) */
|
|
72
|
-
debounceDelay?: number;
|
|
73
|
-
/** Determines if the TextArea is disabled or not. */
|
|
74
|
-
disabled?: boolean;
|
|
75
|
-
/** Label displayed above the TextArea. */
|
|
76
|
-
label?: ReactNode;
|
|
77
|
-
/** Name the TextArea is registered at in HTML forms (react-hook-form). */
|
|
78
|
-
name: string;
|
|
79
|
-
/** placeholder for the textArea content. */
|
|
80
|
-
placeholder?: string;
|
|
81
|
-
/** Id to grab element in internal tests. */
|
|
82
|
-
testId?: string;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* TextArea component based on [HeroUI TextArea](https://www.heroui.com//docs/components/textarea)
|
|
86
|
-
*/
|
|
87
|
-
declare const TextArea: ({
|
|
88
|
-
children,
|
|
89
|
-
className: _className,
|
|
90
|
-
debounceDelay,
|
|
91
|
-
name,
|
|
92
|
-
placeholder,
|
|
93
|
-
...uniformFieldProps
|
|
94
|
-
}: TextAreaProps) => react_jsx_runtime2.JSX.Element;
|
|
95
|
-
//#endregion
|
|
96
|
-
export { TextAreaProps as n, TextArea as t };
|
|
97
|
-
//# sourceMappingURL=index-B62CWrcm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-B62CWrcm.d.ts","names":[],"sources":["../src/TextArea/TextArea.tsx"],"sourcesContent":[],"mappings":";;;;;;cAWa,sCAAgB;;mBAW3B,mBAAA,CAAA,UAAA;;MAXW,KAAA,CAAA,gCAWX;MAAA,YAAA,CAAA,gCAAA;;;;;;;;;;;;;;;;;EAX2B,WAAA,EAAA,MAAA;EAaxB;EACA,KAAA,EAAA,MAAS;EAEG;EAIJ,YAAA,EAAA,MAAA;CAEC,EAAA,SAAA,EAAA;EAMJ,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA;IAZ6B,CAAA,GAAA,EAAA,MAAA,CAAA,mCAAA;MAAY,IAAA,CAAA,gCAAA;MAwB7C,KAsEL,CAAA,gCAAA;MAtEiB,YAAA,CAAA,gCAAA;MAAA,WAAA,CAAA,gCAAA;IAAA,CAAA;EAAA,CAAA;CAAA,GAAA,CAAA,CAAA,EAAA;EAOf;EAAa,IAAA,EAAA,MAAA;EA+Df;;;;;;;;;;;;;;;;KAjGI,YAAA,GAAe,eAAe;KAC9B,SAAA,GAAY,mBAAmB;UAEnB,aAAA,SAAsB;;;;aAI1B;;cAEC;;;;;;UAMJ;;;;;;;;;;;cAYJ;;aAAY;;;;;GAOf,kBAAa,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BD9y--o2.d.cts","names":[],"sources":["../src/SwitchBox/SwitchBox.tsx"],"sourcesContent":[],"mappings":";;;;;;;cAaa,mBA4CX,oBAAA,CA5C4B;;;;IAAjB,CAAA;EA8CR,CAAA;EAEY,SAAA,EAAA;IAEH,IAAA,EAAA;MAEE,GAAA,EAAA,MAAA;MAIP,KAAA,EAAA,MAAA;IAEC,CAAA;EAUI,CAAA;EAAe,IAAA,EAAA;IAMvB,EAAA,EAAA;MAAa,GAAA,EAAA,MAAA;MAAA,WAAA,EAAA,MAAA;MAAA,KAAA,EAAA,MAAA;IAAA,CAAA;IAAA,EAAA,EAAA;MAAA,GAAA,EAAA,MAAA;MAQhB,WAAA,EAAA,MAAA;MAAc,KAAA,EAAA,MAAA;IAiJhB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAvLC,oBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEG,SAAA,GAAY,mBAAmB;UAEnB,cAAA;;cAEH;;gBAEE;;;;SAIP;;UAEC;;;;;;;;;cAUI;;;;;cAMR;;;;;;;;GAQH,mBAAc,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BFLKkqA3.d.ts","names":[],"sources":["../src/Grid/Grid.tsx"],"sourcesContent":[],"mappings":";;;;UAIiB,SAAA;;aAEJ;EAFI;EAYX,SAUL,CAAA,EAAA,MAAA;EAVa;EAAA,MAAA,CAAA,EAAA,MAAA;;;;;cAAR;;;;GAIH,cAAS,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BV_YDI6g.d.ts","names":[],"sources":["../src/FieldArray/subcomponents/FieldArrayElement.tsx","../src/FieldArray/types.ts","../src/FieldArray/FieldArray.tsx"],"sourcesContent":[],"mappings":";;;;;;UAiBiB,wBAAA;;;;EAAA,SAAA,EAAA,GAAA,GAAA,IAAA;;;;ECZZ,MAAA,EAAA,GAAA,GAAA,IAAY;AAAU;;;KAAtB,YAAA,GAAe,eAAe;KAC9B,SAAA,GAAY,mBAAmB;ADWpC;KCRY,0BAAA;;;EAJP;EACA,MAAA,EAAA,MAAS;EAGF;EAaK,OAAA,EAPN,wBAOwB;EASlB;EAIL,IAAA,EAAA,MAAA;EAEE;EAOU,MAAA,EAAA,MAAA;CAId,EAAA,GA5BJ,GAAA,CAAI,OA4BA;AAjB+B,UATxB,kBAAA,CASwB;EAAoB;EAAY,SAAA,CAAA,EAAA,OAAA;;;;EClB5D,QAAA,CAAA,EAAA,OAAA;AA0FV;AAKiB,UD7EH,eAAA,SAAwB,kBC6ErB,ED7EyC,YC6EzC,CAAA;EAAA;EAAA,gBAAA,CAAA,EAAA,MAAA;EAAA;EAAA,QAAA,EDzER,0BCyEQ;EAAA;EAAA,SAAA,CAAA,EDvEN,SCuEM;EAAA,mBAAA,CAAA,EAAA,OAAA;EAAA,mBAAA,CAAA,EDhEI,aCgEJ,CAAA,cAAA,CAAA;EAAA;EAAA,IAAA,CAAA,EAAA,OAAA;EAajB;EAAe,KAAA,CAAA,EDzER,SCyEQ;EAqHjB;;;;;;;;;cAjOY,oBA0FX,mBAAA,CA1F6B;;;;;MFId,cAAA,EAAA,MAAwB;;;;ECZpC;EACA,IAAA,EAAA,MAAS,EAAA;EAGF;EAaK,iBAAA,EAAA,MAAkB,EAAA;EASlB;EAIL,YAAA,EAAA,MAAA,EAAA;EAEE;EAOU,iBAAA,EAAA,MAAA,EAAA;EAId;EAjB+B,KAAA,EAAA,MAAA,EAAA;EAAoB;EAAY,IAAA,EAAA,MAAA,EAAA;;;;EClB5D,QAAA,EAAA,MAAA,EAAA;EA+FP;EAAc,aAAA,EAAA,MAAA,EAAA;EAAA;EAAA,YAAA,EAAA,MAAA,EAAA;EAAA;EAAA,cAAA,EAAA,MAAA,EAAA;CAAA,EAAA,SAAA,EAAA;EAAA,QAAA,EAAA;IAAA,KAAA,EAAA;MAAA,iBAAA,EAAA,MAAA;MAAA,YAAA,EAAA,MAAA;MAAA,cAAA,EAAA,MAAA;IAajB,CAAA;EAAe,CAAA;CAqHjB,EAAA;;;;;;;;;;;;;;;;;;;;;;;GAvIC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKI;;;aAAc;;uBAAA;;;;;;;;GAajB,oBAAe,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BW9EUWZE.d.cts","names":[],"sources":["../src/Grid/Grid.tsx"],"sourcesContent":[],"mappings":";;;;UAIiB,SAAA;;aAEJ;EAFI;EAYX,SAUL,CAAA,EAAA,MAAA;EAVa;EAAA,MAAA,CAAA,EAAA,MAAA;;;;;cAAR;;;;GAIH,cAAS,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-B_1td56I.d.ts","names":[],"sources":["../src/SwitchBox/SwitchBox.tsx"],"sourcesContent":[],"mappings":";;;;;;;cAaa,mBA4CX,oBAAA,CA5C4B;;;;IAAjB,CAAA;EA8CR,CAAA;EAEY,SAAA,EAAA;IAEH,IAAA,EAAA;MAEE,GAAA,EAAA,MAAA;MAIP,KAAA,EAAA,MAAA;IAEC,CAAA;EAUI,CAAA;EAAe,IAAA,EAAA;IAMvB,EAAA,EAAA;MAAa,GAAA,EAAA,MAAA;MAAA,WAAA,EAAA,MAAA;MAAA,KAAA,EAAA,MAAA;IAAA,CAAA;IAAA,EAAA,EAAA;MAAA,GAAA,EAAA,MAAA;MAQhB,WAAA,EAAA,MAAA;MAAc,KAAA,EAAA,MAAA;IAiJhB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAvLC,oBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEG,SAAA,GAAY,mBAAmB;UAEnB,cAAA;;cAEH;;gBAEE;;;;SAIP;;UAEC;;;;;;;;;cAUI;;;;;cAMR;;;;;;;;GAQH,mBAAc,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BgXr1v45.d.cts","names":[],"sources":["../src/Radios/Radios.tsx"],"sourcesContent":[],"mappings":";;;;;cAaa,qCAAc;;mBAgBzB,oBAAA,CAAA,UAAA;MAhBW,IAAA,CAAA,iCAgBX;MAAA,KAAA,CAAA,iCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAhByB;EAAA,KAAA,EAAA,MAAA;EAkBtB,OAAA,EAAA,MAAY;AAAU,CAAA,EAAA,SACtB,EAAA;EAEY,CAAA,GAAA,EAAA,MAAA,CAAA,EAAW;IAaX,CAAA,GAAA,EAAA,MAAY,CAAA,oCAAA;MAIf,IAAA,CAAA,iCAAA;MAMJ,KAAA,CAAA,iCAAA;MAIC,OAAA,CAAA,iCAAA;MAd0B,QAAA,CAAA,iCAAA;MAAY,WAAA,CAAA,iCAAA;MAsB3C,eAkFL,CAAA,iCAAA;MAlFe,SAAA,CAAA,iCAAA;MAAA,gBAAA,CAAA,iCAAA;MAAA,WAAA,CAAA,iCAAA;IAAA,CAAA;EAMb,CAAA;CAAc,GAAA,CAAA,CAAA,EAAA;EA4EhB,IAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;KAxHI,YAAA,GAAe,eAAe;KAC9B,SAAA,GAAY,mBAAmB;UAEnB,WAAA;;;;UAIP;;SAED;;;;;;UAOQ,WAAA,SAAoB;;;;cAIvB;;;;;;UAMJ;;;;WAIC;;;;;;;cAQL;;;;;;GAMH,gBAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Bo79xzb4.d.cts","names":[],"sources":["../src/Form/Form.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAYiB,SAAA;;YAEL,YAAY;EAFP;EAEL,SAAA,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA;EAAY;EAId,KAAA,CAAA,EAAA,iBAAA;EAEQ;EAIQ,aAAA,CAAA,EAJR,WAIQ;EAAd;EAIG,IAAA,CAAA,EAAA,MAAA;EAAY;EAQrB,QAwCL,EApDW,aAoDX,CApDyB,WAoDzB,CAAA;EAxCa;EAAA,MAAA,CAAA,EAAA,MAAA;EAAA;EAAA,UAAA,CAAA,EARC,YAQD;EAAA;EAAA,iBAAA,CAAA,EAAA,UAAA,GAAA,QAAA,GAAA,UAAA,GAAA,WAAA,GAAA,KAAA;;;;;cAAR,IAUM,EAAA,CAAA;EAAA,QAAA;EAAA,SAAA;EAAA,KAAA;EAAA,aAAA;EAAA,IAAA;EAAA,QAAA;EAAA,MAAA;EAAA,UAAA;EAAA;AAAA,CAAA,EAAT,SAAS,EAAA,GAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C3CvgmJw.d.ts","names":[],"sources":["../src/RadioTabs/RadioTabs.tsx"],"sourcesContent":[],"mappings":";;;;;;cAgBa,mBAsCX,oBAAA,CAtC4B;;;MAAjB,IAAA,EAAA,MAsCX;MAEG,OAAY,EAAA,MAAA;MACZ,UAAS,EAAA,MAAsB,EAAA;IAEnB,CAAA;EAEL,CAAA;EAIF,SAAA,EAAA;IAED,IAAA,EAAA;MAAS,UAAA,EAAA,MAAA;IAOD,CAAA;EAA4B,CAAA;EAI/B,SAAA,EAAA;IAQJ,IAAA,EAAA;MAIC,UAAA,EAAA,MAAA;IAIC,CAAA;EApB4B,CAAA;CAAI,EAAA;EA2BtC,IAAA,EAAA,MAiIL;EAjIkB,MAAA,EAAA,MAAA;EAAA,KAAA,EAAA,MAAA;EAAA,GAAA,EAAA,MAAA;EAAA,OAAA,EAAA,MAAA;EAAA,UAAA,EAAA,MAAA;EAAA,OAAA,EAAA,MAAA;EAQhB,QAAA,EAAA,MAAA;EAAiB,UAAA,EAAA,MAAA;EAyHnB,OAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAhLC,oBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEG,YAAA,GAAe,eAAe;KAC9B,SAAA,GAAY,mBAAmB;UAEnB,eAAA;;YAEL;;;;UAIF;;SAED;;;;;;UAOQ,cAAA,SAAuB,KAAK;;;;cAI/B;;;;;;;;UAQJ;;;;WAIC;;;;YAIC;;;;;;cAON;;;;;;;;GAQH,mBAAiB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C4-1V8jn.d.ts","names":[],"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx"],"sourcesContent":[],"mappings":";;;;UASiB,yBAAA;;;EAAA;EAYX,KAAA,CAAA,EARI,UAQJ,EAAA;EAAwB;EAAA,MAAA,EAAA,MAAA;;;;;cAAxB;;;;GAIH,8BAAyB,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CB00FCyi.d.ts","names":[],"sources":["../src/Input/Input.tsx"],"sourcesContent":[],"mappings":";;;;;;;cAca,mCAAa;;mBAWxB,mBAAA,CAAA,UAAA;;MAXW,KAAA,CAAA,gCAWX;MAAA,YAAA,CAAA,gCAAA;;;;;;;;;;;;;;;;;EAXwB,WAAA,EAAA,MAAA;EAarB;EACA,KAAA,EAAA,MAAS;EAEG;EAIH,YAAA,EAAA,MAAA;CAQC,EAAA,SAAA,EAAA;EAEL,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA;IAUO,CAAA,GAAA,EAAA,MAAA,CAAA,mCAAA;MAIH,IAAA,CAAA,gCAAA;MA5BsB,KAAA,CAAA,gCAAA;MAAY,YAAA,CAAA,gCAAA;MAyK/C,WAAA,CAAA,gCAAA;IArIc,CAAA;EAAA,CAAA;CAAA,GAAA,CAAA,CAAA,EAAA;EAAA;EAAA,IAAA,EAAA,MAAA;EAAA;EAAA,WAAA,EAAA,MAAA;EAAA;EAAA,KAAA,EAAA,MAAA;EAAA;EAYZ,YAAA,EAAA,MAAA;CAAU,kCAAA,CAAA,OAAA,EAAA;EAyHZ;;;;;;;;;KA5KI,YAAA,GAAe,eAAe;KAC9B,SAAA,GAAY,mBAAmB;UAEnB,UAAA,SAAmB;;;;cAItB;;;;;;;;eAQC;;UAEL;;;;;;;;;;iBAUO;;;;cAIH;;;;;;;cAQR;aAAS;;;;;;;;;;;GAYZ,eAAU,kBAAA,CAAA,GAAA,CAAA"}
|