import { Slot } from "@radix-ui/react-slot"; import * as React from "react"; import { Label } from "@/components/ui/label"; import { cn } from "@/presentation/utils"; import { createFormHook, createFormHookContexts, useStore, } from "@tanstack/react-form"; const { fieldContext, formContext, useFieldContext: useFormFieldContext, useFormContext, } = createFormHookContexts(); const { useAppForm, withForm } = createFormHook({ fieldContext, formContext, fieldComponents: { FormLabel, FormControl, FormDescription, FormMessage, FormItem, }, formComponents: {}, }); type FormItemContextValue = { id: string; }; const FormItemContext = React.createContext( {} as FormItemContextValue ); function FormItem({ className, ...props }: React.ComponentProps<"div">) { const id = React.useId(); return (
); } const useFieldContext = () => { const { id } = React.useContext(FormItemContext); const { name, store, ...fieldContext } = useFormFieldContext(); const errors = useStore(store, (state) => state.meta.errors); if (!fieldContext) { throw new Error("useFieldContext should be used within "); } return { id, name, formItemId: `${id}-form-item`, formDescriptionId: `${id}-form-item-description`, formMessageId: `${id}-form-item-message`, errors, store, ...fieldContext, }; }; function FormLabel({ className, ...props }: React.ComponentProps) { const { formItemId, errors } = useFieldContext(); return (