@startdownnotez404/ui 1.3.5 → 1.3.6

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 (254) hide show
  1. package/dist/AutocompleteField-653233JU.mjs +203 -0
  2. package/dist/AutocompleteField-653233JU.mjs.map +1 -0
  3. package/dist/AvatarField-KFASMVZU.mjs +378 -0
  4. package/dist/AvatarField-KFASMVZU.mjs.map +1 -0
  5. package/dist/{DateField-ZYMZFHL4.mjs → DateField-CDJ6W6XF.mjs} +19 -7
  6. package/dist/DateField-CDJ6W6XF.mjs.map +1 -0
  7. package/dist/DateRangeField-ZWSFT5KV.mjs +118 -0
  8. package/dist/DateRangeField-ZWSFT5KV.mjs.map +1 -0
  9. package/dist/{DateTimeField-TPTJ7YIZ.mjs → DateTimeField-SFAF4I6A.mjs} +36 -11
  10. package/dist/DateTimeField-SFAF4I6A.mjs.map +1 -0
  11. package/dist/FileUploadField-TSNCSLXX.mjs +101 -0
  12. package/dist/FileUploadField-TSNCSLXX.mjs.map +1 -0
  13. package/dist/{JSONEditorField-TMRWGXVR.mjs → JSONEditorField-3KXC2GOG.mjs} +7 -6
  14. package/dist/{JSONEditorField-TMRWGXVR.mjs.map → JSONEditorField-3KXC2GOG.mjs.map} +1 -1
  15. package/dist/{PopperMenu-LJ36RPBW.mjs → PopperMenu-PSHLKIEZ.mjs} +26 -12
  16. package/dist/{PopperMenu-LJ36RPBW.mjs.map → PopperMenu-PSHLKIEZ.mjs.map} +1 -1
  17. package/dist/{TelField-LOGRVZ4I.mjs → TelField-FRQT2UBJ.mjs} +8 -7
  18. package/dist/{TelField-LOGRVZ4I.mjs.map → TelField-FRQT2UBJ.mjs.map} +1 -1
  19. package/dist/TimeField-XVWXBJID.mjs +94 -0
  20. package/dist/TimeField-XVWXBJID.mjs.map +1 -0
  21. package/dist/alert.d.mts +148 -18
  22. package/dist/alert.d.ts +148 -18
  23. package/dist/alert.js +698 -254
  24. package/dist/alert.js.map +1 -1
  25. package/dist/alert.mjs +46 -10
  26. package/dist/autocomplete.d.mts +438 -4
  27. package/dist/autocomplete.d.ts +438 -4
  28. package/dist/autocomplete.js +632 -21
  29. package/dist/autocomplete.js.map +1 -1
  30. package/dist/autocomplete.mjs +26 -7
  31. package/dist/avatar.js +2 -1
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/avatar.mjs +12 -11
  34. package/dist/box.mjs +2 -1
  35. package/dist/button.mjs +3 -2
  36. package/dist/chart.mjs +3 -2
  37. package/dist/checkbox.mjs +3 -2
  38. package/dist/chunk-2FK24ZPJ.mjs +78 -0
  39. package/dist/chunk-2FK24ZPJ.mjs.map +1 -0
  40. package/dist/{chunk-V26V2S3W.mjs → chunk-3O3N6X6D.mjs} +3 -3
  41. package/dist/{chunk-Y74ALKBL.mjs → chunk-4MSPA7U7.mjs} +11 -9
  42. package/dist/{chunk-Y74ALKBL.mjs.map → chunk-4MSPA7U7.mjs.map} +1 -1
  43. package/dist/{chunk-24XDGNJ6.mjs → chunk-4P45Z5LR.mjs} +63 -41
  44. package/dist/chunk-4P45Z5LR.mjs.map +1 -0
  45. package/dist/chunk-4SSJY32J.mjs +1182 -0
  46. package/dist/chunk-4SSJY32J.mjs.map +1 -0
  47. package/dist/{chunk-XJ2SXC2Q.mjs → chunk-6B6I27TT.mjs} +18 -16
  48. package/dist/{chunk-XJ2SXC2Q.mjs.map → chunk-6B6I27TT.mjs.map} +1 -1
  49. package/dist/chunk-6JKMEH2L.mjs +205 -0
  50. package/dist/chunk-6JKMEH2L.mjs.map +1 -0
  51. package/dist/{chunk-IN3O4R7Q.mjs → chunk-7O526A2D.mjs} +6 -4
  52. package/dist/{chunk-IN3O4R7Q.mjs.map → chunk-7O526A2D.mjs.map} +1 -1
  53. package/dist/chunk-AFLEG5ZC.mjs +28 -0
  54. package/dist/chunk-AFLEG5ZC.mjs.map +1 -0
  55. package/dist/{chunk-UGMRJMFZ.mjs → chunk-BO5CU4ZM.mjs} +4 -4
  56. package/dist/{chunk-JIU5GVM7.mjs → chunk-D4XPNSSI.mjs} +5 -3
  57. package/dist/{chunk-JIU5GVM7.mjs.map → chunk-D4XPNSSI.mjs.map} +1 -1
  58. package/dist/chunk-DPIMA5IO.mjs +72 -0
  59. package/dist/chunk-DPIMA5IO.mjs.map +1 -0
  60. package/dist/chunk-F2CGFVIZ.mjs +83 -0
  61. package/dist/chunk-F2CGFVIZ.mjs.map +1 -0
  62. package/dist/{chunk-R5MKQN6D.mjs → chunk-FBLSJQWK.mjs} +3 -3
  63. package/dist/{chunk-BGB7JHIU.mjs → chunk-FMGZCOJC.mjs} +5 -3
  64. package/dist/{chunk-BGB7JHIU.mjs.map → chunk-FMGZCOJC.mjs.map} +1 -1
  65. package/dist/{chunk-UTVSYS6S.mjs → chunk-FNSIQ2B7.mjs} +18 -6
  66. package/dist/chunk-FNSIQ2B7.mjs.map +1 -0
  67. package/dist/{chunk-JWANK42G.mjs → chunk-FUZ2JNTZ.mjs} +3 -3
  68. package/dist/{chunk-CRYIEYZZ.mjs → chunk-HAJWE62X.mjs} +66 -42
  69. package/dist/chunk-HAJWE62X.mjs.map +1 -0
  70. package/dist/{chunk-CWFWRZWU.mjs → chunk-KSN33A6I.mjs} +3 -2
  71. package/dist/{chunk-CWFWRZWU.mjs.map → chunk-KSN33A6I.mjs.map} +1 -1
  72. package/dist/chunk-KYTHGFFY.mjs +866 -0
  73. package/dist/chunk-KYTHGFFY.mjs.map +1 -0
  74. package/dist/{chunk-QKGCW37O.mjs → chunk-LDFM46LV.mjs} +5 -3
  75. package/dist/{chunk-QKGCW37O.mjs.map → chunk-LDFM46LV.mjs.map} +1 -1
  76. package/dist/chunk-LQNDBPHU.mjs +142 -0
  77. package/dist/chunk-LQNDBPHU.mjs.map +1 -0
  78. package/dist/{chunk-E3I2VDHZ.mjs → chunk-M2PYXSAF.mjs} +6 -4
  79. package/dist/{chunk-E3I2VDHZ.mjs.map → chunk-M2PYXSAF.mjs.map} +1 -1
  80. package/dist/{chunk-DELCADNF.mjs → chunk-ODVKRIVN.mjs} +30 -30
  81. package/dist/{chunk-HR3A4H4E.mjs → chunk-PEJL2T2K.mjs} +13 -11
  82. package/dist/{chunk-HR3A4H4E.mjs.map → chunk-PEJL2T2K.mjs.map} +1 -1
  83. package/dist/{chunk-OGNGPI3M.mjs → chunk-PL55YKT4.mjs} +2 -2
  84. package/dist/{chunk-S6EZVRZC.mjs → chunk-PNSJC6PC.mjs} +5 -28
  85. package/dist/chunk-PNSJC6PC.mjs.map +1 -0
  86. package/dist/{chunk-TDRA5EZI.mjs → chunk-PUREEN2J.mjs} +7 -7
  87. package/dist/chunk-QFS5CENY.mjs +659 -0
  88. package/dist/chunk-QFS5CENY.mjs.map +1 -0
  89. package/dist/chunk-RSN7NH2J.mjs +250 -0
  90. package/dist/chunk-RSN7NH2J.mjs.map +1 -0
  91. package/dist/{chunk-UDREPVEY.mjs → chunk-RVSMEZE3.mjs} +12 -78
  92. package/dist/chunk-RVSMEZE3.mjs.map +1 -0
  93. package/dist/{chunk-SRWPHN2N.mjs → chunk-S64IYJ6Y.mjs} +2 -2
  94. package/dist/{chunk-ZG3NQI77.mjs → chunk-SMD7OEUW.mjs} +6 -4
  95. package/dist/{chunk-ZG3NQI77.mjs.map → chunk-SMD7OEUW.mjs.map} +1 -1
  96. package/dist/{chunk-NJYNJLT7.mjs → chunk-SWFB3A3G.mjs} +2 -2
  97. package/dist/{chunk-RXBQ7KXF.mjs → chunk-USXGNKWJ.mjs} +98 -44
  98. package/dist/chunk-USXGNKWJ.mjs.map +1 -0
  99. package/dist/{chunk-OJV6V7YZ.mjs → chunk-VL7V52YD.mjs} +27 -20
  100. package/dist/chunk-VL7V52YD.mjs.map +1 -0
  101. package/dist/{chunk-2ZZJTBTE.mjs → chunk-WJZ3IYET.mjs} +2 -2
  102. package/dist/chunk-XAJAMVAG.mjs +1720 -0
  103. package/dist/chunk-XAJAMVAG.mjs.map +1 -0
  104. package/dist/chunk-YIJ5QVJ6.mjs +277 -0
  105. package/dist/chunk-YIJ5QVJ6.mjs.map +1 -0
  106. package/dist/{chunk-T6AMRENK.mjs → chunk-YRW5NKD7.mjs} +148 -112
  107. package/dist/chunk-YRW5NKD7.mjs.map +1 -0
  108. package/dist/chunk-ZMJKG2UI.mjs +71 -0
  109. package/dist/chunk-ZMJKG2UI.mjs.map +1 -0
  110. package/dist/confirm.d.mts +48 -0
  111. package/dist/confirm.d.ts +48 -0
  112. package/dist/confirm.js +334 -0
  113. package/dist/confirm.js.map +1 -0
  114. package/dist/confirm.mjs +20 -0
  115. package/dist/datePicker.d.mts +256 -14
  116. package/dist/datePicker.d.ts +256 -14
  117. package/dist/datePicker.js +1624 -145
  118. package/dist/datePicker.js.map +1 -1
  119. package/dist/datePicker.mjs +19 -6
  120. package/dist/dialog.d.mts +166 -0
  121. package/dist/dialog.d.ts +166 -0
  122. package/dist/dialog.js +362 -0
  123. package/dist/dialog.js.map +1 -0
  124. package/dist/dialog.mjs +45 -0
  125. package/dist/emptyState.d.mts +17 -0
  126. package/dist/emptyState.d.ts +17 -0
  127. package/dist/emptyState.js +253 -0
  128. package/dist/emptyState.js.map +1 -0
  129. package/dist/emptyState.mjs +12 -0
  130. package/dist/emptyState.mjs.map +1 -0
  131. package/dist/errorState.d.mts +18 -0
  132. package/dist/errorState.d.ts +18 -0
  133. package/dist/{displayFile.js → errorState.js} +107 -156
  134. package/dist/errorState.js.map +1 -0
  135. package/dist/errorState.mjs +15 -0
  136. package/dist/errorState.mjs.map +1 -0
  137. package/dist/fileUpload.d.mts +197 -0
  138. package/dist/fileUpload.d.ts +197 -0
  139. package/dist/fileUpload.js +1483 -0
  140. package/dist/fileUpload.js.map +1 -0
  141. package/dist/fileUpload.mjs +65 -0
  142. package/dist/fileUpload.mjs.map +1 -0
  143. package/dist/flowMap.mjs +7 -6
  144. package/dist/flowMap.mjs.map +1 -1
  145. package/dist/image.js +1195 -429
  146. package/dist/image.js.map +1 -1
  147. package/dist/image.mjs +8 -6
  148. package/dist/index.d.ts +7 -2
  149. package/dist/index.js +8606 -4087
  150. package/dist/index.js.map +1 -1
  151. package/dist/index.mjs +314 -152
  152. package/dist/inlineError.d.mts +16 -0
  153. package/dist/inlineError.d.ts +16 -0
  154. package/dist/inlineError.js +297 -0
  155. package/dist/inlineError.js.map +1 -0
  156. package/dist/inlineError.mjs +15 -0
  157. package/dist/inlineError.mjs.map +1 -0
  158. package/dist/input.mjs +8 -7
  159. package/dist/jsonEditor.mjs +3 -2
  160. package/dist/list.mjs +7 -6
  161. package/dist/loading.mjs +8 -6
  162. package/dist/markdown.mjs +7 -6
  163. package/dist/markdown.mjs.map +1 -1
  164. package/dist/menu.mjs +9 -8
  165. package/dist/modal.js +2 -1
  166. package/dist/modal.js.map +1 -1
  167. package/dist/modal.mjs +7 -5
  168. package/dist/process.d.mts +33 -75
  169. package/dist/process.d.ts +33 -75
  170. package/dist/process.js +1275 -203
  171. package/dist/process.js.map +1 -1
  172. package/dist/process.mjs +12 -9
  173. package/dist/scrollToLoad.mjs +4 -3
  174. package/dist/select.mjs +10 -9
  175. package/dist/skeleton.d.mts +15 -1
  176. package/dist/skeleton.d.ts +15 -1
  177. package/dist/skeleton.js +114 -2
  178. package/dist/skeleton.js.map +1 -1
  179. package/dist/skeleton.mjs +6 -3
  180. package/dist/stepper.mjs +4 -3
  181. package/dist/tab.mjs +10 -9
  182. package/dist/table.d.mts +269 -85
  183. package/dist/table.d.ts +269 -85
  184. package/dist/table.js +5102 -3153
  185. package/dist/table.js.map +1 -1
  186. package/dist/table.mjs +21 -19
  187. package/dist/theme.js +1766 -432
  188. package/dist/theme.js.map +1 -1
  189. package/dist/theme.mjs +32 -25
  190. package/dist/timeline.mjs +4 -3
  191. package/dist/toast.d.mts +49 -0
  192. package/dist/toast.d.ts +49 -0
  193. package/dist/toast.js +175 -0
  194. package/dist/toast.js.map +1 -0
  195. package/dist/toast.mjs +9 -0
  196. package/dist/toast.mjs.map +1 -0
  197. package/dist/toggleButtonGroup.mjs +3 -2
  198. package/dist/useForm.d.mts +270 -86
  199. package/dist/useForm.d.ts +270 -86
  200. package/dist/useForm.js +4672 -2727
  201. package/dist/useForm.js.map +1 -1
  202. package/dist/useForm.mjs +18 -16
  203. package/dist/useSearch.mjs +13 -12
  204. package/dist/variablesRenderer.mjs +8 -7
  205. package/package.json +3 -3
  206. package/dist/AutocompleteField-ZKNU2IRR.mjs +0 -181
  207. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +0 -1
  208. package/dist/AvatarField-SAODT3CZ.mjs +0 -275
  209. package/dist/AvatarField-SAODT3CZ.mjs.map +0 -1
  210. package/dist/DateField-ZYMZFHL4.mjs.map +0 -1
  211. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +0 -1
  212. package/dist/FileUploadField-NTMWBJER.mjs +0 -78
  213. package/dist/FileUploadField-NTMWBJER.mjs.map +0 -1
  214. package/dist/chunk-24XDGNJ6.mjs.map +0 -1
  215. package/dist/chunk-27KYFU7R.mjs +0 -30
  216. package/dist/chunk-27KYFU7R.mjs.map +0 -1
  217. package/dist/chunk-AAH2O24U.mjs +0 -325
  218. package/dist/chunk-AAH2O24U.mjs.map +0 -1
  219. package/dist/chunk-CRYIEYZZ.mjs.map +0 -1
  220. package/dist/chunk-EEH7HACG.mjs +0 -249
  221. package/dist/chunk-EEH7HACG.mjs.map +0 -1
  222. package/dist/chunk-EKPULYPU.mjs +0 -497
  223. package/dist/chunk-EKPULYPU.mjs.map +0 -1
  224. package/dist/chunk-OJV6V7YZ.mjs.map +0 -1
  225. package/dist/chunk-RXBQ7KXF.mjs.map +0 -1
  226. package/dist/chunk-S6EZVRZC.mjs.map +0 -1
  227. package/dist/chunk-SGCUDWO3.mjs +0 -396
  228. package/dist/chunk-SGCUDWO3.mjs.map +0 -1
  229. package/dist/chunk-T6AMRENK.mjs.map +0 -1
  230. package/dist/chunk-UDREPVEY.mjs.map +0 -1
  231. package/dist/chunk-UTVSYS6S.mjs.map +0 -1
  232. package/dist/chunk-XIMFP6RB.mjs +0 -161
  233. package/dist/chunk-XIMFP6RB.mjs.map +0 -1
  234. package/dist/displayFile.d.mts +0 -95
  235. package/dist/displayFile.d.ts +0 -95
  236. package/dist/displayFile.js.map +0 -1
  237. package/dist/displayFile.mjs +0 -19
  238. package/dist/fileUploader.d.mts +0 -86
  239. package/dist/fileUploader.d.ts +0 -86
  240. package/dist/fileUploader.js +0 -722
  241. package/dist/fileUploader.js.map +0 -1
  242. package/dist/fileUploader.mjs +0 -16
  243. /package/dist/{chunk-V26V2S3W.mjs.map → chunk-3O3N6X6D.mjs.map} +0 -0
  244. /package/dist/{chunk-UGMRJMFZ.mjs.map → chunk-BO5CU4ZM.mjs.map} +0 -0
  245. /package/dist/{chunk-R5MKQN6D.mjs.map → chunk-FBLSJQWK.mjs.map} +0 -0
  246. /package/dist/{chunk-JWANK42G.mjs.map → chunk-FUZ2JNTZ.mjs.map} +0 -0
  247. /package/dist/{chunk-DELCADNF.mjs.map → chunk-ODVKRIVN.mjs.map} +0 -0
  248. /package/dist/{chunk-OGNGPI3M.mjs.map → chunk-PL55YKT4.mjs.map} +0 -0
  249. /package/dist/{chunk-TDRA5EZI.mjs.map → chunk-PUREEN2J.mjs.map} +0 -0
  250. /package/dist/{chunk-SRWPHN2N.mjs.map → chunk-S64IYJ6Y.mjs.map} +0 -0
  251. /package/dist/{chunk-NJYNJLT7.mjs.map → chunk-SWFB3A3G.mjs.map} +0 -0
  252. /package/dist/{chunk-2ZZJTBTE.mjs.map → chunk-WJZ3IYET.mjs.map} +0 -0
  253. /package/dist/{displayFile.mjs.map → confirm.mjs.map} +0 -0
  254. /package/dist/{fileUploader.mjs.map → dialog.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/compound/UseForm/src/useHooks.ts","../src/components/compound/UseForm/src/_utils/resolver.ts","../src/components/compound/UseForm/src/FormRenderer/Layout.tsx","../src/components/compound/UseForm/src/FormRenderer/StepperSection.tsx","../src/components/compound/UseForm/src/store/FormContext.tsx","../src/components/compound/UseForm/src/store/methods.ts","../src/components/compound/UseForm/src/FormRenderer/RowRenderer.tsx","../src/components/compound/UseForm/src/Fields/TextField.tsx","../src/components/compound/UseForm/src/Fields/SelectField.tsx","../src/components/compound/UseForm/src/Fields/SliderField.tsx","../src/components/compound/UseForm/src/Fields/CheckField.tsx","../src/components/compound/UseForm/src/Fields/ToggleButtonField.tsx","../src/components/compound/UseForm/src/Fields/SwitchField.tsx","../src/components/compound/UseForm/src/Fields/CustomField.tsx","../src/components/compound/UseForm/src/Fields/TextArrayField.tsx","../src/components/compound/UseForm/src/Fields/NumberField.tsx","../src/components/compound/UseForm/src/FormRenderer/Navigation.tsx","../src/components/compound/UseForm/src/hooks/useRegisterFields.ts","../src/components/compound/UseForm/src/theme.ts","../src/components/compound/UseForm/src/FormModalRenderer.tsx","../src/components/compound/UseForm/src/FormTree.tsx","../src/components/compound/UseForm/src/UseForm.tsx"],"sourcesContent":["import { useForm, type UseFormReturn, type DefaultValues } from 'react-hook-form';\nimport { useEffect, useMemo, useRef } from 'react';\nimport type { FormTypeMap, InferFormDataType, StrictFormConfig } from './_utils';\nimport { collectFields, validateFormSchema, getDefaultValues } from './_utils/helpers';\nimport { createFormResolver } from './_utils/resolver';\n\nexport interface UseConfiguredFormProps<T extends FormTypeMap> {\n config: StrictFormConfig<T>;\n}\n\nexport interface ConfiguredFormReturn<T extends FormTypeMap> {\n methods: UseFormReturn<InferFormDataType<T>>;\n config: StrictFormConfig<T>;\n configError?: Error;\n}\n\n/** @deprecated Use ConfiguredFormReturn */\nexport type UseForm2Return<T extends FormTypeMap> = ConfiguredFormReturn<T>;\n\n/** @deprecated Use UseConfiguredFormProps */\nexport type UseForm2Props<T extends FormTypeMap> = UseConfiguredFormProps<T>;\n\nconst schemaSignature = <T extends FormTypeMap>(config: StrictFormConfig<T>): string => {\n const fields = collectFields(config);\n return JSON.stringify({\n mode: config.mode ?? 'onSubmit',\n defaults: config.defaultValues ?? null,\n fields: fields.map((field) => [field.name, field.type, field.defaultValue]),\n });\n};\n\nexport const useConfiguredForm = <T extends FormTypeMap>({\n config,\n}: UseConfiguredFormProps<T>): ConfiguredFormReturn<T> => {\n const { resolvedConfig, configError } = useMemo(() => {\n try {\n return {\n resolvedConfig: validateFormSchema(config),\n configError: undefined as Error | undefined,\n };\n } catch (error) {\n const configError = error instanceof Error ? error : new Error(String(error));\n console.error('[useConfiguredForm] invalid form schema', configError);\n return {\n resolvedConfig: { schema: [] } as StrictFormConfig<T>,\n configError,\n };\n }\n }, [config]);\n\n const defaultValues = useMemo(\n () => getDefaultValues(resolvedConfig, false),\n [resolvedConfig],\n );\n\n const resolver = useMemo(\n () => createFormResolver(resolvedConfig),\n [resolvedConfig],\n );\n\n const methods = useForm<InferFormDataType<T>>({\n defaultValues: defaultValues as DefaultValues<InferFormDataType<T>>,\n resolver,\n mode: resolvedConfig.mode ?? 'onSubmit',\n shouldUnregister: false,\n });\n\n const signature = useMemo(\n () => schemaSignature(resolvedConfig),\n [resolvedConfig],\n );\n const defaultValuesRef = useRef(defaultValues);\n defaultValuesRef.current = defaultValues;\n const isFirstMount = useRef(true);\n\n useEffect(() => {\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return;\n }\n methods.reset(defaultValuesRef.current as DefaultValues<InferFormDataType<T>>);\n }, [signature, methods]);\n\n return {\n methods,\n config: resolvedConfig,\n configError,\n };\n};\n\n/** @deprecated Use useConfiguredForm */\nexport const useForm2 = useConfiguredForm;\n","import type { FieldError, FieldErrors, Resolver } from 'react-hook-form';\nimport { FIELD_TYPEs } from './constants';\nimport { collectFields, isEmptyFormValue } from './helpers';\nimport type { FieldConfig, FormTypeMap, InferFormDataType, StrictFormConfig } from './types';\n\nconst toError = (message: string, type: string): FieldError => ({\n type,\n message,\n});\n\nconst runFieldValidate = async <T extends FormTypeMap>(\n field: FieldConfig<T>,\n value: unknown,\n values: InferFormDataType<T>,\n): Promise<string | true> => {\n if (field.type === FIELD_TYPEs.tel && typeof value === 'string' && value.trim() !== '') {\n const { isValidPhoneNumber } = await import('react-phone-number-input');\n if (!isValidPhoneNumber(value)) {\n return 'Invalid phone number';\n }\n }\n\n if (field.type === FIELD_TYPEs.fileUpload) {\n const maxFiles = field.slotProps?.maxFiles ?? 1;\n if (Array.isArray(value) && value.length > maxFiles) {\n return `Cannot exceed ${maxFiles} file${maxFiles > 1 ? 's' : ''}`;\n }\n }\n\n if (!field.validate) return true;\n const result = await field.validate(value as never, values);\n if (result === true) return true;\n if (typeof result === 'string' && result.length > 0) return result;\n return field.errorMsg || 'Invalid';\n};\n\nexport function createFormResolver<T extends FormTypeMap>(\n config: StrictFormConfig<T>,\n): Resolver<InferFormDataType<T>> {\n const fields = collectFields(config);\n const fieldByName = new Map(fields.map((field) => [String(field.name), field]));\n\n return async (values, _context, options) => {\n const names = options?.names;\n const nameList = names == null ? null : Array.from(names as Iterable<string>);\n const fieldsToCheck =\n nameList && nameList.length > 0\n ? nameList\n .map((name) => fieldByName.get(String(name)))\n .filter((field): field is FieldConfig<T> => field != null)\n : fields;\n\n const errors: FieldErrors<InferFormDataType<T>> = {};\n const valuesRecord = values as Record<string, unknown>;\n\n for (const field of fieldsToCheck) {\n const name = String(field.name);\n const value = valuesRecord[name];\n\n if (field.required && isEmptyFormValue(value)) {\n (errors as Record<string, FieldError>)[name] = toError(field.errorMsg || 'Required', 'required');\n continue;\n }\n\n if (isEmptyFormValue(value) && !field.validate) {\n continue;\n }\n\n const result = await runFieldValidate(field, value, values);\n if (result !== true) {\n (errors as Record<string, FieldError>)[name] = toError(result, 'validate');\n }\n }\n\n const hasErrors = Object.keys(errors).length > 0;\n return {\n values: hasErrors ? ({} as InferFormDataType<T>) : values,\n errors,\n };\n };\n}\n","import React from 'react';\nimport { FormProvider, FieldValues } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport StepperSection from './StepperSection';\nimport RowRenderer from './RowRenderer';\nimport Navigation from './Navigation';\nimport { useFormActionsContext, useFormMethodsContext, useFormStateContext } from '../store/FormContext';\n\n// types for multi-step\n\n\n// Using strict types\nimport { RowConfig, FormTypeMap, StrictFormConfig } from '../_utils';\nimport useRegisterFields from '../hooks/useRegisterFields';\nimport { useFormRootSx } from '../theme';\nimport { mergeSx } from '@/_utils/_func';\n\nexport interface FormRendererProps<T extends FormTypeMap> {\n /** methods may be passed directly or obtained from context */\n methods?: unknown;\n config: StrictFormConfig<T>;\n onSubmit: (data: FieldValues) => void;\n /** whether to render undo button */\n showUndo?: boolean;\n /** whether to render clear button */\n showClear?: boolean;\n children?: React.ReactNode; \n extraButtons?: React.ReactNode;\n}\n\n// Field and Row renderers are defined inside the generic component so they\n// can reference the concrete form value type `InferFormDataType<T>`.\n\nexport const FormRenderer = <T extends FormTypeMap>(\n props: FormRendererProps<T>\n): React.ReactElement => {\n const {\n methods: propMethods,\n config,\n onSubmit,\n showUndo = true,\n showClear = true,\n children,\n extraButtons,\n } = props;\n // consume shared store from higher-level provider\n const { steps, currentStep } = useFormStateContext<T>();\n const { setCurrentStep, handleStepChange, submit, undo, clear } = useFormActionsContext();\n const { useFormMethods: ctxMethods } = useFormMethodsContext<T>();\n const methods = (propMethods as typeof ctxMethods | undefined) ?? ctxMethods;\n // ensure all fields (including hidden ones) are registered on mount\n useRegisterFields(methods, config);\n\n const isMulti = steps.length > 1;\n const isLastStep = currentStep === steps.length - 1;\n\n const sortedSchema = React.useMemo(() => {\n const currentSchema = steps[currentStep]?.schema || [];\n const compare = (a: RowConfig<T>, b: RowConfig<T>) => {\n const an = Number(a.row);\n const bn = Number(b.row);\n const aIsNum = !Number.isNaN(an);\n const bIsNum = !Number.isNaN(bn);\n if (aIsNum && bIsNum) return an - bn;\n if (aIsNum) return -1;\n if (bIsNum) return 1;\n return String(a.row).localeCompare(String(b.row));\n };\n return [...currentSchema].slice().sort(compare);\n }, [steps, currentStep]);\n\n // navigation handlers\n const handleNext = async () => {\n if (isLastStep) {\n await submit(onSubmit);\n return;\n }\n await handleStepChange(currentStep + 1);\n };\n const handleBack = () => {\n if (currentStep > 0) setCurrentStep((s) => s - 1);\n };\n\n\n // wrap `submit` with RHF's handleSubmit so built-in validation is triggered\n const handleFormSubmit = methods.handleSubmit(async () => {\n // our custom submit already triggers all steps' fields\n await submit(onSubmit);\n });\n\n return (\n <FormProvider {...methods}>\n <Box sx={mergeSx(useFormRootSx, {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n overflow: \"hidden\",\n // Vertical pad only on the outer clip shell. Horizontal pad belongs\n // on the scroll body below so elevated field shadows can bleed into\n // padding before overflow clips (fixes left-clipped Autocomplete shadow).\n py: 1,\n })}>\n {isMulti && <StepperSection />}\n <Box sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n flex: 1,\n overflow: \"auto\",\n // Inside scrollport: room for soft elevated shadow on all sides.\n px: 2.5,\n py: 0.75,\n }}>\n <Box sx={{ flex: 1 }}>\n <form onSubmit={handleFormSubmit}>\n {sortedSchema.map((row, idx) => (\n <RowRenderer key={`${row.row}-${idx}`} row={row as RowConfig} />\n ))}\n {children}\n </form>\n </Box>\n </Box>\n <Navigation\n isMulti={isMulti}\n currentStep={currentStep}\n isLastStep={isLastStep}\n handleBack={handleBack}\n handleNext={handleNext}\n onSubmit={handleFormSubmit}\n undo={showUndo ? undo : undefined}\n clear={showClear ? clear : undefined}\n extraButtons={extraButtons}\n />\n </Box>\n </FormProvider>\n );\n};\n","import * as React from 'react';\nimport { StandardStepper } from '@/ele/Stepper';\nimport { useFormState } from 'react-hook-form';\nimport { useFormActionsContext, useFormMethodsContext, useFormStateContext } from '../store/FormContext';\nimport type { FormTypeMap, RowConfig } from '../_utils';\n\ninterface StepperSectionStep {\n title: React.ReactNode;\n icon?: React.ReactNode;\n error: boolean;\n}\n\nconst getNames = <T extends FormTypeMap>(schema: RowConfig<T>[]) => {\n const names: string[] = [];\n schema.forEach((r) => r.fields.forEach((f) => names.push(String(f.name))));\n return names;\n};\n\nconst StepperSection = <T extends FormTypeMap>() => {\n const { steps, currentStep } = useFormStateContext<T>();\n const { handleStepChange } = useFormActionsContext();\n const { useFormMethods: methods } = useFormMethodsContext<T>();\n const { errors } = useFormState({ control: methods.control });\n\n const stepData = React.useMemo<StepperSectionStep[]>(() => {\n const errorMap = errors as Record<string, unknown>;\n return steps.map((step, idx) => {\n const hasError = getNames(step.schema).some((name) => Boolean(errorMap[name]));\n return {\n title: step.title ?? `Step ${idx + 1}`,\n icon: step.icon ?? idx + 1,\n error: hasError,\n };\n });\n }, [steps, errors]);\n\n return (\n <StandardStepper\n activeStep={currentStep}\n onChange={handleStepChange}\n steps={stepData}\n />\n );\n};\n\nexport default StepperSection;\n","import React from 'react';\nimport type { FieldValues, UseFormReturn } from 'react-hook-form';\nimport type { StepConfig } from '../_utils/types';\nimport type { FormTypeMap, InferFormDataType, StrictFormConfig } from '../_utils';\nimport { createFormStoreMethods } from './methods';\n\nexport interface FormState {\n currentStep: number;\n steps: StepConfig<FormTypeMap>[];\n}\n\nexport interface FormActions {\n setCurrentStep: React.Dispatch<React.SetStateAction<number>>;\n handleStepChange: (destinationStep: number) => Promise<boolean>;\n submit: (onSubmit: (data: FieldValues) => void) => Promise<void>;\n // form-level helpers\n undo: () => void;\n clear: () => void;\n}\n\nexport interface FormMethods {\n useFormMethods: UseFormReturn<InferFormDataType<FormTypeMap>>;\n}\n\nexport type FormStateTyped<T extends FormTypeMap> = Omit<FormState, 'steps'> & {\n steps: StepConfig<T>[];\n};\n\nexport type FormMethodsTyped<T extends FormTypeMap> = Omit<FormMethods, 'useFormMethods'> & {\n useFormMethods: UseFormReturn<InferFormDataType<T>>;\n};\n\nconst FormStateContext = React.createContext<FormState | null>(null);\nconst FormActionsContext = React.createContext<FormActions | null>(null);\nconst FormMethodsContext = React.createContext<FormMethods | null>(null);\n\nexport const useFormStateContext = <T extends FormTypeMap>() => {\n const ctx = React.useContext(FormStateContext) as FormStateTyped<T> | null;\n if (!ctx) {\n throw new Error('useFormStateContext must be used within a FormContextProvider');\n }\n return ctx;\n};\n\nexport const useFormActionsContext = () => {\n const ctx = React.useContext(FormActionsContext);\n if (!ctx) {\n throw new Error('useFormActionsContext must be used within a FormContextProvider');\n }\n return ctx;\n};\n\nexport const useFormMethodsContext = <T extends FormTypeMap>() => {\n const ctx = React.useContext(FormMethodsContext) as FormMethodsTyped<T> | null;\n if (!ctx) {\n throw new Error('useFormMethodsContext must be used within a FormContextProvider');\n }\n return ctx;\n};\n\nexport const useFormContext = <T extends FormTypeMap>() => {\n const state = useFormStateContext<T>();\n const actions = useFormActionsContext();\n const methods = useFormMethodsContext<T>();\n return { ...state, ...actions, ...methods };\n};\n\ninterface ProviderProps<T extends FormTypeMap> {\n config: StrictFormConfig<T>;\n useFormMethods: UseFormReturn<InferFormDataType<T>>;\n children: React.ReactNode;\n}\n\nexport const FormContextProvider = <T extends FormTypeMap>({\n config,\n useFormMethods,\n children,\n}: ProviderProps<T>) => {\n const steps = React.useMemo(() => {\n if ('steps' in config && config.steps) {\n return config.steps;\n }\n if ('schema' in config && config.schema) {\n return [{ schema: config.schema }];\n }\n return [] as StepConfig<T>[];\n }, [config]);\n\n const [currentStep, setCurrentStep] = React.useState(0);\n const currentStepRef = React.useRef(currentStep);\n currentStepRef.current = currentStep;\n\n React.useEffect(() => {\n setCurrentStep(0);\n }, [steps]);\n\n const storeMethods = React.useMemo(\n () =>\n createFormStoreMethods<T>({\n methods: useFormMethods,\n config,\n steps,\n getCurrentStep: () => currentStepRef.current,\n setCurrentStep,\n }),\n [useFormMethods, config, steps],\n );\n\n const stateValue = React.useMemo<FormStateTyped<T>>(\n () => ({\n currentStep,\n steps,\n }),\n [currentStep, steps],\n );\n\n const actionsValue = React.useMemo<FormActions>(\n () => ({\n setCurrentStep,\n ...storeMethods,\n }),\n [setCurrentStep, storeMethods],\n );\n\n const methodsValue = React.useMemo<FormMethodsTyped<T>>(\n () => ({\n useFormMethods,\n }),\n [useFormMethods],\n );\n\n return (\n <FormStateContext.Provider value={stateValue as unknown as FormState}>\n <FormActionsContext.Provider value={actionsValue}>\n <FormMethodsContext.Provider value={methodsValue as unknown as FormMethods}>\n {children}\n </FormMethodsContext.Provider>\n </FormActionsContext.Provider>\n </FormStateContext.Provider>\n );\n};\n","import type { Dispatch, SetStateAction } from 'react';\nimport type { FieldValues, Path, UseFormReturn } from 'react-hook-form';\nimport type { FormTypeMap, InferFormDataType, RowConfig, StrictFormConfig } from '../_utils';\nimport type { StepConfig } from '../_utils/types';\nimport { getDefaultValues } from '../_utils/helpers';\n\ninterface CreateFormStoreMethodsArgs<T extends FormTypeMap> {\n methods: UseFormReturn<InferFormDataType<T>>;\n config: StrictFormConfig<T>;\n steps: StepConfig<T>[];\n getCurrentStep: () => number;\n setCurrentStep: Dispatch<SetStateAction<number>>;\n}\n\nconst getNames = <T extends FormTypeMap>(schema: RowConfig<T>[]) => {\n const names: string[] = [];\n schema.forEach((row) => row.fields.forEach((field) => names.push(String(field.name))));\n return names;\n};\n\nconst getFieldNamesInRange = <T extends FormTypeMap>(\n steps: StepConfig<T>[],\n fromStep: number,\n toStep: number,\n): Path<InferFormDataType<T>>[] => {\n const start = Math.min(fromStep, toStep);\n const end = Math.max(fromStep, toStep);\n\n const names = steps\n .slice(start, end + 1)\n .flatMap((step) => getNames(step.schema));\n\n return Array.from(new Set(names)) as Path<InferFormDataType<T>>[];\n};\n\nexport const createFormStoreMethods = <T extends FormTypeMap>({\n methods,\n config,\n steps,\n getCurrentStep,\n setCurrentStep,\n}: CreateFormStoreMethodsArgs<T>) => {\n const validateNames = async (names: string[]): Promise<boolean> => {\n if (names.length === 0) {\n return methods.trigger();\n }\n return methods.trigger(names as Path<InferFormDataType<T>>[]);\n };\n\n const handleStepChange = async (destinationStep: number) => {\n const currentStep = getCurrentStep();\n if (destinationStep === currentStep) return true;\n\n // moving backward should always be permitted; we don't run validation in that\n // case since the user is retreating to earlier steps and we don't want error\n // states to block navigation.\n if (destinationStep < currentStep) {\n setCurrentStep(destinationStep);\n return true;\n }\n\n // For forward navigation we **only** validate the fields that belong to the\n // current step and any earlier ones. We intentionally avoid checking fields\n // that are \"ahead\" of the user (including the destination step) – users\n // may jump several steps forward and we don't want missing future values to\n // block them. A full validation of every step happens on final submit.\n const namesToTrigger = getFieldNamesInRange(steps, 0, currentStep);\n const isValid = await validateNames(namesToTrigger);\n if (!isValid) return false;\n\n setCurrentStep(destinationStep);\n return true;\n };\n\n const undo = () => {\n methods.reset();\n };\n\n const clear = () => {\n // produce a completely empty value map for every field in the schema.\n const emptyValues = getDefaultValues(config, true) as Record<string, unknown>;\n\n // perform a reset but tell RHF **not** to replace its stored defaultValues.\n // otherwise the act of clearing would make the emptied values the new\n // defaults, which is confusing and breaks undo/restore semantics.\n methods.reset(emptyValues as InferFormDataType<T>, { keepDefaultValues: true });\n\n // trigger validation so the UI updates immediately\n methods.trigger();\n };\n\n const submit = async (onSubmit: (data: FieldValues) => void) => {\n const namesToTrigger = getFieldNamesInRange(steps, 0, Math.max(steps.length - 1, 0));\n const isValid = await validateNames(namesToTrigger);\n if (!isValid) return;\n await methods.handleSubmit(onSubmit)();\n };\n\n return {\n handleStepChange,\n submit,\n undo,\n clear,\n };\n};\n","import React, { Suspense } from 'react';\nimport { Box } from '@/ele/Box';\nimport type { FormTypeMap } from '../_utils';\nimport type { RowConfig, FieldConfig } from '../_utils/types';\nimport { FIELD_TYPEs } from '../_utils/constants';\n\n// Eager fields used by typical text/number/select forms.\nimport { TextField } from '../Fields/TextField';\nimport { SelectField } from '../Fields/SelectField';\nimport { SliderField } from '../Fields/SliderField';\nimport { CheckField } from '../Fields/CheckField';\nimport { ToggleButtonField } from '../Fields/ToggleButtonField';\nimport { SwitchField } from '../Fields/SwitchField';\nimport { CustomField } from '../Fields/CustomField';\nimport { TextArrayField } from '../Fields/TextArrayField';\nimport { NumberField } from '../Fields/NumberField';\n\ntype AnyFieldProps = { field: FieldConfig };\n\nconst DateField = React.lazy(() =>\n import('../Fields/DateField').then((m) => ({\n default: m.DateField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst DateTimeField = React.lazy(() =>\n import('../Fields/DateTimeField').then((m) => ({\n default: m.DateTimeField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst TimeField = React.lazy(() =>\n import('../Fields/TimeField').then((m) => ({\n default: m.TimeField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst DateRangeField = React.lazy(() =>\n import('../Fields/DateRangeField').then((m) => ({\n default: m.DateRangeField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst TelField = React.lazy(() =>\n import('../Fields/TelField').then((m) => ({\n default: m.TelField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst FileUploadField = React.lazy(() =>\n import('../Fields/FileUploadField').then((m) => ({\n default: m.FileUploadField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst AvatarField = React.lazy(() =>\n import('../Fields/AvatarField').then((m) => ({\n default: m.AvatarField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst JSONEditorField = React.lazy(() =>\n import('../Fields/JSONEditorField').then((m) => ({\n default: m.JSONEditorField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst AutocompleteField = React.lazy(() =>\n import('../Fields/AutocompleteField').then((m) => ({\n default: m.AutocompleteField as React.ComponentType<AnyFieldProps>,\n })),\n);\n\nconst lazyFieldFallback = <Box sx={{ minHeight: 40 }} />;\n\nconst LazyField = ({ children }: { children: React.ReactNode }) => (\n <Suspense fallback={lazyFieldFallback}>{children}</Suspense>\n);\n\ninterface FieldRendererProps<T extends FormTypeMap> {\n field: FieldConfig<T>;\n}\n\nconst FieldRenderer = <T extends FormTypeMap>({ field }: FieldRendererProps<T>) => {\n switch (field.type) {\n case FIELD_TYPEs.text:\n return <TextField field={field} />;\n case FIELD_TYPEs.select:\n return <SelectField field={field} />;\n case FIELD_TYPEs.slider:\n return <SliderField field={field} />;\n case FIELD_TYPEs.check:\n return <CheckField field={field} />;\n case FIELD_TYPEs.date:\n return (\n <LazyField>\n <DateField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.dateTime:\n return (\n <LazyField>\n <DateTimeField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.time:\n return (\n <LazyField>\n <TimeField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.dateRange:\n return (\n <LazyField>\n <DateRangeField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.toggleButton:\n return <ToggleButtonField field={field} />;\n case FIELD_TYPEs.autocomplete:\n return (\n <LazyField>\n <AutocompleteField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.switch:\n return <SwitchField field={field} />;\n case FIELD_TYPEs.number:\n return <NumberField field={field} />;\n case FIELD_TYPEs.json:\n return (\n <LazyField>\n <JSONEditorField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.tel:\n return (\n <LazyField>\n <TelField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.fileUpload:\n return (\n <LazyField>\n <FileUploadField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.avatar:\n return (\n <LazyField>\n <AvatarField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.textArray:\n return <TextArrayField field={field} />;\n case FIELD_TYPEs.custom:\n return <CustomField field={field} />;\n default:\n return <div>Unknown Field Type</div>;\n }\n};\n\ninterface RowRendererProps<T extends FormTypeMap> {\n row: RowConfig<T>;\n}\n\ninterface RowFieldProps<T extends FormTypeMap> {\n field: FieldConfig<T>;\n}\n\nconst RowFieldFrame = <T extends FormTypeMap>({\n field,\n hidden,\n}: RowFieldProps<T> & { hidden: boolean }) => {\n return (\n <Box\n sx={{\n flex: field.size?.width || 1,\n minWidth: field.size?.width || 'auto',\n overflow: 'visible',\n ...(hidden && { display: 'none' }),\n \"& > *\": {\n minWidth: 200,\n },\n }}\n >\n <FieldRenderer field={field} />\n </Box>\n );\n};\n\nconst RowFieldWithHide = <T extends FormTypeMap>({\n field,\n useHide,\n}: RowFieldProps<T> & { useHide: () => boolean }) => {\n const hidden = useHide();\n return <RowFieldFrame field={field} hidden={hidden} />;\n};\n\nconst RowField = <T extends FormTypeMap>({ field }: RowFieldProps<T>) => {\n if (field.useHide) {\n return <RowFieldWithHide field={field} useHide={field.useHide} />;\n }\n return <RowFieldFrame field={field} hidden={false} />;\n};\n\nconst RowRenderer = <T extends FormTypeMap>({ row }: RowRendererProps<T>) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: 2,\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n marginBottom: 1,\n pt: 1,\n ...row.sx,\n }}\n >\n {row.fields.map((field) => (\n <RowField key={String(field.name)} field={field} />\n ))}\n </Box>\n );\n};\n\nexport default RowRenderer;\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { TextField as MuiTextField } from '@/ele/Input/src/TextField';\nimport { Box } from '@/ele/Box';\nimport { FieldConfig, FormTypeMap, InferFormDataType, getHelperText, mergeFieldSx } from '../_utils';\nimport { mergeSx } from '@/_utils/_func';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport { getFieldExplanation } from '../_utils/helpers';\n\ninterface TextFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.text }>;\n}\n\nexport const TextField = <T extends FormTypeMap = FormTypeMap>({ field }: TextFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const { \n name, \n label, \n required, \n disabled, \n sx, \n size, \n slotProps, \n errorMsg,\n defaultValue\n } = field;\n\n const textSlotProps = slotProps as import('../_utils/slotProps').TextSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue} \n render={({ field: { onChange, value, ...restField }, fieldState: { error } }) => (\n <Box sx={mergeSx({\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n }, mergeFieldSx(size, sx))}>\n <MuiTextField\n {...restField}\n value={value ?? ''}\n onChange={(e) => {\n onChange(e);\n textSlotProps?.onChange?.(e);\n const newValue = (e?.target)?.value ?? '';\n field.onChange?.(newValue, getValues() as InferFormDataType<T>);\n }}\n label={label}\n required={required}\n disabled={disabled}\n error={!!error}\n helperText={getHelperText(error, errorMsg, field.helperText)}\n fullWidth\n size=\"small\"\n sx={{ flex: 1 }}\n multiline={textSlotProps?.multiline}\n rows={textSlotProps?.rows}\n placeholder={textSlotProps?.placeholder}\n type={'text'}\n\n slotProps={{\n htmlInput: {\n maxLength: textSlotProps?.maxLength,\n }\n }}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Select } from '@/ele/Select';\nimport { Box } from '@/ele/Box';\nimport { getHelperText } from '../_utils/helperText';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport { mergeSx } from '@/_utils/_func';\nimport { FieldConfig, FormTypeMap, InferFormDataType, GetDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport type { SelectSlotProps, SelectOption, UseOptionsHook } from '../_utils/slotProps';\n\ninterface SelectFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.select }>;\n}\n\nexport const SelectField = <T extends FormTypeMap = FormTypeMap>({ field }: SelectFieldProps<T>) => {\n const selectSlotProps = field.slotProps as SelectSlotProps | undefined;\n if (selectSlotProps?.useOptions) {\n return <SelectFieldWithOptions field={field} useOptions={selectSlotProps.useOptions} />;\n }\n return <SelectFieldView field={field} options={selectSlotProps?.options ?? []} />;\n};\n\nconst SelectFieldWithOptions = <T extends FormTypeMap>({\n field,\n useOptions,\n}: SelectFieldProps<T> & { useOptions: UseOptionsHook }) => {\n const { options = [] } = useOptions();\n return <SelectFieldView field={field} options={options} />;\n};\n\nconst SelectFieldView = <T extends FormTypeMap>({\n field,\n options,\n}: SelectFieldProps<T> & { options: SelectOption[] }) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value, ...restField }, fieldState: { error } }) => (\n <Box sx={mergeSx({\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n }, mergeFieldSx(size, sx))}>\n <Select\n {...restField}\n value={value ?? (slotProps?.multiple ? [] : '')}\n onChange={(e, child) => {\n const newValue = (e?.target)?.value as GetDataType<typeof FIELD_TYPEs.select> | null;\n onChange(newValue);\n slotProps?.onChange?.(e, child);\n field.onChange?.(newValue, getValues() as InferFormDataType<T>);\n }}\n label={label}\n required={required}\n disabled={disabled}\n error={!!error}\n helperText={getHelperText(error, errorMsg, field.helperText)}\n options={options}\n multiple={slotProps?.multiple}\n sx={{ flex: 1 }}\n slotProps={{\n formControl: {\n size: 'small',\n disabled: disabled,\n sx: {\n width: '100%',\n },\n },\n }}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Slider as MuiSlider } from '@/ele/Slider';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { Box } from '@/ele/Box';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils'; \nimport { SliderSlotProps } from '../_utils/slotProps';\nimport Explanation from './Explanation';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface SliderFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: 'slider-field' }>;\n}\n\nexport const SliderField = <T extends FormTypeMap = FormTypeMap>({ field }: SliderFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const { \n name, \n label, \n required, \n disabled, \n sx, \n size, \n slotProps, \n errorMsg,\n defaultValue\n } = field;\n\n const sliderSlotProps = slotProps as SliderSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value, ...restField }, fieldState: { error } }) => (\n <FormControl \n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n > \n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start', }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n <Box sx={{ px: 4,}}>\n <MuiSlider\n {...restField}\n value={typeof value === 'number' || Array.isArray(value) ? value : (sliderSlotProps?.min ?? 0)}\n onChange={(event, newValue, activeThumb) => {\n const normalized = Array.isArray(newValue) ? (newValue)[0] as number : (newValue as number);\n onChange(normalized);\n sliderSlotProps?.onChange?.(event, newValue, activeThumb);\n field.onChange?.(normalized, getValues() as InferFormDataType<T>);\n }}\n min={sliderSlotProps?.min}\n max={sliderSlotProps?.max}\n step={sliderSlotProps?.step}\n marks={sliderSlotProps?.marks}\n valueLabelDisplay={sliderSlotProps?.valueLabelDisplay || 'auto'}\n orientation={sliderSlotProps?.orientation}\n disableSwap={sliderSlotProps?.disableSwap}\n track={sliderSlotProps?.track}\n />\n </Box>\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </FormControl>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { CheckboxGroup } from '@/ele/Checkbox';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { getFieldExplanation } from '../_utils/helpers';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { CheckSlotProps } from '../_utils/slotProps';\n\ninterface CheckFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.check }>;\n}\n\ntype CheckUseOptions = NonNullable<CheckSlotProps['useOptions']>;\n\nexport const CheckField = <T extends FormTypeMap = FormTypeMap>({ field }: CheckFieldProps<T>) => {\n const checkSlot = field.slotProps as CheckSlotProps | undefined;\n if (checkSlot?.useOptions) {\n return <CheckFieldWithOptions field={field} useOptions={checkSlot.useOptions} />;\n }\n return <CheckFieldView field={field} options={checkSlot?.options ?? []} />;\n};\n\nconst CheckFieldWithOptions = <T extends FormTypeMap>({\n field,\n useOptions,\n}: CheckFieldProps<T> & { useOptions: CheckUseOptions }) => {\n const { options = [] } = useOptions();\n return <CheckFieldView field={field} options={options} />;\n};\n\nconst CheckFieldView = <T extends FormTypeMap>({\n field,\n options,\n}: CheckFieldProps<T> & { options: NonNullable<CheckSlotProps['options']> }) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n required,\n slotProps,\n label,\n defaultValue,\n } = field;\n\n const checkSlot = slotProps as CheckSlotProps | undefined;\n const helperText = checkSlot?.helperText;\n const explanation = getFieldExplanation(field);\n\n return (\n <Box>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: controllerField, fieldState: { error } }) => {\n const { onChange, value } = controllerField;\n const checkedIds = Array.isArray(value)\n ? (value as string[]).filter((id) => options.some((o) => o.id === id))\n : [];\n\n return (\n <CheckboxGroup\n {...checkSlot}\n slotProps={{\n ...(checkSlot?.slotProps ?? {}),\n group: {\n sx: { fontSize: '14px' },\n },\n }}\n options={options}\n title={label}\n titleSuffix={\n explanation ? (\n <Box sx={{ display: 'inline-flex' }}>\n <Explanation explanation={explanation} />\n </Box>\n ) : undefined\n }\n checkedIds={checkedIds}\n setCheckedIds={(next) => {\n const currentIds = checkedIds;\n const newIds = typeof next === 'function' ? next(currentIds) : next;\n const idsArray = (newIds as string[]) ?? [];\n onChange(idsArray);\n field.onChange?.(idsArray, getValues() as InferFormDataType<T>);\n }}\n error={!!error}\n helperText={helperText}\n errorText={error ? (typeof error.message === 'string' ? error.message : undefined) : undefined}\n required={required}\n />\n );\n }}\n />\n </Box>\n );\n};\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { ToggleButtonGroup } from '@/ele/ToggleButtonGroup';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { ToggleButtonSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface ToggleButtonFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.toggleButton }>;\n}\n\nexport const ToggleButtonField = <T extends FormTypeMap = FormTypeMap>({ field }: ToggleButtonFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const toggleSlot = slotProps as ToggleButtonSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value }, fieldState: { error } }) => {\n const helperTextNode = <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />;\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start', mb: 0.5 }}>\n <FormLabel component=\"legend\" sx={{ mr: 1 }}>{label}</FormLabel>\n <Box sx={{ display: 'inline-flex' }}>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n </Box>\n <Box sx={{ px: 4, py: 1 }}>\n <ToggleButtonGroup\n value={typeof value === 'string' ? value : (toggleSlot?.options?.[0]?.value ?? '')}\n onChange={(e: React.MouseEvent<HTMLElement>, newValue: string | null) => {\n // newValue may be null when deselected; pass null to callbacks\n onChange(newValue ?? null);\n field.onChange?.(newValue ?? null, getValues() as InferFormDataType<T>);\n }}\n options={toggleSlot?.options ?? []}\n color={toggleSlot?.color}\n />\n </Box>\n {helperTextNode}\n </FormControl>\n )}}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box, Stack } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { Switch as EleSwitch } from '@/ele/Switch';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { SwitchSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface SwitchFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.switch }>;\n}\n\nexport const SwitchField = <T extends FormTypeMap = FormTypeMap>({ field }: SwitchFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const switchSlot = slotProps as SwitchSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue ?? false}\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <FormLabel component=\"legend\" sx={{ fontSize: '12px', userSelect: 'none', color: 'var(--useform-label-color)' }}>{label}</FormLabel>\n <EleSwitch\n {...switchSlot}\n helperText={undefined}\n label={undefined}\n checked={!!value}\n onChange={(e, checked) => {\n onChange(checked);\n field.onChange?.(checked, getValues() as InferFormDataType<T>);\n switchSlot?.onChange?.(e, checked);\n }}\n />\n <Box sx={{ '& > span > button.MuiButtonBase-root.MuiIconButton-root': { m: 0, p: 0 } }}>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n </Stack>\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </FormControl>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form' ;\nimport { Box } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { CustomSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface CustomFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.custom }>;\n}\n\nexport const CustomField = <T extends FormTypeMap = FormTypeMap>({ field }: CustomFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const customSlot = slotProps as CustomSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value }, fieldState: { error } }) => {\n const handleChange = (v: unknown) => {\n onChange(v);\n // `Custom` fields accept `unknown` values by design; the outer\n // `FieldConfig` typing maps custom fields to `unknown` so we can\n // forward `v` directly without an `any` cast.\n field.onChange?.(v, getValues() as InferFormDataType<T>);\n };\n\n\n\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start' }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n\n <Box sx={{ py: 1 }}>\n {typeof customSlot?.render === 'function' ? (\n customSlot.render({ value, onChange: handleChange, error: !!error, helperText: customSlot?.helperText, getValues: () => getValues() })\n ) : (\n // fallback simple input\n <input\n value={value ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n style={{ width: '100%', padding: 8, boxSizing: 'border-box' }}\n />\n )}\n </Box>\n\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[String(customSlot?.helperText ?? '')]} />\n </FormControl>\n );\n }}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { IconButton, Button } from '@/ele/Button';\nimport { TextField as MuiTextField } from '@/ele/Input/src/TextField';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { DeleteIcon, AddIcon } from '@/icons/MuiIcon';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport type { TextArraySlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface TextArrayFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.textArray }>;\n}\n\nexport const TextArrayField = <T extends FormTypeMap = FormTypeMap>({ field }: TextArrayFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const taSlot = slotProps as TextArraySlotProps | undefined;\n const minItems = taSlot?.minItems ?? 0;\n const maxItems = taSlot?.maxItems ?? Infinity;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue ?? []}\n render={({ field: controllerField, fieldState: { error } }) => {\n const { onChange, value } = controllerField;\n const items = Array.isArray(value) ? value as string[] : [];\n\n const setItems = (next: string[]) => {\n onChange(next);\n // The `field` prop may be a union field type; assert it is the correct\n // shape at runtime before calling the optional `onChange` callback.\n if ((field)?.onChange) {\n (field).onChange(next, getValues() as InferFormDataType<T>);\n }\n };\n const addItem = () => {\n if (items.length >= maxItems) return;\n setItems([...items, '']);\n };\n const removeItem = (index:number) => {\n if (items.length <= minItems) return;\n const next = items.slice(0, index).concat(items.slice(index+1));\n setItems(next);\n };\n const updateItem = (index:number, v:string) => {\n const next = items.slice();\n next[index] = v;\n setItems(next);\n };\n\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(field.size, field.sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start' }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n\n <Box sx={{ py: 1, display: 'flex', flexDirection: 'column', gap: 1 }}>\n {items.map((it, idx) => (\n <Box key={idx} sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\n <MuiTextField\n size=\"small\"\n value={it}\n onChange={(e) => updateItem(idx, e.target.value)}\n placeholder={taSlot?.itemProps?.placeholder}\n sx={{ flex: 1 }}\n slotProps={{\n htmlInput: {\n maxLength: taSlot?.itemProps?.maxLength,\n }\n }}\n />\n <IconButton size=\"small\" onClick={() => removeItem(idx)} disabled={items.length <= minItems}>\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n\n <Box>\n <Button size=\"small\" startIcon={<AddIcon/>} onClick={addItem} disabled={items.length >= maxItems}>\n {taSlot?.addButtonLabel ?? 'Add'}\n </Button>\n </Box>\n </Box>\n\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </FormControl>\n );\n }}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { FormControl, InputAdornment } from '@/ele/Form';\nimport { TextField } from '@/ele/Input/src/TextField';\nimport { IconButton } from '@/ele/Button';\nimport { getHelperText } from '../_utils/helperText';\nimport {AddIcon, RemoveIcon} from '@/icons/MuiIcon';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { NumberSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport { mergeSx } from '@/_utils/_func';\n\ninterface NumberFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.number }>;\n}\n\nexport const NumberField = <T extends FormTypeMap = FormTypeMap>({ field }: NumberFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const { name, label, required, disabled, sx, size, slotProps, errorMsg, defaultValue } = field;\n\n const numSlot = slotProps as NumberSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue ?? numSlot?.min ?? 0}\n render={({ field: controllerField, fieldState: { error } }) => {\n const { onChange, value } = controllerField;\n\n // helper to update value with clamping\n const update = (next: number) => {\n onChange(next);\n field.onChange?.(next as number | null, getValues() as InferFormDataType<T>);\n };\n\n const handleMinus = () => {\n const s = numSlot?.step ?? 1;\n const cur = value ?? (numSlot?.min ?? 0);\n let next = cur - s;\n if (typeof numSlot?.min === 'number') next = Math.max(next, numSlot.min);\n update(next);\n };\n\n const handlePlus = () => {\n const s = numSlot?.step ?? 1;\n const cur = value ?? (numSlot?.min ?? 0);\n let next = cur + s;\n if (typeof numSlot?.max === 'number') next = Math.min(next, numSlot.max);\n update(next);\n };\n\n return (\n <FormControl disabled={disabled} required={required} error={!!error} fullWidth size=\"small\" \n sx={mergeSx(mergeFieldSx(size, sx), { maxWidth: '200px' })}>\n <Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1 }}>\n <TextField\n fullWidth\n size=\"small\"\n type=\"number\"\n label={label} required={required} error={!!error}\n helperText={getHelperText(error, errorMsg, field.helperText)}\n value={value ?? ''}\n // hide browser native spinner controls\n sx={{\n flex: 1,\n minWidth: 0,\n '& input[type=number]::-webkit-outer-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n '& input[type=number]::-webkit-inner-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n '& input[type=number]': {\n MozAppearance: 'textfield',\n WebkitAppearance: 'textfield',\n appearance: 'textfield',\n },\n }}\n onChange={(e) => {\n const s = (e.target as HTMLInputElement).value;\n const parsed = s === '' ? null : Number(s);\n onChange(parsed);\n field.onChange?.(parsed, getValues() as InferFormDataType<T>);\n }}\n slotProps={{\n ...numSlot?.slotProps,\n htmlInput: {\n ...(numSlot?.slotProps?.htmlInput ?? {}),\n min: numSlot?.min,\n max: numSlot?.max,\n step: numSlot?.step,\n style: { textAlign: 'center' },\n },\n input: {\n ...(numSlot?.slotProps?.input ?? {}),\n startAdornment: (\n <InputAdornment position=\"start\">\n <IconButton size=\"small\" onClick={handleMinus} disabled={typeof value === 'number' && typeof numSlot?.min === 'number' ? value <= numSlot.min : false}>\n <RemoveIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton size=\"small\" onClick={handlePlus} disabled={typeof value === 'number' && typeof numSlot?.max === 'number' ? value >= numSlot.max : false}>\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n \n }}\n disabled={disabled}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n\n </FormControl>\n );\n }}\n />\n );\n};\n","import React from 'react';\nimport { useFormContext, useFormState } from 'react-hook-form';\nimport { CheckIcon, NavigateBeforeIcon, NavigateNextIcon, RestoreIcon, DeleteIcon } from '@/icons/MuiIcon';\nimport { IconButton } from '@/ele/Button';\nimport { Box } from '@/ele/Box';\nimport { CircularProgress } from '@/ele/Progress';\n\ninterface NavigationProps {\n isMulti: boolean;\n currentStep: number;\n isLastStep: boolean;\n handleBack: () => void;\n handleNext: () => void;\n onSubmit?: () => void;\n undo?: () => void;\n clear?: () => void;\n extraButtons?: React.ReactNode;\n}\n\nconst Navigation = ({\n isMulti,\n currentStep,\n isLastStep,\n handleBack,\n handleNext,\n onSubmit,\n undo,\n clear,\n extraButtons,\n}: NavigationProps) => {\n const { control } = useFormContext();\n const { isSubmitting } = useFormState({ control });\n\n return (\n <Box\n sx={{\n padding: '4px 0',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 1,\n }}\n >\n {extraButtons}\n {undo && (\n <IconButton onClick={undo} size=\"small\" disabled={isSubmitting} aria-label=\"Undo\">\n <RestoreIcon fontSize=\"small\" />\n </IconButton>\n )}\n {clear && (\n <IconButton onClick={clear} size=\"small\" disabled={isSubmitting} aria-label=\"Clear\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n )}\n {isMulti ? (\n <>\n <IconButton onClick={handleBack} disabled={currentStep === 0 || isSubmitting} size=\"small\" aria-label=\"Back\">\n <NavigateBeforeIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleNext} size=\"small\" color={isLastStep ? 'success' : undefined} disabled={isSubmitting} aria-label={isLastStep ? 'Submit' : 'Next'}>\n {isLastStep\n ? (isSubmitting ? <CircularProgress size={18} color=\"inherit\" /> : <CheckIcon fontSize=\"small\" />)\n : <NavigateNextIcon fontSize=\"small\" />}\n </IconButton>\n </>\n ) : (\n <IconButton onClick={onSubmit} size=\"small\" color=\"success\" disabled={isSubmitting} aria-label=\"Submit\">\n {isSubmitting ? <CircularProgress size={18} color=\"inherit\" /> : <CheckIcon fontSize=\"small\" />}\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport default Navigation;\n","import { useEffect, useMemo } from 'react';\nimport type { UseFormReturn, Path, PathValue } from 'react-hook-form';\nimport type { StrictFormConfig, FormTypeMap, InferFormDataType, RowConfig } from '../_utils';\nimport { collectRows, getFormFieldsSignature } from '../_utils/helpers';\n\nexport function useRegisterFields<T extends FormTypeMap>(\n methods: UseFormReturn<InferFormDataType<T>>,\n config: StrictFormConfig<T>\n) {\n const signature = useMemo(() => getFormFieldsSignature(config), [config]);\n\n useEffect(() => {\n const rows: RowConfig<T>[] = collectRows(config);\n\n rows.forEach((row) => {\n row.fields.forEach((field) => {\n const name = field.name as Path<InferFormDataType<T>>;\n\n methods.register(name, {\n shouldUnregister: false,\n });\n\n if (field.defaultValue !== undefined) {\n const alreadyProvided =\n config.defaultValues && Object.prototype.hasOwnProperty.call(config.defaultValues, name as string);\n if (!alreadyProvided) {\n methods.setValue(name, field.defaultValue as unknown as PathValue<InferFormDataType<T>, Path<InferFormDataType<T>>>, { shouldDirty: false });\n }\n } else {\n const current = methods.getValues(name as Path<InferFormDataType<T>>);\n if (current === undefined) {\n methods.setValue(name, null as unknown as PathValue<InferFormDataType<T>, Path<InferFormDataType<T>>>, { shouldDirty: false });\n }\n }\n });\n });\n // Re-register when the field set actually changes, not when `config` is a new object.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `signature` is the config identity that matters\n }, [methods, signature]);\n}\n\nexport default useRegisterFields;\n","import type { SxProps, Theme } from '@mui/material/styles';\n\n/**\n * Root-level CSS variable aliases for the UseForm compound.\n * Spread on container elements — children consume via `var(--*)`.\n */\nexport const useFormRootSx: SxProps<Theme> = {\n '--useform-error': 'var(--mui-palette-error-main)',\n '--useform-error-hover': 'var(--mui-palette-error-dark)',\n '--useform-label-color': 'var(--mui-palette-text-grey-1)',\n '--useform-warning': 'var(--mui-palette-warning-main)',\n};\n","import React from 'react';\nimport { FieldValues } from 'react-hook-form';\nimport { CloseIcon } from '@/icons/MuiIcon';\n\nimport { MuiModal } from '@/ele/Modal';\nimport { IconButton } from '@/ele/Button';\nimport { Box } from '@/ele/Box';\n\nimport type { ConfiguredFormReturn } from './useHooks';\nimport { FormTypeMap, StrictFormConfig } from './_utils';\nimport { FormTree, type FormLiveProps } from './FormTree';\nimport { useFormRootSx } from './theme';\n\nexport interface FormModalRendererProps<T extends FormTypeMap> {\n openProps: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n title: string;\n methods: ConfiguredFormReturn<T>['methods'];\n config: StrictFormConfig<T>;\n onSubmit: (data: FieldValues) => void;\n extraButtons?: React.ReactNode;\n children?: React.ReactNode;\n maxWidth?: string | number;\n closeOnBackdropClick?: boolean;\n showCloseButton?: boolean;\n showUndo?: boolean;\n showClear?: boolean;\n slotProps?:{\n modal?:Partial<React.ComponentProps<typeof MuiModal>>\n }\n}\n\nexport function FormModalRenderer<T extends FormTypeMap>(p:FormModalRendererProps<T>){\n const {openProps,\n title,\n methods,\n config,\n onSubmit,\n extraButtons,\n children,\n maxWidth = '600px',\n closeOnBackdropClick = true,\n showCloseButton = true,\n showUndo = true,\n showClear = true,\n slotProps,} = p\n const [, setOpen] = openProps;\n\n const livePropsRef = React.useRef<FormLiveProps<T>>({ onSubmit, extraButtons, children });\n livePropsRef.current = { onSubmit, extraButtons, children };\n\n const handleClose = (event: object, reason: \"backdropClick\" | \"escapeKeyDown\") => {\n if (reason === 'backdropClick' && !closeOnBackdropClick) return;\n setOpen(false);\n };\n\n return (\n <MuiModal \n openProps={openProps} \n title={title}\n maxWidth={maxWidth}\n onClose={handleClose as unknown as () => void}\n closeButton={showCloseButton ? (\n <Box sx={useFormRootSx}>\n <IconButton onClick={() => setOpen(false)} sx={{\n backgroundColor: 'transparent',\n color: 'var(--useform-error)',\n '&:hover': {\n color: 'var(--useform-error-hover)',\n borderColor: 'transparent',\n },\n }}>\n <CloseIcon sx={{fontSize:16}}/>\n </IconButton>\n </Box>\n ) : null}\n {...slotProps?.modal}\n >\n <FormTree\n methods={methods}\n config={config}\n livePropsRef={livePropsRef}\n showUndo={showUndo}\n showClear={showClear}\n />\n </MuiModal>\n );\n};\n","import React from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport type { ConfiguredFormReturn } from './useHooks';\nimport { FormRenderer } from './FormRenderer/Layout';\nimport type { FormTypeMap, StrictFormConfig } from './_utils';\nimport { FormContextProvider } from './store/FormContext';\n\nexport type FormLiveProps<T extends FormTypeMap = FormTypeMap> = {\n onSubmit: (data: FieldValues) => void;\n extraButtons?: React.ReactNode | ((methods: ConfiguredFormReturn<T>['methods']) => React.ReactNode);\n children?: React.ReactNode;\n};\n\nexport type FormTreeProps<T extends FormTypeMap = FormTypeMap> = {\n methods: ConfiguredFormReturn<T>['methods'];\n config: StrictFormConfig<T>;\n livePropsRef: React.MutableRefObject<FormLiveProps<T>>;\n showUndo?: boolean;\n showClear?: boolean;\n};\n\n/**\n * Keeps the field tree mounted across `useForm` root re-renders.\n * Callbacks and extra buttons are read from `livePropsRef` so parent identity\n * changes do not rebuild JsonEditor, date pickers, or file upload.\n */\nfunction FormTreeInner<T extends FormTypeMap>({\n methods,\n config,\n livePropsRef,\n showUndo = true,\n showClear = true,\n}: FormTreeProps<T>) {\n const extraButtons = livePropsRef.current.extraButtons;\n const extraButtonsElement =\n typeof extraButtons === 'function' ? extraButtons(methods) : extraButtons;\n\n const onSubmit = React.useCallback((data: FieldValues) => {\n livePropsRef.current.onSubmit(data);\n }, [livePropsRef]);\n\n return (\n <FormContextProvider config={config} useFormMethods={methods}>\n <FormRenderer\n methods={methods}\n config={config}\n onSubmit={onSubmit}\n extraButtons={extraButtonsElement}\n showUndo={showUndo}\n showClear={showClear}\n >\n {livePropsRef.current.children}\n </FormRenderer>\n </FormContextProvider>\n );\n}\n\nfunction formTreePropsAreEqual(prev: FormTreeProps, next: FormTreeProps) {\n return (\n prev.methods === next.methods &&\n prev.config === next.config &&\n prev.livePropsRef === next.livePropsRef &&\n (prev.showUndo ?? true) === (next.showUndo ?? true) &&\n (prev.showClear ?? true) === (next.showClear ?? true)\n )\n}\n\nconst FormTreeMemo = React.memo(FormTreeInner, formTreePropsAreEqual) as typeof FormTreeInner\n\nexport const FormTree = FormTreeMemo;\n","import React from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { useConfiguredForm, type ConfiguredFormReturn } from './useHooks';\nimport { FormTree, type FormLiveProps } from './FormTree';\nimport type { FormTypeMap, StrictFormConfig } from './_utils';\n\nexport type UseFormProps<T extends FormTypeMap> = {\n config: StrictFormConfig<T>;\n onSubmit: (data: FieldValues) => void;\n /** When true the undo button is shown (default: true) */\n showUndo?: boolean;\n /** When true the clear button is shown (default: true) */\n showClear?: boolean;\n /**\n * Can be a React node or a function that receives the `methods` and returns nodes.\n * Example: extraButtons={(methods) => <MyButtons methods={methods} />}\n */\n extraButtons?: React.ReactNode | ((methods: ConfiguredFormReturn<T>['methods']) => React.ReactNode);\n};\n\nexport function UseForm<T extends FormTypeMap>({\n config,\n onSubmit,\n showUndo = true,\n showClear = true,\n extraButtons,\n}: UseFormProps<T>) {\n const { methods, config: resolvedConfig } = useConfiguredForm({ config });\n const livePropsRef = React.useRef<FormLiveProps<T>>({ onSubmit, extraButtons });\n livePropsRef.current = { onSubmit, extraButtons };\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <FormTree\n methods={methods}\n config={resolvedConfig}\n livePropsRef={livePropsRef}\n showUndo={showUndo}\n showClear={showClear}\n />\n </LocalizationProvider>\n );\n}\n"],"mappings":"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","names":["configError","React","React","jsx","getNames","React","jsx","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","useFormContext","default","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","jsx","React","default","useFormContext","useFormState","jsx","jsxs","useFormContext","useFormState","default","useEffect","useMemo","useMemo","useEffect","jsx","jsxs","React","default","React","React","jsx","React","jsx","React","default","React","jsx","React"]}