{ "name": "editable-form-demo", "type": "registry:example", "dependencies": [ "react-hook-form", "@hookform/resolvers", "zod", "sonner" ], "registryDependencies": [ "editable", "form" ], "files": [ { "path": "examples/editable-form-demo.tsx", "type": "registry:example", "content": "\"use client\";\n\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport * as React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport * as z from \"zod\";\nimport { Button } from \"@/registry/bases/base/ui/button\";\nimport {\n Editable,\n EditableArea,\n EditableCancel,\n EditableInput,\n EditableLabel,\n EditablePreview,\n EditableSubmit,\n EditableToolbar,\n EditableTrigger,\n} from \"@/registry/bases/base/ui/editable\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/registry/bases/base/ui/form\";\n\nconst formSchema = z.object({\n name: z\n .string()\n .min(2, \"Name must be at least 2 characters\")\n .max(50, \"Name must be less than 50 characters\"),\n title: z\n .string()\n .min(3, \"Title must be at least 3 characters\")\n .max(100, \"Title must be less than 100 characters\"),\n});\n\ntype FormSchema = z.infer;\n\nexport default function EditableFormDemo() {\n const form = useForm({\n resolver: zodResolver(formSchema),\n defaultValues: {\n name: \"Rodney Mullen\",\n title: \"Skateboarder\",\n },\n });\n\n const onSubmit = React.useCallback((input: FormSchema) => {\n toast.success(\n
{JSON.stringify(input, null, 2)}
,\n );\n }, []);\n\n return (\n
\n \n (\n \n \n \n Name\n
\n \n \n \n \n \n }\n >\n Edit\n \n
\n \n }>\n Save\n \n \n }\n >\n Cancel\n \n \n \n \n
\n
\n )}\n />\n (\n \n \n \n Title\n
\n \n \n \n \n \n }\n >\n Edit\n \n
\n \n }>\n Save\n \n \n }\n >\n Cancel\n \n \n \n \n
\n
\n )}\n />\n
\n form.reset()}\n >\n Reset\n \n \n
\n \n \n );\n}\n", "target": "" } ] }