{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-formik",
  "title": "UseFormik",
  "description": "Custom wrapper for Formik.",
  "files": [
    {
      "path": "registry/hooks/use-formik.tsx",
      "content": "'use client';\n\nimport { useCallback, useEffect } from 'react';\n\nimport { FormikConfig, FormikHelpers, FormikValues, useFormik } from 'formik';\n\n/**\n * Extended Formik return type with a simplified onSubmit handler.\n */\nexport type UseFormikReturn<T extends FormikValues> = ReturnType<\n  typeof useFormik<T>\n> & {\n  /**\n   * Returns a memoized submit handler that wraps Formik's handleSubmit.\n   *\n   * @param handler Function called when the form is submitted.\n   */\n  onSubmit: (\n    handler: (\n      values: T,\n      formikHelpers: FormikHelpers<T>,\n    ) => void | Promise<void>,\n  ) => (e?: React.FormEvent<HTMLFormElement>) => void;\n};\n\n/**\n * Custom hook wrapping Formik's useFormik, providing a simplified onSubmit handler\n * and optional debug logging of form state changes.\n *\n * @param config Formik configuration options.\n * @returns Form methods and a memoized onSubmit helper.\n */\nexport function useFormikHook<T extends FormikValues = FormikValues>(\n  config: FormikConfig<T>,\n): UseFormikReturn<T> {\n  const formik = useFormik<T>(config);\n\n  const handleSubmit = useCallback(\n    (\n      handler: (\n        values: T,\n        formikHelpers: FormikHelpers<T>,\n      ) => void | Promise<void>,\n    ) => {\n      return (e?: React.FormEvent<HTMLFormElement>) => {\n        e?.preventDefault();\n        handler(formik.values, formik);\n      };\n    },\n    [formik],\n  );\n\n  // Debug: Log form values and errors in development mode\n  useEffect(() => {\n    if (process.env.NODE_ENV === 'development') {\n      console.debug('[useFormikHook] values:', formik.values);\n      console.debug('[useFormikHook] errors:', formik.errors);\n    }\n  }, [formik.values, formik.errors]);\n\n  return { ...formik, onSubmit: handleSubmit };\n}\n",
      "type": "registry:hook",
      "target": "hooks/guarahooks/use-formik.tsx"
    }
  ],
  "categories": [
    "forms"
  ],
  "type": "registry:hook"
}