import { Form, FormControl, FormField, FormItem, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { zodResolver } from "@hookform/resolvers/zod"; import React, { useCallback } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; type TextEntryProps = { defaultValue?: string; placeholder?: string; allowEmpty?: boolean; onSave: (text: string) => void; children?: React.ReactNode; }; export default function TextEntry({ defaultValue = "", placeholder, allowEmpty = false, onSave, children, }: TextEntryProps) { const formSchema = z.object({ text: allowEmpty ? z.string().optional() : z.string().min(1, "Field is required"), }); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { text: defaultValue }, }); const onSubmit = useCallback( (data: z.infer) => { onSave(data.text || ""); }, [onSave], ); return (
( )} /> {children} ); }