@fuf-stack/uniform 1.19.3 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/Checkboxes/index.d.cts +2 -2
  2. package/dist/Checkboxes/index.d.ts +2 -2
  3. package/dist/Checkboxes-D1hppxDE.js.map +1 -1
  4. package/dist/Checkboxes-DegQ22uN.cjs.map +1 -1
  5. package/dist/FieldArray/index.d.cts +2 -2
  6. package/dist/FieldArray/index.d.ts +2 -2
  7. package/dist/FieldArray-BVlqxHnR.cjs.map +1 -1
  8. package/dist/FieldArray-CcQ-Re3s.js.map +1 -1
  9. package/dist/FieldCard/index.d.cts +2 -2
  10. package/dist/FieldCard/index.d.ts +2 -2
  11. package/dist/FieldCard-Bkp8PHJw.cjs.map +1 -1
  12. package/dist/FieldCard-DynQT-O7.js.map +1 -1
  13. package/dist/FieldCopyTestIdButton-Dpmo0uBV.js.map +1 -1
  14. package/dist/FieldCopyTestIdButton-DrUzXwTo.cjs.map +1 -1
  15. package/dist/FieldValidationError-8H8LxDjk.cjs.map +1 -1
  16. package/dist/FieldValidationError-ktTyyyip.js.map +1 -1
  17. package/dist/Form/index.d.cts +2 -2
  18. package/dist/Form/index.d.ts +2 -2
  19. package/dist/Form-Dqa1b7Y7.cjs.map +1 -1
  20. package/dist/Form-Wzy7pBVt.js.map +1 -1
  21. package/dist/{FormContext-BuG3xZFe.d.cts → FormContext-1zBxAjr_.d.cts} +1 -1
  22. package/dist/FormContext-1zBxAjr_.d.cts.map +1 -0
  23. package/dist/FormContext-BrY1FQYR.cjs.map +1 -1
  24. package/dist/FormContext-CLfMWHQM.js.map +1 -1
  25. package/dist/{FormContext-B4KQxdl7.d.ts → FormContext-DjXw7wN6.d.ts} +1 -1
  26. package/dist/FormContext-DjXw7wN6.d.ts.map +1 -0
  27. package/dist/Grid/index.d.cts +2 -2
  28. package/dist/Grid/index.d.ts +2 -2
  29. package/dist/Grid-Bzyi97Cx.js.map +1 -1
  30. package/dist/Grid-DdYQQ_UM.cjs.map +1 -1
  31. package/dist/Input/index.d.cts +2 -2
  32. package/dist/Input/index.d.ts +2 -2
  33. package/dist/Input-BrwUwIYg.cjs.map +1 -1
  34. package/dist/Input-fZn0x5c3.js.map +1 -1
  35. package/dist/RadioBoxes/index.d.cts +2 -2
  36. package/dist/RadioBoxes/index.d.ts +2 -2
  37. package/dist/RadioBoxes-BR3X986V.js.map +1 -1
  38. package/dist/RadioBoxes-Cim3InDW.cjs.map +1 -1
  39. package/dist/RadioTabs/index.d.cts +2 -2
  40. package/dist/RadioTabs/index.d.ts +2 -2
  41. package/dist/RadioTabs-CsVqYCE9.js.map +1 -1
  42. package/dist/RadioTabs-t-x2XnuI.cjs.map +1 -1
  43. package/dist/Radios/index.d.cts +2 -2
  44. package/dist/Radios/index.d.ts +2 -2
  45. package/dist/Radios-CYwW3bZa.js.map +1 -1
  46. package/dist/Radios-CjEFdyD6.cjs.map +1 -1
  47. package/dist/Select/index.d.cts +2 -2
  48. package/dist/Select/index.d.ts +2 -2
  49. package/dist/Select-BEed8xan.cjs.map +1 -1
  50. package/dist/Select-BILyyM7Z.js.map +1 -1
  51. package/dist/Slider/index.d.cts +2 -2
  52. package/dist/Slider/index.d.ts +2 -2
  53. package/dist/Slider-CFYP86ku.cjs.map +1 -1
  54. package/dist/Slider-DxRcLu-j.js.map +1 -1
  55. package/dist/SubmitButton/index.d.cts +2 -2
  56. package/dist/SubmitButton/index.d.ts +2 -2
  57. package/dist/SubmitButton-Bu3NNFyt.js.map +1 -1
  58. package/dist/SubmitButton-D7xacDyS.cjs.map +1 -1
  59. package/dist/Switch/index.d.cts +2 -2
  60. package/dist/Switch/index.d.ts +2 -2
  61. package/dist/Switch-CMpXZdLc.js.map +1 -1
  62. package/dist/Switch-Dt9TGQ8d.cjs.map +1 -1
  63. package/dist/SwitchBox/index.d.cts +2 -2
  64. package/dist/SwitchBox/index.d.ts +2 -2
  65. package/dist/SwitchBox-Cg7NPfp_.js.map +1 -1
  66. package/dist/SwitchBox-DMPp_Ed-.cjs.map +1 -1
  67. package/dist/TextArea/index.d.cts +2 -2
  68. package/dist/TextArea/index.d.ts +2 -2
  69. package/dist/TextArea-BDNtxp9N.cjs.map +1 -1
  70. package/dist/TextArea-DMMxpDBl.js.map +1 -1
  71. package/dist/helpers/index.cjs.map +1 -1
  72. package/dist/helpers/index.d.cts.map +1 -1
  73. package/dist/helpers/index.d.ts.map +1 -1
  74. package/dist/helpers/index.js.map +1 -1
  75. package/dist/hooks/useClientValidation/index.d.cts +1 -1
  76. package/dist/hooks/useClientValidation/index.d.ts +1 -1
  77. package/dist/hooks/useController/index.d.cts +1 -1
  78. package/dist/hooks/useController/index.d.ts +1 -1
  79. package/dist/hooks/useFormContext/index.d.cts +1 -1
  80. package/dist/hooks/useFormContext/index.d.ts +1 -1
  81. package/dist/hooks/useInput/index.d.cts +1 -1
  82. package/dist/hooks/useInput/index.d.ts +1 -1
  83. package/dist/hooks/useInputValueDebounce/index.cjs.map +1 -1
  84. package/dist/hooks/useInputValueDebounce/index.d.cts +1 -1
  85. package/dist/hooks/useInputValueDebounce/index.d.ts +1 -1
  86. package/dist/hooks/useInputValueDebounce/index.js.map +1 -1
  87. package/dist/hooks/useInputValueTransform/index.d.cts +1 -1
  88. package/dist/hooks/useInputValueTransform/index.d.ts +1 -1
  89. package/dist/hooks/useUniformField/index.cjs.map +1 -1
  90. package/dist/hooks/useUniformField/index.d.cts +1 -1
  91. package/dist/hooks/useUniformField/index.d.ts +1 -1
  92. package/dist/hooks/useUniformField/index.js.map +1 -1
  93. package/dist/hooks/useUniformFieldArray/index.cjs.map +1 -1
  94. package/dist/hooks/useUniformFieldArray/index.d.cts +1 -1
  95. package/dist/hooks/useUniformFieldArray/index.d.ts +1 -1
  96. package/dist/hooks/useUniformFieldArray/index.js.map +1 -1
  97. package/dist/hooks/useWatchUserChange/index.d.cts +1 -1
  98. package/dist/hooks/useWatchUserChange/index.d.ts +1 -1
  99. package/dist/{index-fgARdsoB.d.ts → index-3gVUFqgo.d.cts} +4 -6
  100. package/dist/index-3gVUFqgo.d.cts.map +1 -0
  101. package/dist/{index-B2tIMFYh.d.cts → index-5_7F4o-d.d.ts} +20 -22
  102. package/dist/index-5_7F4o-d.d.ts.map +1 -0
  103. package/dist/{index-DZzfeV4O.d.cts → index-A88y8cpH.d.cts} +19 -21
  104. package/dist/index-A88y8cpH.d.cts.map +1 -0
  105. package/dist/{index-BExpqT81.d.ts → index-A8Jhitar.d.cts} +20 -22
  106. package/dist/index-A8Jhitar.d.cts.map +1 -0
  107. package/dist/{index-Dj3NDj0T.d.ts → index-BFpoR6oH.d.ts} +3 -4
  108. package/dist/index-BFpoR6oH.d.ts.map +1 -0
  109. package/dist/{index-DFWSHdua.d.ts → index-BIefvGtf.d.ts} +2 -3
  110. package/dist/index-BIefvGtf.d.ts.map +1 -0
  111. package/dist/{index-NjKV8LJD.d.cts → index-BeP-RWud.d.cts} +3 -4
  112. package/dist/index-BeP-RWud.d.cts.map +1 -0
  113. package/dist/{index-B6WwxkLx2.d.ts → index-BqiVSpJW.d.cts} +2 -4
  114. package/dist/index-BqiVSpJW.d.cts.map +1 -0
  115. package/dist/index-C3yAZbR3.d.ts +276 -0
  116. package/dist/index-C3yAZbR3.d.ts.map +1 -0
  117. package/dist/{index-DzWt2C-B.d.cts → index-CD9w4hqS.d.cts} +34 -36
  118. package/dist/index-CD9w4hqS.d.cts.map +1 -0
  119. package/dist/{index-Cv4ERj3i.d.ts → index-CDcnRyum.d.cts} +2 -3
  120. package/dist/index-CDcnRyum.d.cts.map +1 -0
  121. package/dist/{index-CKJumX37.d.cts → index-C_3x4Vph.d.cts} +33 -34
  122. package/dist/index-C_3x4Vph.d.cts.map +1 -0
  123. package/dist/{index-CZJ_lWQ0.d.ts → index-Cj3P2Pmf.d.ts} +19 -21
  124. package/dist/index-Cj3P2Pmf.d.ts.map +1 -0
  125. package/dist/{index-wV1E_PkS.d.ts → index-Ck9lrzur.d.cts} +4 -6
  126. package/dist/index-Ck9lrzur.d.cts.map +1 -0
  127. package/dist/{index-Dld6NP_K.d.cts → index-CqyMqRhI.d.cts} +2 -3
  128. package/dist/index-CqyMqRhI.d.cts.map +1 -0
  129. package/dist/{index-1Gzrph8R.d.cts → index-D-UGVdC1.d.ts} +33 -35
  130. package/dist/index-D-UGVdC1.d.ts.map +1 -0
  131. package/dist/{index-DpNf55K6.d.ts → index-D6QbkuWC.d.ts} +33 -34
  132. package/dist/index-D6QbkuWC.d.ts.map +1 -0
  133. package/dist/{index-D6XwSwTP.d.cts → index-D7qJy705.d.ts} +4 -6
  134. package/dist/index-D7qJy705.d.ts.map +1 -0
  135. package/dist/{index-CE0aQlFw.d.ts → index-DRg0anjB.d.cts} +5 -7
  136. package/dist/index-DRg0anjB.d.cts.map +1 -0
  137. package/dist/index-DTwIpIWh.d.ts +167 -0
  138. package/dist/index-DTwIpIWh.d.ts.map +1 -0
  139. package/dist/{index-BdYKQ59a.d.cts → index-DdqwwvOD.d.ts} +5 -7
  140. package/dist/index-DdqwwvOD.d.ts.map +1 -0
  141. package/dist/{index-pwXVq8hR.d.cts → index-DjPJAUOM.d.ts} +4 -6
  142. package/dist/index-DjPJAUOM.d.ts.map +1 -0
  143. package/dist/{index-BV1VKQdy.d.cts → index-DqTdG65C.d.ts} +2 -3
  144. package/dist/index-DqTdG65C.d.ts.map +1 -0
  145. package/dist/{index-DJe_1ZdK.d.ts → index-Dz1C3MeK.d.cts} +33 -35
  146. package/dist/index-Dz1C3MeK.d.cts.map +1 -0
  147. package/dist/{index-BwAI1VFS.d.ts → index-E28aP0vt.d.cts} +4 -6
  148. package/dist/index-E28aP0vt.d.cts.map +1 -0
  149. package/dist/{index-DkiQkdCW.d.cts → index-GP_4Xvec.d.cts} +2 -3
  150. package/dist/index-GP_4Xvec.d.cts.map +1 -0
  151. package/dist/{index-DkxqHE_P2.d.ts → index-K42ASvjk2.d.ts} +2 -3
  152. package/dist/index-K42ASvjk2.d.ts.map +1 -0
  153. package/dist/index-KbsTT3uf.d.cts +276 -0
  154. package/dist/index-KbsTT3uf.d.cts.map +1 -0
  155. package/dist/{index-CgDykuQk.d.ts → index-RCXYx5Yp.d.ts} +34 -36
  156. package/dist/index-RCXYx5Yp.d.ts.map +1 -0
  157. package/dist/{index-C-DiLZRu.d.cts → index-S4bOYm9e.d.ts} +4 -6
  158. package/dist/index-S4bOYm9e.d.ts.map +1 -0
  159. package/dist/{index-jCfJAgDc.d.cts → index-ZRXr-4Rb2.d.ts} +2 -4
  160. package/dist/index-ZRXr-4Rb2.d.ts.map +1 -0
  161. package/dist/index-eEJp36Ma.d.cts +167 -0
  162. package/dist/index-eEJp36Ma.d.cts.map +1 -0
  163. package/dist/{index-DD_RPe91.d.ts → index-jIVsGNsl.d.ts} +3 -4
  164. package/dist/index-jIVsGNsl.d.ts.map +1 -0
  165. package/dist/{index-CY2Mpaz3.d.cts → index-o0UcZG4n.d.cts} +3 -4
  166. package/dist/index-o0UcZG4n.d.cts.map +1 -0
  167. package/dist/index.d.cts +27 -27
  168. package/dist/index.d.ts +27 -27
  169. package/dist/partials/FieldCopyTestIdButton/index.d.cts +2 -2
  170. package/dist/partials/FieldCopyTestIdButton/index.d.ts +2 -2
  171. package/dist/partials/FieldValidationError/index.d.cts +2 -2
  172. package/dist/partials/FieldValidationError/index.d.ts +2 -2
  173. package/dist/{useClientValidation-DtnfCE5T.d.cts → useClientValidation-BMzOi3DZ.d.cts} +1 -1
  174. package/dist/useClientValidation-BMzOi3DZ.d.cts.map +1 -0
  175. package/dist/{useClientValidation-BWElhQ91.d.ts → useClientValidation-BTbGUViN.d.ts} +1 -1
  176. package/dist/useClientValidation-BTbGUViN.d.ts.map +1 -0
  177. package/dist/useClientValidation-Dn_kJkE5.js.map +1 -1
  178. package/dist/useClientValidation-NKOuXuHV.cjs.map +1 -1
  179. package/dist/useController-B-6PzFna.js.map +1 -1
  180. package/dist/{useController-Cc0UNQMm.d.ts → useController-BK2AeY9L.d.ts} +1 -1
  181. package/dist/useController-BK2AeY9L.d.ts.map +1 -0
  182. package/dist/useController-DVRh86Zy.cjs.map +1 -1
  183. package/dist/{useController-CNiqy_2D.d.cts → useController-kxcnnsXy.d.cts} +1 -1
  184. package/dist/useController-kxcnnsXy.d.cts.map +1 -0
  185. package/dist/{useFormContext-DEMm-bsc.d.ts → useFormContext-BYnHt6-m.d.ts} +20 -22
  186. package/dist/useFormContext-BYnHt6-m.d.ts.map +1 -0
  187. package/dist/useFormContext-Bum4VP1o.cjs.map +1 -1
  188. package/dist/useFormContext-Bzpyonu6.js.map +1 -1
  189. package/dist/{useFormContext-Dey5DbWr.d.cts → useFormContext-JE8dwbCT.d.cts} +20 -22
  190. package/dist/useFormContext-JE8dwbCT.d.cts.map +1 -0
  191. package/dist/{useInputValueDebounce-sFOlecIQ.d.ts → useInputValueDebounce-D03GnJO4.d.ts} +1 -1
  192. package/dist/useInputValueDebounce-D03GnJO4.d.ts.map +1 -0
  193. package/dist/{useInputValueDebounce-puGRVJ6t.d.cts → useInputValueDebounce-nHt1AHRm.d.cts} +1 -1
  194. package/dist/useInputValueDebounce-nHt1AHRm.d.cts.map +1 -0
  195. package/dist/{useInputValueTransform-CdoaxNyD.d.ts → useInputValueTransform-C51LmUxi.d.ts} +1 -1
  196. package/dist/useInputValueTransform-C51LmUxi.d.ts.map +1 -0
  197. package/dist/{useInputValueTransform-BwAfw8Xb.d.cts → useInputValueTransform-CNCBU7a9.d.cts} +1 -1
  198. package/dist/useInputValueTransform-CNCBU7a9.d.cts.map +1 -0
  199. package/dist/useInputValueTransform-CXdmtc0Q.js.map +1 -1
  200. package/dist/useInputValueTransform-DKH-7F9D.cjs.map +1 -1
  201. package/dist/{useUniformField-iHk8xYXN.d.ts → useUniformField-B3Dj8K5J.d.ts} +5 -5
  202. package/dist/{useUniformField-iHk8xYXN.d.ts.map → useUniformField-B3Dj8K5J.d.ts.map} +1 -1
  203. package/dist/{useUniformField-DB8jF52F.d.cts → useUniformField-BWKBsUEX.d.cts} +5 -5
  204. package/dist/{useUniformField-DB8jF52F.d.cts.map → useUniformField-BWKBsUEX.d.cts.map} +1 -1
  205. package/dist/{useUniformFieldArray-B0SPtHeT.d.ts → useUniformFieldArray-C0U3eBr7.d.ts} +16 -18
  206. package/dist/useUniformFieldArray-C0U3eBr7.d.ts.map +1 -0
  207. package/dist/{useUniformFieldArray-okvikMJp.d.cts → useUniformFieldArray-RvOYml8h.d.cts} +16 -18
  208. package/dist/useUniformFieldArray-RvOYml8h.d.cts.map +1 -0
  209. package/dist/{useWatchUserChange-CZu_ZZ38.d.cts → useWatchUserChange-26IF7Ikq.d.cts} +1 -1
  210. package/dist/{useWatchUserChange-CZu_ZZ38.d.cts.map → useWatchUserChange-26IF7Ikq.d.cts.map} +1 -1
  211. package/dist/{useWatchUserChange-CH4x16_r.d.ts → useWatchUserChange-BjRKMix1.d.ts} +1 -1
  212. package/dist/{useWatchUserChange-CH4x16_r.d.ts.map → useWatchUserChange-BjRKMix1.d.ts.map} +1 -1
  213. package/dist/useWatchUserChange-CBuIa5kU.cjs.map +1 -1
  214. package/dist/useWatchUserChange-CLgLc5W4.js.map +1 -1
  215. package/package.json +18 -22
  216. package/dist/FormContext-B4KQxdl7.d.ts.map +0 -1
  217. package/dist/FormContext-BuG3xZFe.d.cts.map +0 -1
  218. package/dist/index-1Gzrph8R.d.cts.map +0 -1
  219. package/dist/index-1PiP0cNG.d.ts +0 -278
  220. package/dist/index-1PiP0cNG.d.ts.map +0 -1
  221. package/dist/index-2Xp98tj6.d.cts +0 -278
  222. package/dist/index-2Xp98tj6.d.cts.map +0 -1
  223. package/dist/index-B2tIMFYh.d.cts.map +0 -1
  224. package/dist/index-B6WwxkLx2.d.ts.map +0 -1
  225. package/dist/index-BExpqT81.d.ts.map +0 -1
  226. package/dist/index-BV1VKQdy.d.cts.map +0 -1
  227. package/dist/index-B_ypeYXK.d.cts +0 -169
  228. package/dist/index-B_ypeYXK.d.cts.map +0 -1
  229. package/dist/index-BdYKQ59a.d.cts.map +0 -1
  230. package/dist/index-Buvn5zuQ.d.ts +0 -169
  231. package/dist/index-Buvn5zuQ.d.ts.map +0 -1
  232. package/dist/index-BwAI1VFS.d.ts.map +0 -1
  233. package/dist/index-C-DiLZRu.d.cts.map +0 -1
  234. package/dist/index-CE0aQlFw.d.ts.map +0 -1
  235. package/dist/index-CKJumX37.d.cts.map +0 -1
  236. package/dist/index-CY2Mpaz3.d.cts.map +0 -1
  237. package/dist/index-CZJ_lWQ0.d.ts.map +0 -1
  238. package/dist/index-CgDykuQk.d.ts.map +0 -1
  239. package/dist/index-Cv4ERj3i.d.ts.map +0 -1
  240. package/dist/index-D6XwSwTP.d.cts.map +0 -1
  241. package/dist/index-DD_RPe91.d.ts.map +0 -1
  242. package/dist/index-DFWSHdua.d.ts.map +0 -1
  243. package/dist/index-DJe_1ZdK.d.ts.map +0 -1
  244. package/dist/index-DZzfeV4O.d.cts.map +0 -1
  245. package/dist/index-Dj3NDj0T.d.ts.map +0 -1
  246. package/dist/index-DkiQkdCW.d.cts.map +0 -1
  247. package/dist/index-DkxqHE_P2.d.ts.map +0 -1
  248. package/dist/index-Dld6NP_K.d.cts.map +0 -1
  249. package/dist/index-DpNf55K6.d.ts.map +0 -1
  250. package/dist/index-DsC0y6kU.d.cts +0 -70
  251. package/dist/index-DsC0y6kU.d.cts.map +0 -1
  252. package/dist/index-DwqOejxR.d.ts +0 -70
  253. package/dist/index-DwqOejxR.d.ts.map +0 -1
  254. package/dist/index-DzWt2C-B.d.cts.map +0 -1
  255. package/dist/index-NjKV8LJD.d.cts.map +0 -1
  256. package/dist/index-fgARdsoB.d.ts.map +0 -1
  257. package/dist/index-jCfJAgDc.d.cts.map +0 -1
  258. package/dist/index-pwXVq8hR.d.cts.map +0 -1
  259. package/dist/index-wV1E_PkS.d.ts.map +0 -1
  260. package/dist/useClientValidation-BWElhQ91.d.ts.map +0 -1
  261. package/dist/useClientValidation-DtnfCE5T.d.cts.map +0 -1
  262. package/dist/useController-CNiqy_2D.d.cts.map +0 -1
  263. package/dist/useController-Cc0UNQMm.d.ts.map +0 -1
  264. package/dist/useFormContext-DEMm-bsc.d.ts.map +0 -1
  265. package/dist/useFormContext-Dey5DbWr.d.cts.map +0 -1
  266. package/dist/useInputValueDebounce-puGRVJ6t.d.cts.map +0 -1
  267. package/dist/useInputValueDebounce-sFOlecIQ.d.ts.map +0 -1
  268. package/dist/useInputValueTransform-BwAfw8Xb.d.cts.map +0 -1
  269. package/dist/useInputValueTransform-CdoaxNyD.d.ts.map +0 -1
  270. package/dist/useUniformFieldArray-B0SPtHeT.d.ts.map +0 -1
  271. package/dist/useUniformFieldArray-okvikMJp.d.cts.map +0 -1
  272. /package/dist/{index--okzibnx.d.ts → index-C2gUMYkE.d.cts} +0 -0
  273. /package/dist/{index-B2TCFhpj.d.ts → index-CJgP-E0M.d.cts} +0 -0
  274. /package/dist/{index-BtBZHVmz.d.cts → index-DTU6Hb0g.d.ts} +0 -0
  275. /package/dist/{index-CI4LJief.d.ts → index-Dw5cCt-A.d.ts} +0 -0
  276. /package/dist/{index-DeEmP3Jc.d.cts → index-E7Wvm5uX.d.ts} +0 -0
  277. /package/dist/{index-sQecLSpR.d.cts → index-VmEFGBxN.d.cts} +0 -0
  278. /package/dist/{useInput-93TCCrkB.d.cts → useInput-8kDcm77k.d.cts} +0 -0
  279. /package/dist/{useInput-C_fY--wx.d.ts → useInput-Che-4SjF.d.ts} +0 -0
@@ -0,0 +1,167 @@
1
+ import { TVClassName, TVProps } from "@fuf-stack/pixel-utils";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/Slider/Slider.d.ts
5
+ declare const sliderVariants: import("tailwind-variants").TVReturnType<{
6
+ [key: string]: {
7
+ [key: string]: import("tailwind-merge").ClassNameValue | {
8
+ label?: import("tailwind-merge").ClassNameValue;
9
+ value?: import("tailwind-merge").ClassNameValue;
10
+ errorMessage?: import("tailwind-merge").ClassNameValue;
11
+ base?: import("tailwind-merge").ClassNameValue;
12
+ mark?: import("tailwind-merge").ClassNameValue;
13
+ track?: import("tailwind-merge").ClassNameValue;
14
+ step?: import("tailwind-merge").ClassNameValue;
15
+ endContent?: import("tailwind-merge").ClassNameValue;
16
+ startContent?: import("tailwind-merge").ClassNameValue;
17
+ thumb?: import("tailwind-merge").ClassNameValue;
18
+ filler?: import("tailwind-merge").ClassNameValue;
19
+ labelWrapper?: import("tailwind-merge").ClassNameValue;
20
+ trackWrapper?: import("tailwind-merge").ClassNameValue;
21
+ };
22
+ };
23
+ } | {
24
+ [x: string]: {
25
+ [x: string]: import("tailwind-merge").ClassNameValue | {
26
+ label?: import("tailwind-merge").ClassNameValue;
27
+ value?: import("tailwind-merge").ClassNameValue;
28
+ errorMessage?: import("tailwind-merge").ClassNameValue;
29
+ base?: import("tailwind-merge").ClassNameValue;
30
+ mark?: import("tailwind-merge").ClassNameValue;
31
+ track?: import("tailwind-merge").ClassNameValue;
32
+ step?: import("tailwind-merge").ClassNameValue;
33
+ endContent?: import("tailwind-merge").ClassNameValue;
34
+ startContent?: import("tailwind-merge").ClassNameValue;
35
+ thumb?: import("tailwind-merge").ClassNameValue;
36
+ filler?: import("tailwind-merge").ClassNameValue;
37
+ labelWrapper?: import("tailwind-merge").ClassNameValue;
38
+ trackWrapper?: import("tailwind-merge").ClassNameValue;
39
+ };
40
+ };
41
+ } | {}, {
42
+ base: string;
43
+ endContent: string;
44
+ errorMessage: string;
45
+ filler: string;
46
+ label: string;
47
+ labelWrapper: string;
48
+ mark: string;
49
+ startContent: string;
50
+ step: string;
51
+ thumb: string;
52
+ track: string;
53
+ trackWrapper: string;
54
+ value: string;
55
+ }, undefined, {
56
+ [key: string]: {
57
+ [key: string]: import("tailwind-merge").ClassNameValue | {
58
+ label?: import("tailwind-merge").ClassNameValue;
59
+ value?: import("tailwind-merge").ClassNameValue;
60
+ errorMessage?: import("tailwind-merge").ClassNameValue;
61
+ base?: import("tailwind-merge").ClassNameValue;
62
+ mark?: import("tailwind-merge").ClassNameValue;
63
+ track?: import("tailwind-merge").ClassNameValue;
64
+ step?: import("tailwind-merge").ClassNameValue;
65
+ endContent?: import("tailwind-merge").ClassNameValue;
66
+ startContent?: import("tailwind-merge").ClassNameValue;
67
+ thumb?: import("tailwind-merge").ClassNameValue;
68
+ filler?: import("tailwind-merge").ClassNameValue;
69
+ labelWrapper?: import("tailwind-merge").ClassNameValue;
70
+ trackWrapper?: import("tailwind-merge").ClassNameValue;
71
+ };
72
+ };
73
+ } | {}, {
74
+ base: string;
75
+ endContent: string;
76
+ errorMessage: string;
77
+ filler: string;
78
+ label: string;
79
+ labelWrapper: string;
80
+ mark: string;
81
+ startContent: string;
82
+ step: string;
83
+ thumb: string;
84
+ track: string;
85
+ trackWrapper: string;
86
+ value: string;
87
+ }, import("tailwind-variants").TVReturnType<unknown, {
88
+ base: string;
89
+ endContent: string;
90
+ errorMessage: string;
91
+ filler: string;
92
+ label: string;
93
+ labelWrapper: string;
94
+ mark: string;
95
+ startContent: string;
96
+ step: string;
97
+ thumb: string;
98
+ track: string;
99
+ trackWrapper: string;
100
+ value: string;
101
+ }, undefined, unknown, unknown, undefined>>;
102
+ type VariantProps = TVProps<typeof sliderVariants>;
103
+ type ClassName = TVClassName<typeof sliderVariants>;
104
+ interface SliderProps extends VariantProps {
105
+ /** Custom aria-label for accessibility. If not provided, falls back to field name when no visible label exists */
106
+ ariaLabel?: string;
107
+ /** CSS class name */
108
+ className?: ClassName;
109
+ /** input field is disabled */
110
+ disabled?: boolean;
111
+ /** Content to display at the end of the slider */
112
+ endContent?: ReactNode;
113
+ /** The offset from where the fill should start */
114
+ fillOffset?: number;
115
+ /** form field label */
116
+ label?: string;
117
+ /** form field name */
118
+ name: string;
119
+ /**
120
+ * Whether to show step dots on the slider
121
+ * @default false
122
+ */
123
+ showSteps?: boolean;
124
+ /**
125
+ * The size of the slider
126
+ * @default "md"
127
+ */
128
+ size?: 'sm' | 'md' | 'lg';
129
+ /** Content to display at the start of the slider */
130
+ startContent?: ReactNode;
131
+ /**
132
+ * The step value of the slider
133
+ * @default 1
134
+ */
135
+ step?: number;
136
+ /** HTML data-testid attribute used in e2e tests */
137
+ testId?: string;
138
+ /**
139
+ * The minimum value of the slider
140
+ * @default 0
141
+ */
142
+ minValue?: number;
143
+ /**
144
+ * The maximum value of the slider
145
+ * @default 100
146
+ */
147
+ maxValue?: number;
148
+ }
149
+ /**
150
+ * Slider component based on [HeroUI Slider](https://www.heroui.com//docs/components/slider)
151
+ */
152
+ declare const Slider: ({
153
+ className,
154
+ endContent,
155
+ fillOffset,
156
+ name,
157
+ showSteps,
158
+ size,
159
+ startContent,
160
+ step,
161
+ minValue,
162
+ maxValue,
163
+ ...uniformFieldProps
164
+ }: SliderProps) => import("react/jsx-runtime").JSX.Element;
165
+ //#endregion
166
+ export { SliderProps as n, Slider as t };
167
+ //# sourceMappingURL=index-eEJp36Ma.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-eEJp36Ma.d.cts","names":[],"sources":["../src/Slider/Slider.tsx"],"mappings":";;;;cAYa,cAAA,8BAAc,YAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqBtB,YAAA,GAAe,OAAO,QAAQ,cAAA;AAAA,KAC9B,SAAA,GAAY,WAAW,QAAQ,cAAA;AAAA,UAEnB,WAAA,SAAoB,YAAA;;EAEnC,SAAA;;EAEA,SAAA,GAAY,SAAA;;EAEZ,QAAA;;EAEA,UAAA,GAAa,SAAA;;EAEb,UAAA;;EAEA,KAAA;;EAEA,IAAA;;;;;EAKA,SAAA;;;;;EAKA,IAAA;;EAEA,YAAA,GAAe,SAAA;;;;;EAKf,IAAA;;EAEA,MAAA;;;;AAtCC;EA2CD,QAAA;;;AAzC+C;AAAA;EA8C/C,QAAA;AAAA;;AA7CgD;AAElD;cAiDM,MAAA;EAAU,SAAA;EAAA,UAAA;EAAA,UAAA;EAAA,IAAA;EAAA,SAAA;EAAA,IAAA;EAAA,YAAA;EAAA,IAAA;EAAA,QAAA;EAAA,QAAA;EAAA,GAAA;AAAA,GAYb,WAAA,iCAAW,GAAA,CAAA,OAAA"}
@@ -1,10 +1,9 @@
1
- import { t as TVReturnType } from "./index-DwqOejxR.js";
2
1
  import { TVClassName, TVProps } from "@fuf-stack/pixel-utils";
3
2
  import { ReactElement, ReactNode } from "react";
4
3
  import { TabsProps } from "@fuf-stack/pixels";
5
4
 
6
5
  //#region src/RadioTabs/RadioTabs.d.ts
7
- declare const radioTabsVariants: TVReturnType<{
6
+ declare const radioTabsVariants: import("tailwind-variants").TVReturnType<{
8
7
  hasContent: {
9
8
  true: {
10
9
  base: string;
@@ -62,7 +61,7 @@ declare const radioTabsVariants: TVReturnType<{
62
61
  tabPanel: string;
63
62
  tabWrapper: string;
64
63
  wrapper: string;
65
- }, TVReturnType<{
64
+ }, import("tailwind-variants").TVReturnType<{
66
65
  hasContent: {
67
66
  true: {
68
67
  base: string;
@@ -145,4 +144,4 @@ declare const RadioTabs: ({
145
144
  }: RadioTabsProps) => ReactElement;
146
145
  //#endregion
147
146
  export { RadioTabsProps as n, RadioTabs as t };
148
- //# sourceMappingURL=index-DD_RPe91.d.ts.map
147
+ //# sourceMappingURL=index-jIVsGNsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-jIVsGNsl.d.ts","names":[],"sources":["../src/RadioTabs/RadioTabs.tsx"],"mappings":";;;;;cAgBa,iBAAA,8BAAiB,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCzB,YAAA,GAAe,OAAO,QAAQ,iBAAA;AAAA,KAC9B,SAAA,GAAY,WAAW,QAAQ,iBAAA;AAAA,UAEnB,eAAA;EAEf;EAAA,OAAA,GAAU,SAAA;EAEV;EAAA,QAAA;EAEQ;EAAR,KAAA,GAAQ,SAAA;EAED;EAAP,IAAA,GAAO,SAAA;EAIP;EAFA,MAAA;EAEK;EAAL,KAAA;AAAA;AAAA,UAGe,cAAA,SAAuB,IAAA,CAAK,YAAA;EAAA;EAE3C,SAAA;EAUQ;EARR,SAAA,GAAY,SAAA;EAgBF;EAdV,QAAA;EAN0C;EAQ1C,SAAA;EARsC;EAUtC,MAAA;EARA;EAUA,KAAA,GAAQ,SAAA;EARI;EAUZ,IAAA;EANA;EAQA,OAAA,EAAS,eAAA;EAJT;EAMA,MAAA;EAJA;EAMA,OAAA,GAAU,SAAA;AAAA;;;;;cAON,SAAA;EAAa,SAAA;EAAA,SAAA;EAAA,MAAA;EAAA,IAAA;EAAA,OAAA;EAAA,OAAA;EAAA,GAAA;AAAA,GAQhB,cAAA,KAAiB,YAAA"}
@@ -1,10 +1,9 @@
1
- import { t as TVReturnType } from "./index-DsC0y6kU.cjs";
2
1
  import { TVClassName, TVProps } from "@fuf-stack/pixel-utils";
3
2
  import { ReactElement, ReactNode } from "react";
4
3
  import { TabsProps } from "@fuf-stack/pixels";
5
4
 
6
5
  //#region src/RadioTabs/RadioTabs.d.ts
7
- declare const radioTabsVariants: TVReturnType<{
6
+ declare const radioTabsVariants: import("tailwind-variants").TVReturnType<{
8
7
  hasContent: {
9
8
  true: {
10
9
  base: string;
@@ -62,7 +61,7 @@ declare const radioTabsVariants: TVReturnType<{
62
61
  tabPanel: string;
63
62
  tabWrapper: string;
64
63
  wrapper: string;
65
- }, TVReturnType<{
64
+ }, import("tailwind-variants").TVReturnType<{
66
65
  hasContent: {
67
66
  true: {
68
67
  base: string;
@@ -145,4 +144,4 @@ declare const RadioTabs: ({
145
144
  }: RadioTabsProps) => ReactElement;
146
145
  //#endregion
147
146
  export { RadioTabsProps as n, RadioTabs as t };
148
- //# sourceMappingURL=index-CY2Mpaz3.d.cts.map
147
+ //# sourceMappingURL=index-o0UcZG4n.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-o0UcZG4n.d.cts","names":[],"sources":["../src/RadioTabs/RadioTabs.tsx"],"mappings":";;;;;cAgBa,iBAAA,8BAAiB,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCzB,YAAA,GAAe,OAAO,QAAQ,iBAAA;AAAA,KAC9B,SAAA,GAAY,WAAW,QAAQ,iBAAA;AAAA,UAEnB,eAAA;EAEf;EAAA,OAAA,GAAU,SAAA;EAEV;EAAA,QAAA;EAEQ;EAAR,KAAA,GAAQ,SAAA;EAED;EAAP,IAAA,GAAO,SAAA;EAIP;EAFA,MAAA;EAEK;EAAL,KAAA;AAAA;AAAA,UAGe,cAAA,SAAuB,IAAA,CAAK,YAAA;EAAA;EAE3C,SAAA;EAUQ;EARR,SAAA,GAAY,SAAA;EAgBF;EAdV,QAAA;EAN0C;EAQ1C,SAAA;EARsC;EAUtC,MAAA;EARA;EAUA,KAAA,GAAQ,SAAA;EARI;EAUZ,IAAA;EANA;EAQA,OAAA,EAAS,eAAA;EAJT;EAMA,MAAA;EAJA;EAMA,OAAA,GAAU,SAAA;AAAA;;;;;cAON,SAAA;EAAa,SAAA;EAAA,SAAA;EAAA,MAAA;EAAA,IAAA;EAAA,OAAA;EAAA,OAAA;EAAA,GAAA;AAAA,GAQhB,cAAA,KAAiB,YAAA"}
package/dist/index.d.cts CHANGED
@@ -1,28 +1,28 @@
1
- import { i as useInputValueTransform, n as UseInputValueTransformOptions, r as UseInputValueTransformReturn, t as InputValueTransform } from "./useInputValueTransform-BwAfw8Xb.cjs";
2
- import { n as Checkboxes, r as CheckboxesProps, t as CheckboxOption } from "./index-BdYKQ59a.cjs";
3
- import { i as FieldArrayProps, n as FieldArrayChildrenRenderFn, r as FieldArrayFeatures, t as FieldArray } from "./index-D6XwSwTP.cjs";
4
- import { n as FieldCardProps, r as fieldCardVariants, t as FieldCard } from "./index-C-DiLZRu.cjs";
5
- import { n as FormProps, t as Form } from "./index-NjKV8LJD.cjs";
6
- import { n as GridProps, t as Grid } from "./index-BV1VKQdy.cjs";
7
- import { n as InputProps, t as Input } from "./index-B2tIMFYh.cjs";
8
- import { n as RadioBoxes, r as RadioBoxesProps, t as radioBoxVariants } from "./index-1Gzrph8R.cjs";
9
- import { n as RadioTabsProps, t as RadioTabs } from "./index-CY2Mpaz3.cjs";
10
- import { n as RadiosProps, t as Radios } from "./index-CKJumX37.cjs";
11
- import { n as SelectProps, t as Select } from "./index-2Xp98tj6.cjs";
12
- import { n as SliderProps, t as Slider } from "./index-B_ypeYXK.cjs";
13
- import { n as SubmitButtonProps, t as SubmitButton } from "./index-DkiQkdCW.cjs";
14
- import { n as SwitchProps, t as Switch } from "./index-DzWt2C-B.cjs";
15
- import { n as SwitchBoxProps, r as switchBoxVariants, t as SwitchBox } from "./index-pwXVq8hR.cjs";
16
- import { n as TextAreaProps, t as TextArea } from "./index-DZzfeV4O.cjs";
1
+ import { i as useInputValueTransform, n as UseInputValueTransformOptions, r as UseInputValueTransformReturn, t as InputValueTransform } from "./useInputValueTransform-CNCBU7a9.cjs";
2
+ import { n as Checkboxes, r as CheckboxesProps, t as CheckboxOption } from "./index-DRg0anjB.cjs";
3
+ import { i as FieldArrayProps, n as FieldArrayChildrenRenderFn, r as FieldArrayFeatures, t as FieldArray } from "./index-3gVUFqgo.cjs";
4
+ import { n as FieldCardProps, r as fieldCardVariants, t as FieldCard } from "./index-E28aP0vt.cjs";
5
+ import { n as FormProps, t as Form } from "./index-BeP-RWud.cjs";
6
+ import { n as GridProps, t as Grid } from "./index-CDcnRyum.cjs";
7
+ import { n as InputProps, t as Input } from "./index-A8Jhitar.cjs";
8
+ import { n as RadioBoxes, r as RadioBoxesProps, t as radioBoxVariants } from "./index-Dz1C3MeK.cjs";
9
+ import { n as RadioTabsProps, t as RadioTabs } from "./index-o0UcZG4n.cjs";
10
+ import { n as RadiosProps, t as Radios } from "./index-C_3x4Vph.cjs";
11
+ import { n as SelectProps, t as Select } from "./index-KbsTT3uf.cjs";
12
+ import { n as SliderProps, t as Slider } from "./index-eEJp36Ma.cjs";
13
+ import { n as SubmitButtonProps, t as SubmitButton } from "./index-GP_4Xvec.cjs";
14
+ import { n as SwitchProps, t as Switch } from "./index-CD9w4hqS.cjs";
15
+ import { n as SwitchBoxProps, r as switchBoxVariants, t as SwitchBox } from "./index-Ck9lrzur.cjs";
16
+ import { n as TextAreaProps, t as TextArea } from "./index-A88y8cpH.cjs";
17
17
  import { createOptionValueConverter, flatArrayKey, fromNullishString, isValueEmpty, nameToTestId, toFormFormat, toNullishString, toSubmitFormat, toValidationFormat } from "./helpers/index.cjs";
18
- import { n as useClientValidation, t as clientValidationSchemaByName } from "./useClientValidation-DtnfCE5T.cjs";
19
- import { n as UseControllerReturn, r as useController, t as UseControllerProps } from "./useController-CNiqy_2D.cjs";
20
- import { n as useFormContext, t as checkFieldIsRequired } from "./useFormContext-Dey5DbWr.cjs";
21
- import { t as useInput } from "./useInput-93TCCrkB.cjs";
22
- import { n as UseInputValueDebounceReturn, r as useInputValueDebounce, t as UseInputValueDebounceOptions } from "./useInputValueDebounce-puGRVJ6t.cjs";
23
- import { n as UseUniformFieldReturn, r as useUniformField, t as UseUniformFieldParams } from "./useUniformField-DB8jF52F.cjs";
24
- import { n as useUniformFieldArray, t as UseUniformFieldArrayProps } from "./useUniformFieldArray-okvikMJp.cjs";
25
- import { n as useWatchUserChange, t as UseWatchUserChangeOptions } from "./useWatchUserChange-CZu_ZZ38.cjs";
26
- import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "./index-jCfJAgDc.cjs";
27
- import { n as FieldValidationErrorProps, t as FieldValidationError } from "./index-Dld6NP_K.cjs";
28
- export { CheckboxOption, Checkboxes, CheckboxesProps, FieldArray, FieldArrayChildrenRenderFn, FieldArrayFeatures, FieldArrayProps, FieldCard, FieldCardProps, FieldCopyTestIdButton, FieldCopyTestIdButtonProps, FieldValidationError, FieldValidationErrorProps, Form, FormProps, Grid, GridProps, Input, InputProps, InputValueTransform, RadioBoxes, RadioBoxesProps, RadioTabs, RadioTabsProps, Radios, RadiosProps, Select, SelectProps, Slider, SliderProps, SubmitButton, SubmitButtonProps, Switch, SwitchBox, SwitchBoxProps, SwitchProps, TextArea, TextAreaProps, UseControllerProps, UseControllerReturn, UseInputValueDebounceOptions, UseInputValueDebounceReturn, UseInputValueTransformOptions, UseInputValueTransformReturn, UseUniformFieldArrayProps, UseUniformFieldParams, UseUniformFieldReturn, UseWatchUserChangeOptions, checkFieldIsRequired, clientValidationSchemaByName, createOptionValueConverter, fieldCardVariants, flatArrayKey, fromNullishString, isValueEmpty, nameToTestId, radioBoxVariants, switchBoxVariants, toFormFormat, toNullishString, toSubmitFormat, toValidationFormat, useClientValidation, useController, useFormContext, useInput, useInputValueDebounce, useInputValueTransform, useUniformField, useUniformFieldArray, useWatchUserChange };
18
+ import { n as useClientValidation, t as clientValidationSchemaByName } from "./useClientValidation-BMzOi3DZ.cjs";
19
+ import { n as UseControllerReturn, r as useController, t as UseControllerProps } from "./useController-kxcnnsXy.cjs";
20
+ import { n as useFormContext, t as checkFieldIsRequired } from "./useFormContext-JE8dwbCT.cjs";
21
+ import { t as useInput } from "./useInput-8kDcm77k.cjs";
22
+ import { n as UseInputValueDebounceReturn, r as useInputValueDebounce, t as UseInputValueDebounceOptions } from "./useInputValueDebounce-nHt1AHRm.cjs";
23
+ import { n as UseUniformFieldReturn, r as useUniformField, t as UseUniformFieldParams } from "./useUniformField-BWKBsUEX.cjs";
24
+ import { n as useUniformFieldArray, t as UseUniformFieldArrayProps } from "./useUniformFieldArray-RvOYml8h.cjs";
25
+ import { n as useWatchUserChange, t as UseWatchUserChangeOptions } from "./useWatchUserChange-26IF7Ikq.cjs";
26
+ import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "./index-BqiVSpJW.cjs";
27
+ import { n as FieldValidationErrorProps, t as FieldValidationError } from "./index-CqyMqRhI.cjs";
28
+ export { type CheckboxOption, Checkboxes, type CheckboxesProps, FieldArray, type FieldArrayChildrenRenderFn, type FieldArrayFeatures, type FieldArrayProps, FieldCard, type FieldCardProps, FieldCopyTestIdButton, type FieldCopyTestIdButtonProps, FieldValidationError, type FieldValidationErrorProps, Form, type FormProps, Grid, type GridProps, Input, type InputProps, InputValueTransform, RadioBoxes, type RadioBoxesProps, RadioTabs, type RadioTabsProps, Radios, type RadiosProps, Select, type SelectProps, Slider, type SliderProps, SubmitButton, type SubmitButtonProps, Switch, SwitchBox, type SwitchBoxProps, type SwitchProps, TextArea, type TextAreaProps, UseControllerProps, UseControllerReturn, UseInputValueDebounceOptions, UseInputValueDebounceReturn, UseInputValueTransformOptions, UseInputValueTransformReturn, UseUniformFieldArrayProps, UseUniformFieldParams, UseUniformFieldReturn, UseWatchUserChangeOptions, checkFieldIsRequired, clientValidationSchemaByName, createOptionValueConverter, fieldCardVariants, flatArrayKey, fromNullishString, isValueEmpty, nameToTestId, radioBoxVariants, switchBoxVariants, toFormFormat, toNullishString, toSubmitFormat, toValidationFormat, useClientValidation, useController, useFormContext, useInput, useInputValueDebounce, useInputValueTransform, useUniformField, useUniformFieldArray, useWatchUserChange };
package/dist/index.d.ts CHANGED
@@ -1,28 +1,28 @@
1
- import { i as useInputValueTransform, n as UseInputValueTransformOptions, r as UseInputValueTransformReturn, t as InputValueTransform } from "./useInputValueTransform-CdoaxNyD.js";
2
- import { n as Checkboxes, r as CheckboxesProps, t as CheckboxOption } from "./index-CE0aQlFw.js";
3
- import { i as FieldArrayProps, n as FieldArrayChildrenRenderFn, r as FieldArrayFeatures, t as FieldArray } from "./index-fgARdsoB.js";
4
- import { n as FieldCardProps, r as fieldCardVariants, t as FieldCard } from "./index-BwAI1VFS.js";
5
- import { n as FormProps, t as Form } from "./index-Dj3NDj0T.js";
6
- import { n as GridProps, t as Grid } from "./index-Cv4ERj3i.js";
7
- import { n as InputProps, t as Input } from "./index-BExpqT81.js";
8
- import { n as RadioBoxes, r as RadioBoxesProps, t as radioBoxVariants } from "./index-DJe_1ZdK.js";
9
- import { n as RadioTabsProps, t as RadioTabs } from "./index-DD_RPe91.js";
10
- import { n as RadiosProps, t as Radios } from "./index-DpNf55K6.js";
11
- import { n as SelectProps, t as Select } from "./index-1PiP0cNG.js";
12
- import { n as SliderProps, t as Slider } from "./index-Buvn5zuQ.js";
13
- import { n as SubmitButtonProps, t as SubmitButton } from "./index-DFWSHdua.js";
14
- import { n as SwitchProps, t as Switch } from "./index-CgDykuQk.js";
15
- import { n as SwitchBoxProps, r as switchBoxVariants, t as SwitchBox } from "./index-wV1E_PkS.js";
16
- import { n as TextAreaProps, t as TextArea } from "./index-CZJ_lWQ0.js";
1
+ import { i as useInputValueTransform, n as UseInputValueTransformOptions, r as UseInputValueTransformReturn, t as InputValueTransform } from "./useInputValueTransform-C51LmUxi.js";
2
+ import { n as Checkboxes, r as CheckboxesProps, t as CheckboxOption } from "./index-DdqwwvOD.js";
3
+ import { i as FieldArrayProps, n as FieldArrayChildrenRenderFn, r as FieldArrayFeatures, t as FieldArray } from "./index-D7qJy705.js";
4
+ import { n as FieldCardProps, r as fieldCardVariants, t as FieldCard } from "./index-S4bOYm9e.js";
5
+ import { n as FormProps, t as Form } from "./index-BFpoR6oH.js";
6
+ import { n as GridProps, t as Grid } from "./index-DqTdG65C.js";
7
+ import { n as InputProps, t as Input } from "./index-5_7F4o-d.js";
8
+ import { n as RadioBoxes, r as RadioBoxesProps, t as radioBoxVariants } from "./index-D-UGVdC1.js";
9
+ import { n as RadioTabsProps, t as RadioTabs } from "./index-jIVsGNsl.js";
10
+ import { n as RadiosProps, t as Radios } from "./index-D6QbkuWC.js";
11
+ import { n as SelectProps, t as Select } from "./index-C3yAZbR3.js";
12
+ import { n as SliderProps, t as Slider } from "./index-DTwIpIWh.js";
13
+ import { n as SubmitButtonProps, t as SubmitButton } from "./index-BIefvGtf.js";
14
+ import { n as SwitchProps, t as Switch } from "./index-RCXYx5Yp.js";
15
+ import { n as SwitchBoxProps, r as switchBoxVariants, t as SwitchBox } from "./index-DjPJAUOM.js";
16
+ import { n as TextAreaProps, t as TextArea } from "./index-Cj3P2Pmf.js";
17
17
  import { createOptionValueConverter, flatArrayKey, fromNullishString, isValueEmpty, nameToTestId, toFormFormat, toNullishString, toSubmitFormat, toValidationFormat } from "./helpers/index.js";
18
- import { n as useClientValidation, t as clientValidationSchemaByName } from "./useClientValidation-BWElhQ91.js";
19
- import { n as UseControllerReturn, r as useController, t as UseControllerProps } from "./useController-Cc0UNQMm.js";
20
- import { n as useFormContext, t as checkFieldIsRequired } from "./useFormContext-DEMm-bsc.js";
21
- import { t as useInput } from "./useInput-C_fY--wx.js";
22
- import { n as UseInputValueDebounceReturn, r as useInputValueDebounce, t as UseInputValueDebounceOptions } from "./useInputValueDebounce-sFOlecIQ.js";
23
- import { n as UseUniformFieldReturn, r as useUniformField, t as UseUniformFieldParams } from "./useUniformField-iHk8xYXN.js";
24
- import { n as useUniformFieldArray, t as UseUniformFieldArrayProps } from "./useUniformFieldArray-B0SPtHeT.js";
25
- import { n as useWatchUserChange, t as UseWatchUserChangeOptions } from "./useWatchUserChange-CH4x16_r.js";
26
- import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "./index-B6WwxkLx2.js";
27
- import { n as FieldValidationErrorProps, t as FieldValidationError } from "./index-DkxqHE_P2.js";
28
- export { CheckboxOption, Checkboxes, CheckboxesProps, FieldArray, FieldArrayChildrenRenderFn, FieldArrayFeatures, FieldArrayProps, FieldCard, FieldCardProps, FieldCopyTestIdButton, FieldCopyTestIdButtonProps, FieldValidationError, FieldValidationErrorProps, Form, FormProps, Grid, GridProps, Input, InputProps, InputValueTransform, RadioBoxes, RadioBoxesProps, RadioTabs, RadioTabsProps, Radios, RadiosProps, Select, SelectProps, Slider, SliderProps, SubmitButton, SubmitButtonProps, Switch, SwitchBox, SwitchBoxProps, SwitchProps, TextArea, TextAreaProps, UseControllerProps, UseControllerReturn, UseInputValueDebounceOptions, UseInputValueDebounceReturn, UseInputValueTransformOptions, UseInputValueTransformReturn, UseUniformFieldArrayProps, UseUniformFieldParams, UseUniformFieldReturn, UseWatchUserChangeOptions, checkFieldIsRequired, clientValidationSchemaByName, createOptionValueConverter, fieldCardVariants, flatArrayKey, fromNullishString, isValueEmpty, nameToTestId, radioBoxVariants, switchBoxVariants, toFormFormat, toNullishString, toSubmitFormat, toValidationFormat, useClientValidation, useController, useFormContext, useInput, useInputValueDebounce, useInputValueTransform, useUniformField, useUniformFieldArray, useWatchUserChange };
18
+ import { n as useClientValidation, t as clientValidationSchemaByName } from "./useClientValidation-BTbGUViN.js";
19
+ import { n as UseControllerReturn, r as useController, t as UseControllerProps } from "./useController-BK2AeY9L.js";
20
+ import { n as useFormContext, t as checkFieldIsRequired } from "./useFormContext-BYnHt6-m.js";
21
+ import { t as useInput } from "./useInput-Che-4SjF.js";
22
+ import { n as UseInputValueDebounceReturn, r as useInputValueDebounce, t as UseInputValueDebounceOptions } from "./useInputValueDebounce-D03GnJO4.js";
23
+ import { n as UseUniformFieldReturn, r as useUniformField, t as UseUniformFieldParams } from "./useUniformField-B3Dj8K5J.js";
24
+ import { n as useUniformFieldArray, t as UseUniformFieldArrayProps } from "./useUniformFieldArray-C0U3eBr7.js";
25
+ import { n as useWatchUserChange, t as UseWatchUserChangeOptions } from "./useWatchUserChange-BjRKMix1.js";
26
+ import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "./index-ZRXr-4Rb2.js";
27
+ import { n as FieldValidationErrorProps, t as FieldValidationError } from "./index-K42ASvjk2.js";
28
+ export { type CheckboxOption, Checkboxes, type CheckboxesProps, FieldArray, type FieldArrayChildrenRenderFn, type FieldArrayFeatures, type FieldArrayProps, FieldCard, type FieldCardProps, FieldCopyTestIdButton, type FieldCopyTestIdButtonProps, FieldValidationError, type FieldValidationErrorProps, Form, type FormProps, Grid, type GridProps, Input, type InputProps, InputValueTransform, RadioBoxes, type RadioBoxesProps, RadioTabs, type RadioTabsProps, Radios, type RadiosProps, Select, type SelectProps, Slider, type SliderProps, SubmitButton, type SubmitButtonProps, Switch, SwitchBox, type SwitchBoxProps, type SwitchProps, TextArea, type TextAreaProps, UseControllerProps, UseControllerReturn, UseInputValueDebounceOptions, UseInputValueDebounceReturn, UseInputValueTransformOptions, UseInputValueTransformReturn, UseUniformFieldArrayProps, UseUniformFieldParams, UseUniformFieldReturn, UseWatchUserChangeOptions, checkFieldIsRequired, clientValidationSchemaByName, createOptionValueConverter, fieldCardVariants, flatArrayKey, fromNullishString, isValueEmpty, nameToTestId, radioBoxVariants, switchBoxVariants, toFormFormat, toNullishString, toSubmitFormat, toValidationFormat, useClientValidation, useController, useFormContext, useInput, useInputValueDebounce, useInputValueTransform, useUniformField, useUniformFieldArray, useWatchUserChange };
@@ -1,2 +1,2 @@
1
- import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "../../index-jCfJAgDc.cjs";
2
- export { FieldCopyTestIdButton, FieldCopyTestIdButton as default, FieldCopyTestIdButtonProps };
1
+ import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "../../index-BqiVSpJW.cjs";
2
+ export { FieldCopyTestIdButton, FieldCopyTestIdButton as default, type FieldCopyTestIdButtonProps };
@@ -1,2 +1,2 @@
1
- import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "../../index-B6WwxkLx2.js";
2
- export { FieldCopyTestIdButton, FieldCopyTestIdButton as default, FieldCopyTestIdButtonProps };
1
+ import { n as FieldCopyTestIdButtonProps, t as FieldCopyTestIdButton } from "../../index-ZRXr-4Rb2.js";
2
+ export { FieldCopyTestIdButton, FieldCopyTestIdButton as default, type FieldCopyTestIdButtonProps };
@@ -1,2 +1,2 @@
1
- import { n as FieldValidationErrorProps, t as FieldValidationError } from "../../index-Dld6NP_K.cjs";
2
- export { FieldValidationError, FieldValidationError as default, FieldValidationErrorProps };
1
+ import { n as FieldValidationErrorProps, t as FieldValidationError } from "../../index-CqyMqRhI.cjs";
2
+ export { FieldValidationError, FieldValidationError as default, type FieldValidationErrorProps };
@@ -1,2 +1,2 @@
1
- import { n as FieldValidationErrorProps, t as FieldValidationError } from "../../index-DkxqHE_P2.js";
2
- export { FieldValidationError, FieldValidationError as default, FieldValidationErrorProps };
1
+ import { n as FieldValidationErrorProps, t as FieldValidationError } from "../../index-K42ASvjk2.js";
2
+ export { FieldValidationError, FieldValidationError as default, type FieldValidationErrorProps };
@@ -145,4 +145,4 @@ declare const useClientValidation: <TData = unknown>(data: TData | null | undefi
145
145
  declare const clientValidationSchemaByName: <T extends VetoTypeAny>(name: string, fieldSchema: T) => VetoTypeAny;
146
146
  //#endregion
147
147
  export { useClientValidation as n, clientValidationSchemaByName as t };
148
- //# sourceMappingURL=useClientValidation-DtnfCE5T.d.cts.map
148
+ //# sourceMappingURL=useClientValidation-BMzOi3DZ.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClientValidation-BMzOi3DZ.d.cts","names":[],"sources":["../src/hooks/useClientValidation/useClientValidation.ts"],"mappings":";;;;;AAkEA;;;;;;;;;;;;;;;;;;AAG4B;AA+H5B;;;;;;;;;;;;;;;AAqCC;;;;;;;;;;;;;;;;;;;;;cAvKY,mBAAA,oBACX,IAAA,EAAM,KAAA,qBACN,aAAA,GAAgB,IAAA,EAAM,KAAA,KAAU,WAAA,EAChC,OAAA;EAAY,GAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+HD,4BAAA,aAA0C,WAAA,EACrD,IAAA,UACA,WAAA,EAAa,CAAA,KAAC,WAAA"}
@@ -145,4 +145,4 @@ declare const useClientValidation: <TData = unknown>(data: TData | null | undefi
145
145
  declare const clientValidationSchemaByName: <T extends VetoTypeAny>(name: string, fieldSchema: T) => VetoTypeAny;
146
146
  //#endregion
147
147
  export { useClientValidation as n, clientValidationSchemaByName as t };
148
- //# sourceMappingURL=useClientValidation-BWElhQ91.d.ts.map
148
+ //# sourceMappingURL=useClientValidation-BTbGUViN.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClientValidation-BTbGUViN.d.ts","names":[],"sources":["../src/hooks/useClientValidation/useClientValidation.ts"],"mappings":";;;;;AAkEA;;;;;;;;;;;;;;;;;;AAG4B;AA+H5B;;;;;;;;;;;;;;;AAqCC;;;;;;;;;;;;;;;;;;;;;cAvKY,mBAAA,oBACX,IAAA,EAAM,KAAA,qBACN,aAAA,GAAgB,IAAA,EAAM,KAAA,KAAU,WAAA,EAChC,OAAA;EAAY,GAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+HD,4BAAA,aAA0C,WAAA,EACrD,IAAA,UACA,WAAA,EAAa,CAAA,KAAC,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClientValidation-Dn_kJkE5.js","names":[],"sources":["../src/hooks/useClientValidation/useClientValidation.ts"],"sourcesContent":["import type { VetoTypeAny } from '@fuf-stack/veto';\n\nimport { useEffect, useId } from 'react';\n\nimport { array, objectLoose } from '@fuf-stack/veto';\n\nimport { flatArrayKey } from '../../helpers';\nimport { useFormContext } from '../useFormContext/useFormContext';\n\n/**\n * Hook for adding dynamic client-side validation to forms.\n *\n * Client validation is used for context-dependent validation rules that require external data\n * (e.g., checking if a username already exists). It complements base validation (passed to Form),\n * which handles static rules like \"required\", min/max length, format, etc.\n *\n * **Typical pattern:**\n * - Base validation: Static, always-on rules (required, format, length constraints)\n * - Client validation: Dynamic rules based on external data (uniqueness, business logic)\n * - Client schemas should use `.nullish()` to allow empty values (base validation handles \"required\")\n *\n * Automatically manages validation schema lifecycle: sets schema when data is provided,\n * clears schema when data is null/undefined, and cleans up on unmount. When the client\n * validation schema changes, automatically re-validates all touched fields.\n *\n * @param data - Data to create validation schema from (or null/undefined to clear validation)\n * @param schemaFactory - Function that creates a validation schema from the data. Schemas should typically use `.nullish()`.\n * @param options - Optional configuration object\n * @param options.key - Optional custom key for registration. Useful when multiple instances should share validation (e.g., in field arrays)\n *\n * @example\n * ```tsx\n * // Base validation handles \"required\" and format\n * const baseSchema = veto({ username: vt.string({ min: 3 }) });\n *\n * // Client validation adds dynamic uniqueness check\n * const { data: teamData } = useTeamQuery(teamId);\n * useClientValidation(teamData, (data) =>\n * vt.objectLoose({\n * username: vt.string()\n * .refine(\n * (value) => !data.existingUsers.includes(value),\n * { message: 'Username already exists' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * })\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Using custom key in a field array to avoid multiple registrations\n * fields.map((field, index) => (\n * useClientValidation(\n * userData,\n * (data) => clientValidationSchemaByName(\n * `items.${index}.name`,\n * vt.string()\n * .refine((val) => !data.forbidden.includes(val), { message: 'Name not allowed' })\n * .nullish()\n * ),\n * { key: 'items-validation' } // All instances share the same key\n * )\n * ));\n * ```\n */\nexport const useClientValidation = <TData = unknown>(\n data: TData | null | undefined,\n schemaFactory: (data: TData) => VetoTypeAny,\n options?: { key?: string },\n): void => {\n const {\n formState: { touchedFields },\n validation: { setClientValidationSchema },\n trigger,\n } = useFormContext();\n\n // Use provided key or auto-generate unique key\n const autoGeneratedKey = useId();\n const key = options?.key ?? autoGeneratedKey;\n\n // Use data hash instead of object reference to avoid unnecessary re-runs\n // when data object reference changes but data remains the same\n const dataHash = JSON.stringify(data);\n\n // Single effect to manage validation schema lifecycle\n useEffect(() => {\n // Set validation schema when data is available\n if (data != null) {\n const validationSchema = schemaFactory(data);\n setClientValidationSchema(key, validationSchema);\n } else {\n // Clear validation schema when no data\n setClientValidationSchema(key, null);\n }\n\n // Re-validate all touched fields when client validation schema changes\n const touchedFieldNames = Object.keys(touchedFields);\n if (touchedFieldNames.length > 0) {\n // Use setTimeout to ensure the client validation schema update has propagated\n // before triggering re-validation (fixes race condition)\n setTimeout(async () => {\n return trigger(touchedFieldNames);\n }, 1);\n }\n\n // Cleanup on unmount or when dependencies change\n return () => {\n setClientValidationSchema(key, null);\n };\n // Only re-run when data (dataHash) or key changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataHash, key]);\n};\n\n/**\n * Helper function to create a veto looseObject schema for a single field with nested path support.\n *\n * Parses field paths (dot-notation) and creates properly nested loose object schemas with array support.\n * All intermediate objects and arrays are marked as optional to allow partial data structures.\n * Numeric segments in the path are treated as array indices, and the parent field is wrapped in an array schema.\n * Supports flat arrays (arrays of primitives) via the special `__FLAT__` key.\n *\n * **Important:** The fieldSchema should typically use `.nullish()` to allow empty values. This is because:\n * - Base validation (passed to Form) handles \"required\" constraints\n * - Client validation adds dynamic, context-dependent rules (e.g., \"username already exists\")\n * - Form data processing converts empty strings in flat arrays to `null` (not `undefined`)\n * - `.nullish()` accepts both `null` and `undefined`, while `.optional()` only accepts `undefined`\n *\n * This pattern ensures client validation only validates non-empty values, while base validation\n * enforces required fields and basic constraints (min length, format, etc.).\n *\n * @param name - The dot-separated path to the field (e.g., 'username', 'user.profile.email', 'items.0.name', 'tags.0.__FLAT__')\n * @param fieldSchema - The veto validation schema for the field. Should typically use `.nullish()` to allow empty values.\n * @returns A nested loose object schema matching the field path structure with proper type inference\n *\n * @example\n * ```tsx\n * // Typical usage: base validation handles \"required\", client validation adds dynamic rules\n * // Base validation (in Form component)\n * const baseSchema = veto({ username: vt.string({ min: 3 }) }); // Required + min length\n *\n * // Client validation (dynamic check for existing usernames)\n * const { data: userData } = useUserQuery(userId);\n * useClientValidation(userData, (data) =>\n * clientValidationSchemaByName(\n * 'username',\n * vt.string()\n * .refine(\n * (value) => !data.existingUsernames.includes(value),\n * { message: 'Username already taken' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * )\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Nested field path with dynamic validation\n * clientValidationSchemaByName(\n * 'user.profile.email',\n * vt.string()\n * .refine(\n * (value) => !reservedEmails.includes(value),\n * { message: 'This email is reserved' }\n * )\n * .nullish()\n * )\n * // => objectLoose({ user: objectLoose({ profile: objectLoose({ email: ... }).optional() }).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Array of objects with dynamic validation\n * clientValidationSchemaByName(\n * 'items.0.tag',\n * vt.string()\n * .refine((value) => !forbiddenTags.includes(value), { message: 'Tag not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ items: array(objectLoose({ tag: ... })).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Flat array (array of primitives) with dynamic validation\n * clientValidationSchemaByName(\n * 'tags.0.__FLAT__',\n * vt.string()\n * .refine((value) => !forbiddenWords.includes(value), { message: 'Word not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ tags: array(vt.string().refine(...).nullish()).optional() })\n * ```\n */\nexport const clientValidationSchemaByName = <T extends VetoTypeAny>(\n name: string,\n fieldSchema: T,\n) => {\n const segments = name.split('.');\n\n // Build schema from innermost to outermost\n let schema: VetoTypeAny = fieldSchema;\n\n // Process segments in reverse order to build nested structure\n for (let i = segments.length - 1; i >= 0; i -= 1) {\n const segment = segments[i];\n\n const isNumeric = /^\\d+$/.test(segment);\n const isFlatArrayKey = segment === flatArrayKey;\n\n if (isFlatArrayKey) {\n // Skip the __FLAT__ key - it's just a marker for flat arrays\n // The schema is already correct (primitive type), just continue\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isNumeric) {\n // Current segment is an array index - wrap current schema in optional array\n schema = array(schema).optional();\n } else {\n // Current segment is a field name - wrap in objectLoose\n // Make it optional if it's an intermediate object (not the root)\n const obj = objectLoose({\n [segment]: schema,\n });\n schema = i > 0 ? obj.optional() : obj;\n }\n }\n\n return schema;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAa,uBACX,MACA,eACA,YACS;CACT,MAAM,EACJ,WAAW,EAAE,iBACb,YAAY,EAAE,6BACd,YACE,gBAAgB;CAGpB,MAAM,mBAAmB,OAAO;CAChC,MAAM,MAAM,SAAS,OAAO;AAO5B,iBAAgB;AAEd,MAAI,QAAQ,KAEV,2BAA0B,KADD,cAAc,KACQ,CAAC;MAGhD,2BAA0B,KAAK,KAAK;EAItC,MAAM,oBAAoB,OAAO,KAAK,cAAc;AACpD,MAAI,kBAAkB,SAAS,EAG7B,YAAW,YAAY;AACrB,UAAO,QAAQ,kBAAkB;KAChC,EAAE;AAIP,eAAa;AACX,6BAA0B,KAAK,KAAK;;IAIrC,CA7Bc,KAAK,UAAU,KA6BpB,EAAE,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFrB,MAAa,gCACX,MACA,gBACG;CACH,MAAM,WAAW,KAAK,MAAM,IAAI;CAGhC,IAAI,SAAsB;AAG1B,MAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;EAChD,MAAM,UAAU,SAAS;EAEzB,MAAM,YAAY,QAAQ,KAAK,QAAQ;AAGvC,MAFuB,YAAA,WAMrB;AAGF,MAAI,UAEF,UAAS,MAAM,OAAO,CAAC,UAAU;OAC5B;GAGL,MAAM,MAAM,YAAY,GACrB,UAAU,QACZ,CAAC;AACF,YAAS,IAAI,IAAI,IAAI,UAAU,GAAG;;;AAItC,QAAO"}
1
+ {"version":3,"file":"useClientValidation-Dn_kJkE5.js","names":[],"sources":["../src/hooks/useClientValidation/useClientValidation.ts"],"sourcesContent":["import type { VetoTypeAny } from '@fuf-stack/veto';\n\nimport { useEffect, useId } from 'react';\n\nimport { array, objectLoose } from '@fuf-stack/veto';\n\nimport { flatArrayKey } from '../../helpers';\nimport { useFormContext } from '../useFormContext/useFormContext';\n\n/**\n * Hook for adding dynamic client-side validation to forms.\n *\n * Client validation is used for context-dependent validation rules that require external data\n * (e.g., checking if a username already exists). It complements base validation (passed to Form),\n * which handles static rules like \"required\", min/max length, format, etc.\n *\n * **Typical pattern:**\n * - Base validation: Static, always-on rules (required, format, length constraints)\n * - Client validation: Dynamic rules based on external data (uniqueness, business logic)\n * - Client schemas should use `.nullish()` to allow empty values (base validation handles \"required\")\n *\n * Automatically manages validation schema lifecycle: sets schema when data is provided,\n * clears schema when data is null/undefined, and cleans up on unmount. When the client\n * validation schema changes, automatically re-validates all touched fields.\n *\n * @param data - Data to create validation schema from (or null/undefined to clear validation)\n * @param schemaFactory - Function that creates a validation schema from the data. Schemas should typically use `.nullish()`.\n * @param options - Optional configuration object\n * @param options.key - Optional custom key for registration. Useful when multiple instances should share validation (e.g., in field arrays)\n *\n * @example\n * ```tsx\n * // Base validation handles \"required\" and format\n * const baseSchema = veto({ username: vt.string({ min: 3 }) });\n *\n * // Client validation adds dynamic uniqueness check\n * const { data: teamData } = useTeamQuery(teamId);\n * useClientValidation(teamData, (data) =>\n * vt.objectLoose({\n * username: vt.string()\n * .refine(\n * (value) => !data.existingUsers.includes(value),\n * { message: 'Username already exists' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * })\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Using custom key in a field array to avoid multiple registrations\n * fields.map((field, index) => (\n * useClientValidation(\n * userData,\n * (data) => clientValidationSchemaByName(\n * `items.${index}.name`,\n * vt.string()\n * .refine((val) => !data.forbidden.includes(val), { message: 'Name not allowed' })\n * .nullish()\n * ),\n * { key: 'items-validation' } // All instances share the same key\n * )\n * ));\n * ```\n */\nexport const useClientValidation = <TData = unknown>(\n data: TData | null | undefined,\n schemaFactory: (data: TData) => VetoTypeAny,\n options?: { key?: string },\n): void => {\n const {\n formState: { touchedFields },\n validation: { setClientValidationSchema },\n trigger,\n } = useFormContext();\n\n // Use provided key or auto-generate unique key\n const autoGeneratedKey = useId();\n const key = options?.key ?? autoGeneratedKey;\n\n // Use data hash instead of object reference to avoid unnecessary re-runs\n // when data object reference changes but data remains the same\n const dataHash = JSON.stringify(data);\n\n // Single effect to manage validation schema lifecycle\n useEffect(() => {\n // Set validation schema when data is available\n if (data != null) {\n const validationSchema = schemaFactory(data);\n setClientValidationSchema(key, validationSchema);\n } else {\n // Clear validation schema when no data\n setClientValidationSchema(key, null);\n }\n\n // Re-validate all touched fields when client validation schema changes\n const touchedFieldNames = Object.keys(touchedFields);\n if (touchedFieldNames.length > 0) {\n // Use setTimeout to ensure the client validation schema update has propagated\n // before triggering re-validation (fixes race condition)\n setTimeout(async () => {\n return trigger(touchedFieldNames);\n }, 1);\n }\n\n // Cleanup on unmount or when dependencies change\n return () => {\n setClientValidationSchema(key, null);\n };\n // Only re-run when data (dataHash) or key changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataHash, key]);\n};\n\n/**\n * Helper function to create a veto looseObject schema for a single field with nested path support.\n *\n * Parses field paths (dot-notation) and creates properly nested loose object schemas with array support.\n * All intermediate objects and arrays are marked as optional to allow partial data structures.\n * Numeric segments in the path are treated as array indices, and the parent field is wrapped in an array schema.\n * Supports flat arrays (arrays of primitives) via the special `__FLAT__` key.\n *\n * **Important:** The fieldSchema should typically use `.nullish()` to allow empty values. This is because:\n * - Base validation (passed to Form) handles \"required\" constraints\n * - Client validation adds dynamic, context-dependent rules (e.g., \"username already exists\")\n * - Form data processing converts empty strings in flat arrays to `null` (not `undefined`)\n * - `.nullish()` accepts both `null` and `undefined`, while `.optional()` only accepts `undefined`\n *\n * This pattern ensures client validation only validates non-empty values, while base validation\n * enforces required fields and basic constraints (min length, format, etc.).\n *\n * @param name - The dot-separated path to the field (e.g., 'username', 'user.profile.email', 'items.0.name', 'tags.0.__FLAT__')\n * @param fieldSchema - The veto validation schema for the field. Should typically use `.nullish()` to allow empty values.\n * @returns A nested loose object schema matching the field path structure with proper type inference\n *\n * @example\n * ```tsx\n * // Typical usage: base validation handles \"required\", client validation adds dynamic rules\n * // Base validation (in Form component)\n * const baseSchema = veto({ username: vt.string({ min: 3 }) }); // Required + min length\n *\n * // Client validation (dynamic check for existing usernames)\n * const { data: userData } = useUserQuery(userId);\n * useClientValidation(userData, (data) =>\n * clientValidationSchemaByName(\n * 'username',\n * vt.string()\n * .refine(\n * (value) => !data.existingUsernames.includes(value),\n * { message: 'Username already taken' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * )\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Nested field path with dynamic validation\n * clientValidationSchemaByName(\n * 'user.profile.email',\n * vt.string()\n * .refine(\n * (value) => !reservedEmails.includes(value),\n * { message: 'This email is reserved' }\n * )\n * .nullish()\n * )\n * // => objectLoose({ user: objectLoose({ profile: objectLoose({ email: ... }).optional() }).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Array of objects with dynamic validation\n * clientValidationSchemaByName(\n * 'items.0.tag',\n * vt.string()\n * .refine((value) => !forbiddenTags.includes(value), { message: 'Tag not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ items: array(objectLoose({ tag: ... })).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Flat array (array of primitives) with dynamic validation\n * clientValidationSchemaByName(\n * 'tags.0.__FLAT__',\n * vt.string()\n * .refine((value) => !forbiddenWords.includes(value), { message: 'Word not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ tags: array(vt.string().refine(...).nullish()).optional() })\n * ```\n */\nexport const clientValidationSchemaByName = <T extends VetoTypeAny>(\n name: string,\n fieldSchema: T,\n) => {\n const segments = name.split('.');\n\n // Build schema from innermost to outermost\n let schema: VetoTypeAny = fieldSchema;\n\n // Process segments in reverse order to build nested structure\n for (let i = segments.length - 1; i >= 0; i -= 1) {\n const segment = segments[i];\n\n const isNumeric = /^\\d+$/.test(segment);\n const isFlatArrayKey = segment === flatArrayKey;\n\n if (isFlatArrayKey) {\n // Skip the __FLAT__ key - it's just a marker for flat arrays\n // The schema is already correct (primitive type), just continue\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isNumeric) {\n // Current segment is an array index - wrap current schema in optional array\n schema = array(schema).optional();\n } else {\n // Current segment is a field name - wrap in objectLoose\n // Make it optional if it's an intermediate object (not the root)\n const obj = objectLoose({\n [segment]: schema,\n });\n schema = i > 0 ? obj.optional() : obj;\n }\n }\n\n return schema;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAa,uBACX,MACA,eACA,YACS;CACT,MAAM,EACJ,WAAW,EAAE,iBACb,YAAY,EAAE,6BACd,YACE,eAAe;CAGnB,MAAM,mBAAmB,MAAM;CAC/B,MAAM,MAAM,SAAS,OAAO;CAO5B,gBAAgB;EAEd,IAAI,QAAQ,MAEV,0BAA0B,KADD,cAAc,IACO,CAAC;OAG/C,0BAA0B,KAAK,IAAI;EAIrC,MAAM,oBAAoB,OAAO,KAAK,aAAa;EACnD,IAAI,kBAAkB,SAAS,GAG7B,WAAW,YAAY;GACrB,OAAO,QAAQ,iBAAiB;EAClC,GAAG,CAAC;EAIN,aAAa;GACX,0BAA0B,KAAK,IAAI;EACrC;CAGF,GAAG,CA7Bc,KAAK,UAAU,IA6BrB,GAAG,GAAG,CAAC;AACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFA,MAAa,gCACX,MACA,gBACG;CACH,MAAM,WAAW,KAAK,MAAM,GAAG;CAG/B,IAAI,SAAsB;CAG1B,KAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;EAChD,MAAM,UAAU,SAAS;EAEzB,MAAM,YAAY,QAAQ,KAAK,OAAO;EAGtC,IAFuB,YAAA,YAMrB;EAGF,IAAI,WAEF,SAAS,MAAM,MAAM,EAAE,SAAS;OAC3B;GAGL,MAAM,MAAM,YAAY,GACrB,UAAU,OACb,CAAC;GACD,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI;EACpC;CACF;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClientValidation-NKOuXuHV.cjs","names":["useFormContext"],"sources":["../src/hooks/useClientValidation/useClientValidation.ts"],"sourcesContent":["import type { VetoTypeAny } from '@fuf-stack/veto';\n\nimport { useEffect, useId } from 'react';\n\nimport { array, objectLoose } from '@fuf-stack/veto';\n\nimport { flatArrayKey } from '../../helpers';\nimport { useFormContext } from '../useFormContext/useFormContext';\n\n/**\n * Hook for adding dynamic client-side validation to forms.\n *\n * Client validation is used for context-dependent validation rules that require external data\n * (e.g., checking if a username already exists). It complements base validation (passed to Form),\n * which handles static rules like \"required\", min/max length, format, etc.\n *\n * **Typical pattern:**\n * - Base validation: Static, always-on rules (required, format, length constraints)\n * - Client validation: Dynamic rules based on external data (uniqueness, business logic)\n * - Client schemas should use `.nullish()` to allow empty values (base validation handles \"required\")\n *\n * Automatically manages validation schema lifecycle: sets schema when data is provided,\n * clears schema when data is null/undefined, and cleans up on unmount. When the client\n * validation schema changes, automatically re-validates all touched fields.\n *\n * @param data - Data to create validation schema from (or null/undefined to clear validation)\n * @param schemaFactory - Function that creates a validation schema from the data. Schemas should typically use `.nullish()`.\n * @param options - Optional configuration object\n * @param options.key - Optional custom key for registration. Useful when multiple instances should share validation (e.g., in field arrays)\n *\n * @example\n * ```tsx\n * // Base validation handles \"required\" and format\n * const baseSchema = veto({ username: vt.string({ min: 3 }) });\n *\n * // Client validation adds dynamic uniqueness check\n * const { data: teamData } = useTeamQuery(teamId);\n * useClientValidation(teamData, (data) =>\n * vt.objectLoose({\n * username: vt.string()\n * .refine(\n * (value) => !data.existingUsers.includes(value),\n * { message: 'Username already exists' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * })\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Using custom key in a field array to avoid multiple registrations\n * fields.map((field, index) => (\n * useClientValidation(\n * userData,\n * (data) => clientValidationSchemaByName(\n * `items.${index}.name`,\n * vt.string()\n * .refine((val) => !data.forbidden.includes(val), { message: 'Name not allowed' })\n * .nullish()\n * ),\n * { key: 'items-validation' } // All instances share the same key\n * )\n * ));\n * ```\n */\nexport const useClientValidation = <TData = unknown>(\n data: TData | null | undefined,\n schemaFactory: (data: TData) => VetoTypeAny,\n options?: { key?: string },\n): void => {\n const {\n formState: { touchedFields },\n validation: { setClientValidationSchema },\n trigger,\n } = useFormContext();\n\n // Use provided key or auto-generate unique key\n const autoGeneratedKey = useId();\n const key = options?.key ?? autoGeneratedKey;\n\n // Use data hash instead of object reference to avoid unnecessary re-runs\n // when data object reference changes but data remains the same\n const dataHash = JSON.stringify(data);\n\n // Single effect to manage validation schema lifecycle\n useEffect(() => {\n // Set validation schema when data is available\n if (data != null) {\n const validationSchema = schemaFactory(data);\n setClientValidationSchema(key, validationSchema);\n } else {\n // Clear validation schema when no data\n setClientValidationSchema(key, null);\n }\n\n // Re-validate all touched fields when client validation schema changes\n const touchedFieldNames = Object.keys(touchedFields);\n if (touchedFieldNames.length > 0) {\n // Use setTimeout to ensure the client validation schema update has propagated\n // before triggering re-validation (fixes race condition)\n setTimeout(async () => {\n return trigger(touchedFieldNames);\n }, 1);\n }\n\n // Cleanup on unmount or when dependencies change\n return () => {\n setClientValidationSchema(key, null);\n };\n // Only re-run when data (dataHash) or key changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataHash, key]);\n};\n\n/**\n * Helper function to create a veto looseObject schema for a single field with nested path support.\n *\n * Parses field paths (dot-notation) and creates properly nested loose object schemas with array support.\n * All intermediate objects and arrays are marked as optional to allow partial data structures.\n * Numeric segments in the path are treated as array indices, and the parent field is wrapped in an array schema.\n * Supports flat arrays (arrays of primitives) via the special `__FLAT__` key.\n *\n * **Important:** The fieldSchema should typically use `.nullish()` to allow empty values. This is because:\n * - Base validation (passed to Form) handles \"required\" constraints\n * - Client validation adds dynamic, context-dependent rules (e.g., \"username already exists\")\n * - Form data processing converts empty strings in flat arrays to `null` (not `undefined`)\n * - `.nullish()` accepts both `null` and `undefined`, while `.optional()` only accepts `undefined`\n *\n * This pattern ensures client validation only validates non-empty values, while base validation\n * enforces required fields and basic constraints (min length, format, etc.).\n *\n * @param name - The dot-separated path to the field (e.g., 'username', 'user.profile.email', 'items.0.name', 'tags.0.__FLAT__')\n * @param fieldSchema - The veto validation schema for the field. Should typically use `.nullish()` to allow empty values.\n * @returns A nested loose object schema matching the field path structure with proper type inference\n *\n * @example\n * ```tsx\n * // Typical usage: base validation handles \"required\", client validation adds dynamic rules\n * // Base validation (in Form component)\n * const baseSchema = veto({ username: vt.string({ min: 3 }) }); // Required + min length\n *\n * // Client validation (dynamic check for existing usernames)\n * const { data: userData } = useUserQuery(userId);\n * useClientValidation(userData, (data) =>\n * clientValidationSchemaByName(\n * 'username',\n * vt.string()\n * .refine(\n * (value) => !data.existingUsernames.includes(value),\n * { message: 'Username already taken' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * )\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Nested field path with dynamic validation\n * clientValidationSchemaByName(\n * 'user.profile.email',\n * vt.string()\n * .refine(\n * (value) => !reservedEmails.includes(value),\n * { message: 'This email is reserved' }\n * )\n * .nullish()\n * )\n * // => objectLoose({ user: objectLoose({ profile: objectLoose({ email: ... }).optional() }).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Array of objects with dynamic validation\n * clientValidationSchemaByName(\n * 'items.0.tag',\n * vt.string()\n * .refine((value) => !forbiddenTags.includes(value), { message: 'Tag not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ items: array(objectLoose({ tag: ... })).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Flat array (array of primitives) with dynamic validation\n * clientValidationSchemaByName(\n * 'tags.0.__FLAT__',\n * vt.string()\n * .refine((value) => !forbiddenWords.includes(value), { message: 'Word not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ tags: array(vt.string().refine(...).nullish()).optional() })\n * ```\n */\nexport const clientValidationSchemaByName = <T extends VetoTypeAny>(\n name: string,\n fieldSchema: T,\n) => {\n const segments = name.split('.');\n\n // Build schema from innermost to outermost\n let schema: VetoTypeAny = fieldSchema;\n\n // Process segments in reverse order to build nested structure\n for (let i = segments.length - 1; i >= 0; i -= 1) {\n const segment = segments[i];\n\n const isNumeric = /^\\d+$/.test(segment);\n const isFlatArrayKey = segment === flatArrayKey;\n\n if (isFlatArrayKey) {\n // Skip the __FLAT__ key - it's just a marker for flat arrays\n // The schema is already correct (primitive type), just continue\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isNumeric) {\n // Current segment is an array index - wrap current schema in optional array\n schema = array(schema).optional();\n } else {\n // Current segment is a field name - wrap in objectLoose\n // Make it optional if it's an intermediate object (not the root)\n const obj = objectLoose({\n [segment]: schema,\n });\n schema = i > 0 ? obj.optional() : obj;\n }\n }\n\n return schema;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAa,uBACX,MACA,eACA,YACS;CACT,MAAM,EACJ,WAAW,EAAE,iBACb,YAAY,EAAE,6BACd,YACEA,uBAAAA,gBAAgB;CAGpB,MAAM,oBAAA,GAAA,MAAA,QAA0B;CAChC,MAAM,MAAM,SAAS,OAAO;AAO5B,EAAA,GAAA,MAAA,iBAAgB;AAEd,MAAI,QAAQ,KAEV,2BAA0B,KADD,cAAc,KACQ,CAAC;MAGhD,2BAA0B,KAAK,KAAK;EAItC,MAAM,oBAAoB,OAAO,KAAK,cAAc;AACpD,MAAI,kBAAkB,SAAS,EAG7B,YAAW,YAAY;AACrB,UAAO,QAAQ,kBAAkB;KAChC,EAAE;AAIP,eAAa;AACX,6BAA0B,KAAK,KAAK;;IAIrC,CA7Bc,KAAK,UAAU,KA6BpB,EAAE,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFrB,MAAa,gCACX,MACA,gBACG;CACH,MAAM,WAAW,KAAK,MAAM,IAAI;CAGhC,IAAI,SAAsB;AAG1B,MAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;EAChD,MAAM,UAAU,SAAS;EAEzB,MAAM,YAAY,QAAQ,KAAK,QAAQ;AAGvC,MAFuB,YAAA,WAMrB;AAGF,MAAI,UAEF,WAAA,GAAA,gBAAA,OAAe,OAAO,CAAC,UAAU;OAC5B;GAGL,MAAM,OAAA,GAAA,gBAAA,aAAkB,GACrB,UAAU,QACZ,CAAC;AACF,YAAS,IAAI,IAAI,IAAI,UAAU,GAAG;;;AAItC,QAAO"}
1
+ {"version":3,"file":"useClientValidation-NKOuXuHV.cjs","names":["useFormContext"],"sources":["../src/hooks/useClientValidation/useClientValidation.ts"],"sourcesContent":["import type { VetoTypeAny } from '@fuf-stack/veto';\n\nimport { useEffect, useId } from 'react';\n\nimport { array, objectLoose } from '@fuf-stack/veto';\n\nimport { flatArrayKey } from '../../helpers';\nimport { useFormContext } from '../useFormContext/useFormContext';\n\n/**\n * Hook for adding dynamic client-side validation to forms.\n *\n * Client validation is used for context-dependent validation rules that require external data\n * (e.g., checking if a username already exists). It complements base validation (passed to Form),\n * which handles static rules like \"required\", min/max length, format, etc.\n *\n * **Typical pattern:**\n * - Base validation: Static, always-on rules (required, format, length constraints)\n * - Client validation: Dynamic rules based on external data (uniqueness, business logic)\n * - Client schemas should use `.nullish()` to allow empty values (base validation handles \"required\")\n *\n * Automatically manages validation schema lifecycle: sets schema when data is provided,\n * clears schema when data is null/undefined, and cleans up on unmount. When the client\n * validation schema changes, automatically re-validates all touched fields.\n *\n * @param data - Data to create validation schema from (or null/undefined to clear validation)\n * @param schemaFactory - Function that creates a validation schema from the data. Schemas should typically use `.nullish()`.\n * @param options - Optional configuration object\n * @param options.key - Optional custom key for registration. Useful when multiple instances should share validation (e.g., in field arrays)\n *\n * @example\n * ```tsx\n * // Base validation handles \"required\" and format\n * const baseSchema = veto({ username: vt.string({ min: 3 }) });\n *\n * // Client validation adds dynamic uniqueness check\n * const { data: teamData } = useTeamQuery(teamId);\n * useClientValidation(teamData, (data) =>\n * vt.objectLoose({\n * username: vt.string()\n * .refine(\n * (value) => !data.existingUsers.includes(value),\n * { message: 'Username already exists' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * })\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Using custom key in a field array to avoid multiple registrations\n * fields.map((field, index) => (\n * useClientValidation(\n * userData,\n * (data) => clientValidationSchemaByName(\n * `items.${index}.name`,\n * vt.string()\n * .refine((val) => !data.forbidden.includes(val), { message: 'Name not allowed' })\n * .nullish()\n * ),\n * { key: 'items-validation' } // All instances share the same key\n * )\n * ));\n * ```\n */\nexport const useClientValidation = <TData = unknown>(\n data: TData | null | undefined,\n schemaFactory: (data: TData) => VetoTypeAny,\n options?: { key?: string },\n): void => {\n const {\n formState: { touchedFields },\n validation: { setClientValidationSchema },\n trigger,\n } = useFormContext();\n\n // Use provided key or auto-generate unique key\n const autoGeneratedKey = useId();\n const key = options?.key ?? autoGeneratedKey;\n\n // Use data hash instead of object reference to avoid unnecessary re-runs\n // when data object reference changes but data remains the same\n const dataHash = JSON.stringify(data);\n\n // Single effect to manage validation schema lifecycle\n useEffect(() => {\n // Set validation schema when data is available\n if (data != null) {\n const validationSchema = schemaFactory(data);\n setClientValidationSchema(key, validationSchema);\n } else {\n // Clear validation schema when no data\n setClientValidationSchema(key, null);\n }\n\n // Re-validate all touched fields when client validation schema changes\n const touchedFieldNames = Object.keys(touchedFields);\n if (touchedFieldNames.length > 0) {\n // Use setTimeout to ensure the client validation schema update has propagated\n // before triggering re-validation (fixes race condition)\n setTimeout(async () => {\n return trigger(touchedFieldNames);\n }, 1);\n }\n\n // Cleanup on unmount or when dependencies change\n return () => {\n setClientValidationSchema(key, null);\n };\n // Only re-run when data (dataHash) or key changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataHash, key]);\n};\n\n/**\n * Helper function to create a veto looseObject schema for a single field with nested path support.\n *\n * Parses field paths (dot-notation) and creates properly nested loose object schemas with array support.\n * All intermediate objects and arrays are marked as optional to allow partial data structures.\n * Numeric segments in the path are treated as array indices, and the parent field is wrapped in an array schema.\n * Supports flat arrays (arrays of primitives) via the special `__FLAT__` key.\n *\n * **Important:** The fieldSchema should typically use `.nullish()` to allow empty values. This is because:\n * - Base validation (passed to Form) handles \"required\" constraints\n * - Client validation adds dynamic, context-dependent rules (e.g., \"username already exists\")\n * - Form data processing converts empty strings in flat arrays to `null` (not `undefined`)\n * - `.nullish()` accepts both `null` and `undefined`, while `.optional()` only accepts `undefined`\n *\n * This pattern ensures client validation only validates non-empty values, while base validation\n * enforces required fields and basic constraints (min length, format, etc.).\n *\n * @param name - The dot-separated path to the field (e.g., 'username', 'user.profile.email', 'items.0.name', 'tags.0.__FLAT__')\n * @param fieldSchema - The veto validation schema for the field. Should typically use `.nullish()` to allow empty values.\n * @returns A nested loose object schema matching the field path structure with proper type inference\n *\n * @example\n * ```tsx\n * // Typical usage: base validation handles \"required\", client validation adds dynamic rules\n * // Base validation (in Form component)\n * const baseSchema = veto({ username: vt.string({ min: 3 }) }); // Required + min length\n *\n * // Client validation (dynamic check for existing usernames)\n * const { data: userData } = useUserQuery(userId);\n * useClientValidation(userData, (data) =>\n * clientValidationSchemaByName(\n * 'username',\n * vt.string()\n * .refine(\n * (value) => !data.existingUsernames.includes(value),\n * { message: 'Username already taken' }\n * )\n * .nullish() // Allow empty - base validation handles \"required\"\n * )\n * );\n * ```\n *\n * @example\n * ```tsx\n * // Nested field path with dynamic validation\n * clientValidationSchemaByName(\n * 'user.profile.email',\n * vt.string()\n * .refine(\n * (value) => !reservedEmails.includes(value),\n * { message: 'This email is reserved' }\n * )\n * .nullish()\n * )\n * // => objectLoose({ user: objectLoose({ profile: objectLoose({ email: ... }).optional() }).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Array of objects with dynamic validation\n * clientValidationSchemaByName(\n * 'items.0.tag',\n * vt.string()\n * .refine((value) => !forbiddenTags.includes(value), { message: 'Tag not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ items: array(objectLoose({ tag: ... })).optional() })\n * ```\n *\n * @example\n * ```tsx\n * // Flat array (array of primitives) with dynamic validation\n * clientValidationSchemaByName(\n * 'tags.0.__FLAT__',\n * vt.string()\n * .refine((value) => !forbiddenWords.includes(value), { message: 'Word not allowed' })\n * .nullish()\n * )\n * // => objectLoose({ tags: array(vt.string().refine(...).nullish()).optional() })\n * ```\n */\nexport const clientValidationSchemaByName = <T extends VetoTypeAny>(\n name: string,\n fieldSchema: T,\n) => {\n const segments = name.split('.');\n\n // Build schema from innermost to outermost\n let schema: VetoTypeAny = fieldSchema;\n\n // Process segments in reverse order to build nested structure\n for (let i = segments.length - 1; i >= 0; i -= 1) {\n const segment = segments[i];\n\n const isNumeric = /^\\d+$/.test(segment);\n const isFlatArrayKey = segment === flatArrayKey;\n\n if (isFlatArrayKey) {\n // Skip the __FLAT__ key - it's just a marker for flat arrays\n // The schema is already correct (primitive type), just continue\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isNumeric) {\n // Current segment is an array index - wrap current schema in optional array\n schema = array(schema).optional();\n } else {\n // Current segment is a field name - wrap in objectLoose\n // Make it optional if it's an intermediate object (not the root)\n const obj = objectLoose({\n [segment]: schema,\n });\n schema = i > 0 ? obj.optional() : obj;\n }\n }\n\n return schema;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAa,uBACX,MACA,eACA,YACS;CACT,MAAM,EACJ,WAAW,EAAE,iBACb,YAAY,EAAE,6BACd,YACEA,uBAAAA,eAAe;CAGnB,MAAM,oBAAA,GAAA,MAAA,OAAyB;CAC/B,MAAM,MAAM,SAAS,OAAO;CAO5B,CAAA,GAAA,MAAA,iBAAgB;EAEd,IAAI,QAAQ,MAEV,0BAA0B,KADD,cAAc,IACO,CAAC;OAG/C,0BAA0B,KAAK,IAAI;EAIrC,MAAM,oBAAoB,OAAO,KAAK,aAAa;EACnD,IAAI,kBAAkB,SAAS,GAG7B,WAAW,YAAY;GACrB,OAAO,QAAQ,iBAAiB;EAClC,GAAG,CAAC;EAIN,aAAa;GACX,0BAA0B,KAAK,IAAI;EACrC;CAGF,GAAG,CA7Bc,KAAK,UAAU,IA6BrB,GAAG,GAAG,CAAC;AACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFA,MAAa,gCACX,MACA,gBACG;CACH,MAAM,WAAW,KAAK,MAAM,GAAG;CAG/B,IAAI,SAAsB;CAG1B,KAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;EAChD,MAAM,UAAU,SAAS;EAEzB,MAAM,YAAY,QAAQ,KAAK,OAAO;EAGtC,IAFuB,YAAA,YAMrB;EAGF,IAAI,WAEF,UAAA,GAAA,gBAAA,OAAe,MAAM,EAAE,SAAS;OAC3B;GAGL,MAAM,OAAA,GAAA,gBAAA,aAAkB,GACrB,UAAU,OACb,CAAC;GACD,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI;EACpC;CACF;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useController-B-6PzFna.js","names":["useController","useRHFController"],"sources":["../src/hooks/useController/useController.ts"],"sourcesContent":["import type {\n ControllerFieldState,\n ControllerRenderProps,\n UseControllerProps as RHFUseControllerProps,\n UseFormStateReturn,\n} from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useController as useRHFController } from 'react-hook-form';\n\nimport { UniformContext } from '../../Form/subcomponents/FormContext';\nimport { fromNullishString, toNullishString } from '../../helpers';\n\nexport type UseControllerProps<TFieldValues extends object = object> =\n RHFUseControllerProps<TFieldValues>;\n\nexport interface UseControllerReturn<TFieldValues extends object = object> {\n field: Omit<ControllerRenderProps<TFieldValues>, 'onChange' | 'value'> & {\n // Using any[] to support both direct value changes and React synthetic events\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => void;\n value: string;\n };\n formState: UseFormStateReturn<TFieldValues>;\n fieldState: ControllerFieldState;\n}\n\n/**\n * A wrapper around react-hook-form's useController that transparently handles nullish string conversions.\n *\n * Key features:\n * 1. Empty strings ('') in the UI are stored as null in form state\n * 2. Null/undefined values in form state are displayed as empty strings in the UI\n * 3. Handles both direct value changes and React synthetic events\n * 4. Maintains the same API as react-hook-form's useController\n * 5. Notifies UniformContext's userChange listeners on field changes (enables useWatchUserChange hook)\n * 6. No-op when value unchanged: onChange is ignored if the new value equals the current value\n * (prevents unnecessary re-renders and spurious useWatchUserChange triggers)\n *\n * This enables consistent handling of empty/null values while keeping a clean API\n * for form inputs that expect string values.\n *\n * @see https://react-hook-form.com/docs/usecontroller\n */\nexport const useController = <TFieldValues extends object = object>(\n props: UseControllerProps<TFieldValues>,\n): UseControllerReturn<TFieldValues> => {\n const { field, formState, fieldState } = useRHFController(props);\n const { userChange } = useContext(UniformContext);\n\n return {\n field: {\n ...field,\n // Handles both direct values (onChange(\"value\")) and events (onChange(event))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => {\n const value = event[0]?.target?.value ?? event[0];\n const formattedValue = value === '' ? '' : toNullishString(value);\n\n // Skip if value hasn't changed (e.g., user re-selects same option)\n // We compare formattedValue (the new value after nullish conversion) with\n // field.value (the current stored value, also in nullish format)\n if (formattedValue === field.value) {\n return;\n }\n\n // Update form state first\n field.onChange(formattedValue);\n\n // Then notify userChange listeners (for useWatchUserChange hook)\n // This ensures getValues() in listeners returns the updated value\n // Guard against undefined userChange (when used outside FormProvider)\n // NOTE: We notify with the original value (not formattedValue) so that\n // listeners receive the actual value (false, 0, null) instead of marker\n // strings like '__FALSE__', '__ZERO__', '__NULL__'\n userChange?.notify(field.name, value);\n },\n // Convert null/undefined to empty string for UI display\n value: fromNullishString(field.value) as string,\n },\n formState,\n fieldState,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAaA,mBACX,UACsC;CACtC,MAAM,EAAE,OAAO,WAAW,eAAeC,cAAiB,MAAM;CAChE,MAAM,EAAE,eAAe,WAAW,eAAe;AAEjD,QAAO;EACL,OAAO;GACL,GAAG;GAGH,WAAW,GAAG,UAAiB;IAC7B,MAAM,QAAQ,MAAM,IAAI,QAAQ,SAAS,MAAM;IAC/C,MAAM,iBAAiB,UAAU,KAAK,KAAK,gBAAgB,MAAM;AAKjE,QAAI,mBAAmB,MAAM,MAC3B;AAIF,UAAM,SAAS,eAAe;AAQ9B,gBAAY,OAAO,MAAM,MAAM,MAAM;;GAGvC,OAAO,kBAAkB,MAAM,MAAM;GACtC;EACD;EACA;EACD"}
1
+ {"version":3,"file":"useController-B-6PzFna.js","names":["useController","useRHFController"],"sources":["../src/hooks/useController/useController.ts"],"sourcesContent":["import type {\n ControllerFieldState,\n ControllerRenderProps,\n UseControllerProps as RHFUseControllerProps,\n UseFormStateReturn,\n} from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useController as useRHFController } from 'react-hook-form';\n\nimport { UniformContext } from '../../Form/subcomponents/FormContext';\nimport { fromNullishString, toNullishString } from '../../helpers';\n\nexport type UseControllerProps<TFieldValues extends object = object> =\n RHFUseControllerProps<TFieldValues>;\n\nexport interface UseControllerReturn<TFieldValues extends object = object> {\n field: Omit<ControllerRenderProps<TFieldValues>, 'onChange' | 'value'> & {\n // Using any[] to support both direct value changes and React synthetic events\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => void;\n value: string;\n };\n formState: UseFormStateReturn<TFieldValues>;\n fieldState: ControllerFieldState;\n}\n\n/**\n * A wrapper around react-hook-form's useController that transparently handles nullish string conversions.\n *\n * Key features:\n * 1. Empty strings ('') in the UI are stored as null in form state\n * 2. Null/undefined values in form state are displayed as empty strings in the UI\n * 3. Handles both direct value changes and React synthetic events\n * 4. Maintains the same API as react-hook-form's useController\n * 5. Notifies UniformContext's userChange listeners on field changes (enables useWatchUserChange hook)\n * 6. No-op when value unchanged: onChange is ignored if the new value equals the current value\n * (prevents unnecessary re-renders and spurious useWatchUserChange triggers)\n *\n * This enables consistent handling of empty/null values while keeping a clean API\n * for form inputs that expect string values.\n *\n * @see https://react-hook-form.com/docs/usecontroller\n */\nexport const useController = <TFieldValues extends object = object>(\n props: UseControllerProps<TFieldValues>,\n): UseControllerReturn<TFieldValues> => {\n const { field, formState, fieldState } = useRHFController(props);\n const { userChange } = useContext(UniformContext);\n\n return {\n field: {\n ...field,\n // Handles both direct values (onChange(\"value\")) and events (onChange(event))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => {\n const value = event[0]?.target?.value ?? event[0];\n const formattedValue = value === '' ? '' : toNullishString(value);\n\n // Skip if value hasn't changed (e.g., user re-selects same option)\n // We compare formattedValue (the new value after nullish conversion) with\n // field.value (the current stored value, also in nullish format)\n if (formattedValue === field.value) {\n return;\n }\n\n // Update form state first\n field.onChange(formattedValue);\n\n // Then notify userChange listeners (for useWatchUserChange hook)\n // This ensures getValues() in listeners returns the updated value\n // Guard against undefined userChange (when used outside FormProvider)\n // NOTE: We notify with the original value (not formattedValue) so that\n // listeners receive the actual value (false, 0, null) instead of marker\n // strings like '__FALSE__', '__ZERO__', '__NULL__'\n userChange?.notify(field.name, value);\n },\n // Convert null/undefined to empty string for UI display\n value: fromNullishString(field.value) as string,\n },\n formState,\n fieldState,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAaA,mBACX,UACsC;CACtC,MAAM,EAAE,OAAO,WAAW,eAAeC,cAAiB,KAAK;CAC/D,MAAM,EAAE,eAAe,WAAW,cAAc;CAEhD,OAAO;EACL,OAAO;GACL,GAAG;GAGH,WAAW,GAAG,UAAiB;IAC7B,MAAM,QAAQ,MAAM,IAAI,QAAQ,SAAS,MAAM;IAC/C,MAAM,iBAAiB,UAAU,KAAK,KAAK,gBAAgB,KAAK;IAKhE,IAAI,mBAAmB,MAAM,OAC3B;IAIF,MAAM,SAAS,cAAc;IAQ7B,YAAY,OAAO,MAAM,MAAM,KAAK;GACtC;GAEA,OAAO,kBAAkB,MAAM,KAAK;EACtC;EACA;EACA;CACF;AACF"}
@@ -30,4 +30,4 @@ interface UseControllerReturn<TFieldValues extends object = object> {
30
30
  declare const useController$1: <TFieldValues extends object = object>(props: UseControllerProps$1<TFieldValues>) => UseControllerReturn<TFieldValues>;
31
31
  //#endregion
32
32
  export { UseControllerReturn as n, useController$1 as r, UseControllerProps$1 as t };
33
- //# sourceMappingURL=useController-Cc0UNQMm.d.ts.map
33
+ //# sourceMappingURL=useController-BK2AeY9L.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useController-BK2AeY9L.d.ts","names":[],"sources":["../src/hooks/useController/useController.ts"],"mappings":";;;KAaY,oBAAA,yCACV,kBAAqB,CAAC,YAAA;AAAA,UAEP,mBAAA;EACf,KAAA,EAAO,IAAA,CAAK,qBAAA,CAAsB,YAAA;IAGhC,QAAA,MAAc,KAAA;IACd,KAAA;EAAA;EAEF,SAAA,EAAW,kBAAA,CAAmB,YAAA;EAC9B,UAAA,EAAY,oBAAA;AAAA;;AAVsB;AAEpC;;;;;;;;;;;;;;;cA4Ba,eAAA,yCACX,KAAA,EAAO,oBAAA,CAAmB,YAAA,MACzB,mBAAA,CAAoB,YAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useController-DVRh86Zy.cjs","names":["UniformContext","toNullishString","fromNullishString"],"sources":["../src/hooks/useController/useController.ts"],"sourcesContent":["import type {\n ControllerFieldState,\n ControllerRenderProps,\n UseControllerProps as RHFUseControllerProps,\n UseFormStateReturn,\n} from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useController as useRHFController } from 'react-hook-form';\n\nimport { UniformContext } from '../../Form/subcomponents/FormContext';\nimport { fromNullishString, toNullishString } from '../../helpers';\n\nexport type UseControllerProps<TFieldValues extends object = object> =\n RHFUseControllerProps<TFieldValues>;\n\nexport interface UseControllerReturn<TFieldValues extends object = object> {\n field: Omit<ControllerRenderProps<TFieldValues>, 'onChange' | 'value'> & {\n // Using any[] to support both direct value changes and React synthetic events\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => void;\n value: string;\n };\n formState: UseFormStateReturn<TFieldValues>;\n fieldState: ControllerFieldState;\n}\n\n/**\n * A wrapper around react-hook-form's useController that transparently handles nullish string conversions.\n *\n * Key features:\n * 1. Empty strings ('') in the UI are stored as null in form state\n * 2. Null/undefined values in form state are displayed as empty strings in the UI\n * 3. Handles both direct value changes and React synthetic events\n * 4. Maintains the same API as react-hook-form's useController\n * 5. Notifies UniformContext's userChange listeners on field changes (enables useWatchUserChange hook)\n * 6. No-op when value unchanged: onChange is ignored if the new value equals the current value\n * (prevents unnecessary re-renders and spurious useWatchUserChange triggers)\n *\n * This enables consistent handling of empty/null values while keeping a clean API\n * for form inputs that expect string values.\n *\n * @see https://react-hook-form.com/docs/usecontroller\n */\nexport const useController = <TFieldValues extends object = object>(\n props: UseControllerProps<TFieldValues>,\n): UseControllerReturn<TFieldValues> => {\n const { field, formState, fieldState } = useRHFController(props);\n const { userChange } = useContext(UniformContext);\n\n return {\n field: {\n ...field,\n // Handles both direct values (onChange(\"value\")) and events (onChange(event))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => {\n const value = event[0]?.target?.value ?? event[0];\n const formattedValue = value === '' ? '' : toNullishString(value);\n\n // Skip if value hasn't changed (e.g., user re-selects same option)\n // We compare formattedValue (the new value after nullish conversion) with\n // field.value (the current stored value, also in nullish format)\n if (formattedValue === field.value) {\n return;\n }\n\n // Update form state first\n field.onChange(formattedValue);\n\n // Then notify userChange listeners (for useWatchUserChange hook)\n // This ensures getValues() in listeners returns the updated value\n // Guard against undefined userChange (when used outside FormProvider)\n // NOTE: We notify with the original value (not formattedValue) so that\n // listeners receive the actual value (false, 0, null) instead of marker\n // strings like '__FALSE__', '__ZERO__', '__NULL__'\n userChange?.notify(field.name, value);\n },\n // Convert null/undefined to empty string for UI display\n value: fromNullishString(field.value) as string,\n },\n formState,\n fieldState,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAa,iBACX,UACsC;CACtC,MAAM,EAAE,OAAO,WAAW,gBAAA,GAAA,gBAAA,eAAgC,MAAM;CAChE,MAAM,EAAE,gBAAA,GAAA,MAAA,YAA0BA,oBAAAA,eAAe;AAEjD,QAAO;EACL,OAAO;GACL,GAAG;GAGH,WAAW,GAAG,UAAiB;IAC7B,MAAM,QAAQ,MAAM,IAAI,QAAQ,SAAS,MAAM;IAC/C,MAAM,iBAAiB,UAAU,KAAK,KAAKC,sBAAAA,gBAAgB,MAAM;AAKjE,QAAI,mBAAmB,MAAM,MAC3B;AAIF,UAAM,SAAS,eAAe;AAQ9B,gBAAY,OAAO,MAAM,MAAM,MAAM;;GAGvC,OAAOC,sBAAAA,kBAAkB,MAAM,MAAM;GACtC;EACD;EACA;EACD"}
1
+ {"version":3,"file":"useController-DVRh86Zy.cjs","names":["UniformContext","toNullishString","fromNullishString"],"sources":["../src/hooks/useController/useController.ts"],"sourcesContent":["import type {\n ControllerFieldState,\n ControllerRenderProps,\n UseControllerProps as RHFUseControllerProps,\n UseFormStateReturn,\n} from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useController as useRHFController } from 'react-hook-form';\n\nimport { UniformContext } from '../../Form/subcomponents/FormContext';\nimport { fromNullishString, toNullishString } from '../../helpers';\n\nexport type UseControllerProps<TFieldValues extends object = object> =\n RHFUseControllerProps<TFieldValues>;\n\nexport interface UseControllerReturn<TFieldValues extends object = object> {\n field: Omit<ControllerRenderProps<TFieldValues>, 'onChange' | 'value'> & {\n // Using any[] to support both direct value changes and React synthetic events\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => void;\n value: string;\n };\n formState: UseFormStateReturn<TFieldValues>;\n fieldState: ControllerFieldState;\n}\n\n/**\n * A wrapper around react-hook-form's useController that transparently handles nullish string conversions.\n *\n * Key features:\n * 1. Empty strings ('') in the UI are stored as null in form state\n * 2. Null/undefined values in form state are displayed as empty strings in the UI\n * 3. Handles both direct value changes and React synthetic events\n * 4. Maintains the same API as react-hook-form's useController\n * 5. Notifies UniformContext's userChange listeners on field changes (enables useWatchUserChange hook)\n * 6. No-op when value unchanged: onChange is ignored if the new value equals the current value\n * (prevents unnecessary re-renders and spurious useWatchUserChange triggers)\n *\n * This enables consistent handling of empty/null values while keeping a clean API\n * for form inputs that expect string values.\n *\n * @see https://react-hook-form.com/docs/usecontroller\n */\nexport const useController = <TFieldValues extends object = object>(\n props: UseControllerProps<TFieldValues>,\n): UseControllerReturn<TFieldValues> => {\n const { field, formState, fieldState } = useRHFController(props);\n const { userChange } = useContext(UniformContext);\n\n return {\n field: {\n ...field,\n // Handles both direct values (onChange(\"value\")) and events (onChange(event))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (...event: any[]) => {\n const value = event[0]?.target?.value ?? event[0];\n const formattedValue = value === '' ? '' : toNullishString(value);\n\n // Skip if value hasn't changed (e.g., user re-selects same option)\n // We compare formattedValue (the new value after nullish conversion) with\n // field.value (the current stored value, also in nullish format)\n if (formattedValue === field.value) {\n return;\n }\n\n // Update form state first\n field.onChange(formattedValue);\n\n // Then notify userChange listeners (for useWatchUserChange hook)\n // This ensures getValues() in listeners returns the updated value\n // Guard against undefined userChange (when used outside FormProvider)\n // NOTE: We notify with the original value (not formattedValue) so that\n // listeners receive the actual value (false, 0, null) instead of marker\n // strings like '__FALSE__', '__ZERO__', '__NULL__'\n userChange?.notify(field.name, value);\n },\n // Convert null/undefined to empty string for UI display\n value: fromNullishString(field.value) as string,\n },\n formState,\n fieldState,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAa,iBACX,UACsC;CACtC,MAAM,EAAE,OAAO,WAAW,gBAAA,GAAA,gBAAA,eAAgC,KAAK;CAC/D,MAAM,EAAE,gBAAA,GAAA,MAAA,YAA0BA,oBAAAA,cAAc;CAEhD,OAAO;EACL,OAAO;GACL,GAAG;GAGH,WAAW,GAAG,UAAiB;IAC7B,MAAM,QAAQ,MAAM,IAAI,QAAQ,SAAS,MAAM;IAC/C,MAAM,iBAAiB,UAAU,KAAK,KAAKC,sBAAAA,gBAAgB,KAAK;IAKhE,IAAI,mBAAmB,MAAM,OAC3B;IAIF,MAAM,SAAS,cAAc;IAQ7B,YAAY,OAAO,MAAM,MAAM,KAAK;GACtC;GAEA,OAAOC,sBAAAA,kBAAkB,MAAM,KAAK;EACtC;EACA;EACA;CACF;AACF"}
@@ -30,4 +30,4 @@ interface UseControllerReturn<TFieldValues extends object = object> {
30
30
  declare const useController: <TFieldValues extends object = object>(props: UseControllerProps$1<TFieldValues>) => UseControllerReturn<TFieldValues>;
31
31
  //#endregion
32
32
  export { UseControllerReturn as n, useController as r, UseControllerProps$1 as t };
33
- //# sourceMappingURL=useController-CNiqy_2D.d.cts.map
33
+ //# sourceMappingURL=useController-kxcnnsXy.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useController-kxcnnsXy.d.cts","names":[],"sources":["../src/hooks/useController/useController.ts"],"mappings":";;;KAaY,oBAAA,yCACV,kBAAqB,CAAC,YAAA;AAAA,UAEP,mBAAA;EACf,KAAA,EAAO,IAAA,CAAK,qBAAA,CAAsB,YAAA;IAGhC,QAAA,MAAc,KAAA;IACd,KAAA;EAAA;EAEF,SAAA,EAAW,kBAAA,CAAmB,YAAA;EAC9B,UAAA,EAAY,oBAAA;AAAA;;AAVsB;AAEpC;;;;;;;;;;;;;;;cA4Ba,aAAA,yCACX,KAAA,EAAO,oBAAA,CAAmB,YAAA,MACzB,mBAAA,CAAoB,YAAA"}