'use client'; import dynamic from 'next/dynamic'; import type { Control, FieldValues } from 'react-hook-form'; // Lazy-load @hookform/devtools only when actually rendered. The // `process.env.NODE_ENV` guard below ensures we never hit this path in // production, so Next.js' code splitter keeps the devtools chunk out of // the prod bundle entirely. const DevTool = dynamic(() => import('@hookform/devtools').then((m) => ({ default: m.DevTool })), { ssr: false, }); /** * Floating react-hook-form state inspector. Shows live values, errors, * touched/dirty state. Rendered only in development. * * Usage in any form component: * * const form = useForm({ resolver: zodResolver(schema) }); * ... *
* * {fields} * */ export function FormDevtool({ control }: { control: Control }) { if (process.env.NODE_ENV !== 'development') return null; // Cast: @hookform/devtools types Control as the v6 shape; ours is v7+. // eslint-disable-next-line @typescript-eslint/no-explicit-any return ; }